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

 
 
> помогите с запуском Ethernet secondary ISP bootloader, LPC1768
politen
сообщение Sep 24 2010, 09:03
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 1-09-10
Пользователь №: 59 223



читаю AN10744 Ethernet secondary ISP bootloader Rev. 01 — 3 September 2008
описан процесс для серии LPC2000
в комплект поставки FlashMagic есть пример для серии LPC1700
подправил пример (в основном ссылки на хидер LPC17xx.h и добавил префикс LPC_ для системных переменных)
После компиляции и загрузки на MCB1700 все светодиоды горят. В дебагере видно, что программа уходит в бесконечный цикл
Код
HardFault_Handler\
                PROC
                EXPORT  HardFault_Handler         [WEAK]
                B       .
                ENDP


уходит в цикл из процедуры
Код
unsigned user_code_present(void)
{    
    param_table[IAP_CMD_CODE] = BLANK_CHECK_SECTOR;
    param_table[IAP_PARAM_0] = USER_START_SECTOR;
    param_table[IAP_PARAM_1] = USER_START_SECTOR;
    iap_entry(param_table,result_table);
    if( result_table[IAP_STAT_CODE] == CMD_SUCCESS )
    {
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

причем пошаговый режим F11 в проверку условия даже не заходит, т.е. после строки с if(..) после следующего нажатия F11 курсор исполнения программы прыгает на завершающую скобку функции user_code_present и потом на бесконечный цикл (см. выше)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
politen
сообщение Sep 24 2010, 12:14
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 1-09-10
Пользователь №: 59 223



Interrupt Program Status Register содержит 3 = Hard fault

смущает определение переменных
Код
unsigned param_table[NO_OF_IAP_PARAMS];
unsigned result_table[NO_OF_IAP_PARAMS];

и
Код
void iap_entry(unsigned param_tab[],unsigned result_tab[])
{
    void (*iap)(unsigned [],unsigned []);

    iap = (void (*)(unsigned [],unsigned []))IAP_ADDRESS;
    iap(param_tab,result_tab);
}


кроме как unsigned нет указания типа.

при выходе из функции user_code_present() в дизассемблере идет
Код
0x00000AF8 BD10      POP      {r4,pc}


в окне CallStack функция user_code_present() висит

так вот после вышеуказанного POP программа переходит по адресу 0 и после первого же шага вылетает с хард фаулт.

Нарушение стека?
подскажите, как отследить/предотвратить его нарушение?
Go to the top of the page
 
+Quote Post



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

 


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


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