我想在8000000地址放一个boot程序,在8003000地址中放APP程序 boot程序在初始化后运行了一个led闪烁5s的示例,然后通过“(*(void(*)(void))0x0003004)(); ” 来跳转到APP。 APP程序按照ST的demo中给出的方法,MCU初始化后调用“NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000); ”来设置中断relocation,然后在keil的设置窗口“target”标签中,设置IROM的起始地址为0x08003000,在“link”标签,设置R/O base address为0x0800300。APP程序编译链接后从map文件中看到reset的确是从8003000开始。 最后通过jlink先下载APP程序,再下载boot程序,运行boot程序,发现执行跳转之后就进入了HardFault中断了,不知道咋回事,麻烦有高手帮忙看看,谢谢。 |
RE:如何实现从bootloader到APP的跳转
(*(void(*)(void))(*(uint32*) 0x08003004))();
回复:如何实现从bootloader到APP的跳转