реклама на сайте
подробности

 
 
> bootloader, возникает исключительная ситуация
dimka76
сообщение Jul 21 2009, 08:37
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Пишу bootloader.
Контроллер AT91SAM7S64.
Компилятор IAR.
Вот код самой процедуры самопрограммирования

Код
void flash_init (void)
{
    *AT91C_MC_FMR = ((AT91C_MC_FMCN)&(72 <<16)) | AT91C_MC_FWS_1FWS;
}


void flash_write(unsigned int page, unsigned int* flash_buf)
{
    unsigned int* flash;
    unsigned int i;

        *AT91C_MC_FCR = (0x5A<<24) | (page<<8 & AT91C_MC_PAGEN) | AT91C_MC_FCMD_UNLOCK;    //Unlock Region
        while((*AT91C_MC_FSR & AT91C_MC_FRDY) != AT91C_MC_FRDY );

    flash = (unsigned int *) 0x00100000 + 4*page*FLASH_PAGE_SIZE_WORDS;
    
    for(i=0; i < FLASH_PAGE_SIZE_WORDS; i++) flash[i] = flash_buf[i];
    __disable_interrupt();
    *AT91C_MC_FCR = (0x5A<<24) | (page<<8 & AT91C_MC_PAGEN) | AT91C_MC_FCMD_START_PROG; // | (1 << 8); //0x5A000001; //
    while((*AT91C_MC_FSR & AT91C_MC_FRDY) == 0);
        while((*AT91C_MC_FSR & AT91C_MC_FRDY) != AT91C_MC_FRDY );
        __enable_interrupt();
}


Где-то внутри функции flash_write(...) вылетает в Prefetch Abort.
Точное место определить не могу, т.е. при использовании JTAG и прохождении программы по шагам все работает нормально.


Подскажите пожалуйста в чем может быть причина.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016