ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
680640 Топик полностью
il-2 (14.06.2016 09:57, просмотров: 208) ответил Гудвин на Хе-хе. Расслабил нас cortex и Keil, привыкли, панимашь, что все гладко и красиво :) Сегодня наткнулся на hard fault по причине выравнивания U32. В FatFS при размешении еe структур в глобальных переменных. Так и не нашел, как эту бяку вылечить.
Там в ffconf.h есть опция _WORD_ACCESS. Если она задействована, то FatFS копирует блоки памяти по sizeof(int) за раз. Из за нее, в частности Cortex-M0 может падать в HardFault  // ff.c static void mem_cpy (void* dst, const void* src, UINT cnt) { BYTE *d = (BYTE*)dst; const BYTE *s = (const BYTE*)src; #if _WORD_ACCESS == 1 while (cnt >= sizeof (int)) { *(int*)d = *(int*)s; d += sizeof (int); s += sizeof (int); cnt -= sizeof (int); } #endif while (cnt--) *d++ = *s++; }