如何实现从bootloader到APP的跳转
我想在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的跳转
呵呵,还是自己搞明白了,是跳转代码写错了,不是要跳转到8003000地址,而是要跳转到8003000地址所存储的地址去,reset向量嘛^_^(*(void(*)(void))(*(uint32*) 0x08003004))();
回复:如何实现从bootloader到APP的跳转
楼主能把代码发我看看吗,我按你写的内容也下载到了我的板子里面,结果运行不了啊,什么反应都没啊 谢谢楼主分享,说得很清楚。 多谢,一语惊醒梦中人啊:lol
页:
[1]