现在工程中有两个程序,一个BOOT程序,一个应用程序,使用IAR进行开发,BOOT程序从0x00000000开始存放,应用程序从0x00008040开始存放;
BOOT程序icf文件配置如下:
define symbol __intvec_start__ = 0x00000000;
define symbol ROM_start__ = 0x00000000;
define symbol ROM_end__ = 0x0001FFFF;
define symbol RAM_start__ = 0x20000000;
define symbol RAM_end__ = 0x2004FFFF;
应用程序中icf文件配置如下:
define symbol __intvec_start__ = 0x00008040;
define symbol ROM_start__ = 0x00008040;
define symbol ROM_end__ = 0x0001FFFF;
define symbol RAM_start__ = 0x20000000;
define symbol RAM_end__ = 0x2004FFFF;
上电运行BOOT程序正常,想知道BOOT程序如何才能跳转到应用程序,调用哪些命令或者接口。
希望得到解答,谢谢!
Viki Shi:
请参考如下文档实现SBL的功能【CC1310也适用】:
www.ti.com/…/swra466c.pdf
user6322593:
回复 Viki Shi:
你好,我使用的不是CC1310自带的bootloader,因为我没有多余的引脚;我用的方案是使用BOOT程序下使用串口进行应用程序更新,通过串口下发指令使BOOT跳转到应用程序执行。
现在我需要的就是如何跳转到应用的指令,谢谢!
Viki Shi:
回复 user6322593:
需要自行通过汇编实现,参考这边:e2e.ti.com/…/907745
user6322593:
回复 Viki Shi:
你好,我按照问题中所说的,使用
void jumpToApp(uint32_t sp, uint32_t pc) {asm(" LDR SP, [R0, #0x0]");asm(" LDR PC, [R0, #4]"); }进行跳转,跳转地址为0x0000B040,跳转之前关闭了使用过的外设;但是没有跳转成功,请问我是否还需要进行其他操作?比如重定向向量表?
以及是否有关闭全局中断的命令可以调用?