你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于使用AB双分区升级方案,如何能实现一个bin在两个分区跑?

[复制链接]
zfxm_23 提问时间:2023-5-9 18:29 / 未解决

请问各位大神

现在的产品需要实现AB双分区方案,是否可以在两个分区使用一个bin文件运行?

还是只能AB两个分区配置不同的起始地址生成两个bin?

现在用的是STM32FC103CB

收藏 评论8 发布时间:2023-5-9 18:29

举报

8个回答
xiyu_dang 回答时间:2023-5-9 19:52:43

不能,因为你在生成的bin文件中包含了中断向量表,若是你使用的是Keil你可以修改一下Start

image.png

你可以将0x8000000修改一下再次生成bin文件,然后通过文本对比工具你就能发现在你生成的bin文件和填写的这个地址有关。

这样是做不到AB分区使用同一个bin文件分区升级的,因为AB分区中至少是有一个中断向量表不符合,若是每次的都是使用一个bin可以做到,但是以后你的程序发生改变,且此次升级的分区恰巧不是你在生成bin文件时所填写的地址的话就会升级失败。

可以使用单分区+USB,单分区升级,升级失败的话跳到USB程序,至少能保证还有升级的机会。

废鱼 回答时间:2023-5-10 08:41:56

不可以使用一个BIN,主要是中断向量不同,需要修改中断向量。

xmshao 回答时间:2023-5-10 09:26:13
你是说一个BIN文件 想放到不同 分区吗? 这是可以的。


不同分区对应不同起始地址、以及中断矢量表。
butterflyspring 回答时间:2023-5-10 09:27:18
如果芯片本身不支持双区启动的话,那么只能在起始地址启动。个人认为需要起始部分要有一段公用代码管理如何分区运行。
zfxm_23 回答时间:2023-5-10 09:28:34

废鱼 发表于 2023-5-10 08:41
不可以使用一个BIN,主要是中断向量不同,需要修改中断向量。

之前用过某品牌wifi芯片,可以做到一个bin在两个分区跑

估计是做了分区地址映射。B分区映射到A分区的地址区域

所以在想STM32能否做到

xiyu_dang 回答时间:2023-5-10 09:29:24

使用两个bin文件的话要确定每次升级的是哪个分区,并使用对应分区的bin文件进行升级

zfxm_23 回答时间:2023-5-10 09:34:02

xiyu_dang 发表于 2023-5-10 09:29
使用两个bin文件的话要确定每次升级的是哪个分区,并使用对应分区的bin文件进行升级
...

现在的项目是CAN总线升级,下面会挂多个同类型的设备

需要生成两个bin文件,而且分开升级,时间double,体验不大好

废鱼 回答时间:2023-5-10 09:56:22

zfxm_23 发表于 2023-5-10 09:28</p>
<p>之前用过某品牌wifi芯片,可以做到一个bin在两个分区跑

[md]不同的芯片可能操作上不一样。还有要考虑使用方案。主要考虑第二个bin文件运行时,他的中断向量不能跳转到第一个bin,需要修改中断向量的地址和编译器配置编译的起始地址。比如KEIL需要配置ROM的地址是不一样的。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版