我程序有两处理代码, 一处放正常运行的代码,比如 128K的空间, 我120K分两个区, 60K正常代码区,60K备份代码区,8K类式与bootloader功能专门把备份区的代码写入运行区60K代码, 前两个功能都实现了,现在我不知道怎么从正常运行的程序跳转到 8K烧写代码区, 8K地址是知道放在哪一下区域的,
我想实现在任何时候都可以互相跳转,更新代码, 我用STM32实现 的方法是这样的
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{ /* Jump to user application */
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
但我不知道CC2640是如果实现 的
Viki Shi:
请参考一下这边的bootloader guide:www.ti.com.cn/…/swra466c.pdf
user1412065:
回复 Viki Shi:
swra466c.pdf 只说了实现 方法,里面的代码提供吗,我可以从里面的代码找到那个跳转方法,也就是
bootloader的源码你们会提供吗
Viki Shi:
回复 user1412065:
有一个serial bootloader的例程提供:github.com/…/ble_examples-2.2
虽然是基于CC2650,但是跟CC2640的结构类似
user1412065:
回复 Viki Shi:
bootloader功能我实际已经实现 了,我就是想在代码更新后,跳转到更新后的代码地址,并运行的方法
Viki Shi:
回复 user1412065:
目前SBL的例程不多,跳转的问题请参考下:e2e.ti.com/…/891438