久芯网

关于STM32系列芯片bootloader开发的问题?

avatar 仲裁者 提问时间: 2023-08-19 12:49:38 / 已解决

大家好,请问用STM32进行bootloader开发时,能不能将boot和app程序的hex合成为一个hex进行烧录?我之前分别烧录两个hex,是可以实现功能的,不知道合成一个hex烧录行不行。

我之前用DSP C2000系列芯片时,都是将app和boot程序的hex进行合成的,现在改用ST了,在合成hex时产生了个疑问,因为ST芯片的启动方式是上电后从flash(假设是从flash直接启动)起始位置开始执行(获取栈顶指针地址,获取Reset向量所指地址等等),因此我猜测在合成hex时,应该将boot程序放在以0x08000000起始的位置,而app放在boot的后面(DSP是相反的,hex文件中app在前,boot在后)。那么我会产生下面几个疑问:

(1)hex文件的倒数第二行是用来指定程序入口地址的,即Reset_Handler的地址,那么合成后的hex的倒数第二行应该指定boot的入口还是app的入口?

(2)如果是boot的入口,那么在boot程序执行完,跳转到app时,能不能跳转到app的入口(因为hex中没有指定app的入口)?

(3)如果我在boot程序的末尾不是跳转到app程序的flash空间首地址,而是直接跳到app的Reset_Handler,那么app接下来能否正常执行?


如需获得 STM32 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

8个回答
  • avatar xmshao
    最佳答案
    回答时间: 2023-08-19 13:07:12
    仲裁者 发表于 2021-11-2 17:45
    你好,请问帖子的链接能给我发一下吗?

    https://mp.weixin.qq.com/s?__biz=MzA3OTIxMjQyNQ==&mid=2650949551&idx=1&sn=52abddd67cdb0114cede1ed99069efbe&chksm=84401d49b337945fdd960d9216e67244db7783be3c773cd8dbd7691e1c1f92d8319a7d94897c&token=1832656642&lang=zh_CN#rd

  • avatar xmshao
    回答时间: 2023-08-19 13:38:09

    将APP和IAP代码合在一起后进行烧录是可以的。这里有篇文章 ,稍微搜索下。它专门介绍了基于STM32芯片IAP/APP合并烧录的话题,你可以参考下。

  • avatar 仲裁者
    回答时间: 2023-08-19 14:07:38
    xmshao 发表于 2021-11-2 17:43
    将APP和IAP代码合在一起后进行烧录是可以的。这里有篇文章 ,稍微搜索下。它专门介绍了基于STM32芯片IAP/ ...

    你好,请问帖子的链接能给我发一下吗?

  • avatar 憨客鱼
    回答时间: 2023-08-19 14:31:15

    用文件合并工具按照具体地址合并不行么

  • avatar 仲裁者
    回答时间: 2023-08-19 14:54:08
    憨客鱼 发表于 2021-11-2 20:41
    用文件合并工具按照具体地址合并不行么

    能说一下怎么操作吗,没这么搞过,谢谢了

  • avatar 仲裁者
    回答时间: 2023-08-19 15:22:31
    憨客鱼 发表于 2021-11-2 20:41
    用文件合并工具按照具体地址合并不行么

    你好,我刚刚下了个合成工具,通过对比合成后的hex,已经知道了合成的方法,谢谢你的回答

  • avatar 1+1=2
    回答时间: 2023-08-19 15:43:34

    对于hex文件的合并不是很了解,但是可以建议把两个HEX文件生成两个BIN文件,合并两个BIN文件再烧录就行啦,这样就不会有楼主的疑问了,毕竟BIN文件是纯二进制的,只要设置好起始地址就行了

  • avatar butterflyspring
    回答时间: 2023-08-19 16:13:36
    1+1=2 发表于 2021-11-30 07:06
    [md]对于hex文件的合并不是很了解,但是可以建议把两个HEX文件生成两个BIN文件,合并两个BIN文件再烧录就行 ...

    我前天把测试好的IAP+APP功能的芯片代码顺手用烧录器读出来另存为一个文件

会员中心 微信客服
客服
回到顶部