请问各位大神 现在的产品需要实现AB双分区方案,是否可以在两个分区使用一个bin文件运行? 还是只能AB两个分区配置不同的起始地址生成两个bin? 现在用的是STM32FC103CB |
不能,因为你在生成的bin文件中包含了中断向量表,若是你使用的是Keil你可以修改一下Start 你可以将0x8000000修改一下再次生成bin文件,然后通过文本对比工具你就能发现在你生成的bin文件和填写的这个地址有关。 这样是做不到AB分区使用同一个bin文件分区升级的,因为AB分区中至少是有一个中断向量表不符合,若是每次的都是使用一个bin可以做到,但是以后你的程序发生改变,且此次升级的分区恰巧不是你在生成bin文件时所填写的地址的话就会升级失败。 可以使用单分区+USB,单分区升级,升级失败的话跳到USB程序,至少能保证还有升级的机会。
不可以使用一个BIN,主要是中断向量不同,需要修改中断向量。
你是说一个BIN文件 想放到不同 分区吗? 这是可以的。 不同分区对应不同起始地址、以及中断矢量表。
如果芯片本身不支持双区启动的话,那么只能在起始地址启动。个人认为需要起始部分要有一段公用代码管理如何分区运行。
不可以使用一个BIN,主要是中断向量不同,需要修改中断向量。
之前用过某品牌wifi芯片,可以做到一个bin在两个分区跑 估计是做了分区地址映射。B分区映射到A分区的地址区域 所以在想STM32能否做到
使用两个bin文件的话要确定每次升级的是哪个分区,并使用对应分区的bin文件进行升级
使用两个bin文件的话要确定每次升级的是哪个分区,并使用对应分区的bin文件进行升级 ...
现在的项目是CAN总线升级,下面会挂多个同类型的设备 需要生成两个bin文件,而且分开升级,时间double,体验不大好
之前用过某品牌wifi芯片,可以做到一个bin在两个分区跑
[md]不同的芯片可能操作上不一样。还有要考虑使用方案。主要考虑第二个bin文件运行时,他的中断向量不能跳转到第一个bin,需要修改中断向量的地址和编译器配置编译的起始地址。比如KEIL需要配置ROM的地址是不一样的。