Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM7S256 при запуске программы из flash вылетает в Prefetch_handler
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Tcom
Здравствуйте, из-за чего может такое быть?
AT91SAM7S256 при запуске программы из flash вылетает в Prefetch_handler, при отладке из рам все нормально.
IAR 5.30.
Спасибо.
Сергей Борщ
Например, неверно установлено поле FWS в регистре MC_FMR.
Tcom
Сейчас проверю и при отладке из рам тоже туда же уходит.

Поле FWS в регистре MC_FMR установлено в 0

Вылетает только тогда когда включаю прерывание, странно то что раньше все работало..
aaarrr
Цитата(Tcom @ Feb 15 2010, 23:10) *
Сейчас проверю и при отладке из рам тоже туда же уходит.

Смотрите статусы Memory Controller'а (MC_ASR, MC_AASR) и регистры ядра.
Но с очень большой вероятностью у вас просто неправильно записан адрес в AIC.

Цитата(Tcom @ Feb 15 2010, 23:10) *
Поле FWS в регистре MC_FMR установлено в 0

Если частота больше 30МГц, там должно быть минимум 1.
Tcom
Код
void clock_init(void)
{
    unsigned int dummy;
    AT91C_BASE_AIC->AIC_IDCR = 1 << AT91C_ID_TC0;
    AT91C_BASE_TC0->TC_IDR = AT91C_TC_CPCS;
    AT91C_BASE_PMC->PMC_PCER = ( 1 <<  AT91C_ID_TC0 );
    AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;
    AT91C_BASE_TC0->TC_IDR = 0xFFFFFFFF;
    dummy = AT91C_BASE_TC0->TC_SR;
    dummy = dummy;
    AT91C_BASE_TC0->TC_CMR = 0x01;
    AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN;
    AT91C_BASE_AIC->AIC_IDCR =  0x1 << AT91C_ID_TC0;
BP    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned int) timer0_c_irq_handler;                      
    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 1;
    AT91C_BASE_AIC->AIC_ICCR =  0x1 << AT91C_ID_TC0;
    AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;  //  IRQ enable CPC
    AT91C_BASE_AIC->AIC_IECR = 0x1 << AT91C_ID_TC0;
    AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG;
}


После остановки на брек поинте жму GO программа выполняется правильно и все работает, бп убираю все Prefetch_handler....
У меня 3 прерывания, так на всех если бп ставить то работает после GO.
Это уже при выполнении из RAM.

При отладке в FLASH Unable to halt ARM core....

Может с железом или процом что-то...

/* Branch to main() */
LDR r0, =?main
MOV lr, pc
BX r0
На переходе в маин по BX r0 конец фильма все рушится.
aaarrr
Может, частоту процессора задрали случайно?
Tcom
Железо, пропаял процессор, в раме стало все работать, с флешем сейчас разбираюсь.
Скорее всего цепи PLL, гуляла частота...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.