遇到STM32 A,B区 app升级困难,各路大神,帮忙看一下。

2019-12-10 18:18发布

我正在做一个bootloader(boot+app1+app2)。

app1运行的时候,升级app2,校验合法后,然后重启直接运行APP2。
app2运行的时候,升级app1,校验合法后,然后重启直接运行APP1。。。。。。

目前的困难是,如何能够将APP1与APP2做成同一个固件?今天对比了下不同位置的固件,发现只有前480个字节的vector table不同。

今天做了些尝试,app的固件以地址0x8000000生成(RAM预留1k,以存放中断向量表)。
bootloader运行时,将vector table 整个复制到RAM的最前面(根据APP的不同地址,重新修正中断向量表,比如app2的运行地址是0x80005000,则将中断向量表统一加上0x5000);
但是发现这样子行不通,无法正常运行。是不是我哪里有缺漏的地方?

实在没办法的话,只能固件升级时,将中断向量表修改掉??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
64条回答
了无
1楼-- · 2019-12-14 17:11
丢丢时光机 发表于 2019-6-19 23:23
打算固件升级时,把固件中的中断向量表部分直接修改后,存入相应的flash。 ...

你试试,把结果与问题发上来讨论讨论,我会持续关注这个帖子,咱们一块把这个问题解决了,你的问题解决了,我的也就解决了
丢丢时光机
2楼-- · 2019-12-14 21:51
了无 发表于 2019-6-20 00:24
你试试,把结果与问题发上来讨论讨论,我会持续关注这个帖子,咱们一块把这个问题解决了,你的问题解决了 ...

我准备放弃AB方案了。今天用工具对比了下两个不同位置的bin,发现不同的地方不仅仅是VECTOR TABLE.固件从头到尾都有不同的地方。
love_ourdev
3楼-- · 2019-12-15 00:31
丢丢时光机 发表于 2019-6-20 10:09
我准备放弃AB方案了。今天用工具对比了下两个不同位置的bin,发现不同的地方不仅仅是VECTOR TABLE.固件从 ...

这算不算出尔反尔?当你之前说出链接到两个不同地址时,只是向量表不同的时候,我就很怀疑了。
istars2005
4楼-- · 2019-12-15 02:38
 精彩回答 2  元偷偷看……
chendaon
5楼-- · 2019-12-15 02:55
其实,一用一备更方便。
252514251
6楼-- · 2019-12-15 06:43
弄同样的app,中断向量一样, 存放到不同的位置,决定复制一个app到程序区运行

一周热门 更多>