Всем доброго времени суток!
Проблема в следующем:
Сделал проектик под Кейлом v3.50, в котором происходит заполнение массива из 256 байт (от 0x00 до 0xFF), а затем запись его в страницу внутренней флэш камня. Брал пример с этого форума, сделанный в IAR, переделал его под кейл...наступил на грабли...
после записи страницы
for (i = 0; i < EFC_PAGE_SIZE_UINT; i++) *(pflash + i ) = *(pbuf + i);
идут две волшебные строчки:
Строчка1 AT91C_BASE_MC->MC_FCR = (0x5A << 24) | (page << 8 ) |AT91C_MC_FCMD_START_PROG;
Строчка 2 while (!(AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY));
Так вот, если в отладке ставлю брекпоинт на строчке 2, то страница пишется, а после запуска Run программа нормально выполняется. Если же убираю этот брекпоинт, то выполнение строчки 2 не происходит, и программа вываливается в DAbt_Handler. Без эмулятора, похоже, программа также зависает в этом же месте. Эмулятор от Segger, устройство - пока на 7X-EK
Кто нить ловил такой глюк?
Заране благодарен
|