Hello All, I have a problem in jumping from internal flash to execute another program that started from internal RAM. I use an external RAM for the HEAP and RW as shown in the scatter. MCU is LPC1788 with 32 MByte of external RAM.
LR_IROM1 0x10000000 { ; load region size_region ;ER_IROM1 0x00000000 0x00080000 { ; load address = execution address ; *.o (RESET, +First) ; *(InRoot$$Sections) ; .ANY (+RO) ;} ER_IROM1 0x10000000 0xF7D0 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } IRAM_STACK 0x1000F7D0 0x800 { ; RW data startup_LPC177x_8x.o (STACK) } IRAM_HEAP 0xA0000000 0x40000 { ; RW data startup_LPC177x_8x.o (HEAP) } RW_RAM1 0xA0040000 UNINIT 0xA2000000 { ; RW data .ANY (+RW +ZI) }
each time the MCU goes to the 0x00000000 and wait for a command to fill the internal RAM at 0x10000000 and run the second program.
As shown in the picture, all configuration is correct, the RAM is occupied correctly. But the boot_jump would not work and the second program can not run from the RAM!!! Should i do something when i jump to the second prgoram at the start of the internal RAM? the architecture is cortex-M3 and there is no need to change MEMMAP! Am i right?
Best Regards, Mostafa
What interrupts do you enable? SysTick? SDIO, DMA, USART?
The new code has to be ready to immediately deal with these, better to turn them off for a clean hand-off. Would also have a Hard Fault Handler, and USART, set up and ready to output diagnostic data