bootload与业务程序一起烧录

情况:在业务代码已经完成后,为了以后设备支持iap升级,希望设备烧入bootload,由bootload选择执行具体版本的业务程序。但发现目前生产部做的话,是分两步执行,先烧录bootload程序, 再烧录出厂的业务程序,感觉有点慢,如果能一次性解决就再好不过了。

解决:使用分割工具

bootload程序:

 

 这是我的bootload程序烧写时选的地址,是flash的开头

 

 生成hex文件,名称为hc32l190_bootload.hex

业务程序:

 

 业务程序的烧写地址自己选个合适的地方(考虑bootload的大小,及整块flash的大小)

 

 

 

 在startup的汇编文件中,加个中断向量的偏移地址。

 

 

 选择生成hex文件,名称为smoke-sensor-3c.hex,并注意第二个箭头的生成位置,后面要用。最上面的那个箭头如果只是smoke-sensor-3c,keil烧录时好像是会用.axf文件就行烧录,不行,我们好要的是用smoke-sensor-3c.hex进行烧录。

 

 

mergehex.exe --merge hc32l190_bootload.hex   Output\smoke-sensor-3c.hex       --output Output\smoke-sensor-3c.hex

添加编译完成后的动作,这里就是用这个mergehex.exe工具,将hc32l190_bootload.hexOutput\smoke-sensor-3c.hex(这个文件夹里的这个文件),合并生成并覆盖为Output\smoke-sensor-3c.hex这个文件

好了,现在就可以用生成后的这个hex文件,一次性烧录bootload跟业务程序了

 

 

ps:

 

 对这里就行修改后,

$K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L

再使用上面的这个生成bin文件的指令就会出错,如果要生成bin文件,要把name中(.hex)去掉

posted @ 2022-10-21 15:12  kingzhan  阅读(198)  评论(0编辑  收藏  举报