HI,
通过loader启动的方式有一些进展,
1. main app以qspi flash启动的方式,loader可以调用通过,但是main app还是不能对flash进行读写,所以这个不是我们想要的方式。
2. main app以plain load image的方式,具体操作如下:
loader的主体代码:
void boot_jump(uint32_t addr)
{
__asm("LDR SP,[R0]");
__asm("LDR PC,[R0,#4]");
}
int main(void)
{
uint32_t index = 0;
uint32_t *sdram = (uint32_t *)SDRAM_BASE_ADDR; /* SDRAM start address. */
/* Hardware Initialization */
CLOCK_EnableClock(kCLOCK_InputMux);
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
BOARD_InitPins();
BOARD_BootClockFROHF96M();
BOARD_InitDebugConsole();
BOARD_InitSDRAM();
PRINTF("\r\n Start EMC SDRAM access flash .\r\n");
SpifiFlashInit();
SpifiFlashRead(0xa0000000sdram, 0x200000);
PRINTF("\r\n Start EMC SDRAM access example.\r\n");
boot_jump(0xa0000000);//在这里添加断点,在debugger console中这里添加add-sybol-file mainapp.axf 0xa0000000,就可以跳转到main app的resetISR,但是单步再往下执行就跳到HardFault_Hander(这个是loader中的函数)中。
//boot_jump(0x10800000);
/* Prepare data and write to SDRAM. */
while (1)
{
}
}


loader的设置:

