AnsweredAssumed Answered

problem with executing new firmware through bootloader

Question asked by Ali Nikfarjam on Aug 26, 2016
Latest reply on Aug 28, 2016 by Ali Nikfarjam

hi everybody,

i am designing an ethernet bootloader for LPC1768 keil. so far i wrote a code that recieve new firmware over TCP\Ip and store it in flash memory using IAP, then by setting new sp and pc jump to the address of new firmware.

i tested a simple blinky example which i wrote myself with using this code to jump and it works,

 

void execute_user_code(void)

{

   void (*user_code_entry)(void);
    unsigned *p; 

    __disable_irq();
    SCB->VTOR = (IMG_START_SECTOR & 0x1FFFFF80); 
    p = (unsigned *)(IMG_START_SECTOR+4 );
    user_code_entry = (void (*)()) *p;
    user_code_entry();
}

 

i tested sample blinky from keil ,it didn't work and i just enabled interrupt before jumping ( __enable_irq(); ) then it worked.

but for any other little bigger firmwares ,after jumping and executing , program hangs. i looked at the memory of address, which programms hangs on it and most of them are same ( its somthing like EF E7 E7 E7 EF E7 ... )

 

can anybody tell me please what can be a problem?

 

thank you all

Outcomes