1、需要两份程序

BootLoader和App程序,两份程序均可以通过jlink下载,只需要将下载地址修改一下即可:

forum.jpg

forum.jpg

2、在BootLoader中的跳转函数

3、在app中修改中断向量表的偏移地址

forum.jpg

forum.jpg

forum.jpg

4、程序自动选择向量表的偏移地址

适用场景,一颗芯片里面有3个程序:

BootLoader程序,起始地址:0x08000000

APP1程序,起始地址:0x08008000

APP2程序,起始地址:0x08013000

这种情况就需要BootLoader程序自动选择往哪个地址跳转,这个地址再升级完以后会变,比如当前的跳转地址是app1,那么升级后跳转的地址就变为app1。

针对这种场景,做如下修改:

forum.jpg

5、keil编译器中设置的程序起始地址会别写进bin文件

forum.jpg

上图中的地址会被写入到bin文件中,所有在编译APP1程序和APP2程序的时候,要记着修改这里的起始地址。