打印
[STM32F0]

谈谈对ST 的IAP功能的改进

[复制链接]
1117|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xutong1|  楼主 | 2020-9-9 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谈谈对ST 的IAP功能的改进

ST的IAP 设计的不是很好。  为什么, 第一,默认IAP与APP是分开设计,分开编译链接的。是两个独立的程序。   这样来说,生产的时候就要两次烧写代码,很麻烦。

改进方法, IAP+APP都在一个程序代码里面。这个本人以前用的其他公司的芯片IAP方案就是这样的。

IAP+APP一体化后, 程序通过串口通信监测上级。如果收到升级指令,就开始接收串口发来的代码,一包一包接收,一包一包写入FLASH. 最后复位。简单的这么说。


ST的方案, IAP+APP是分开设计的。两个独立的代码, 要用工具把编译的BIN/HEX文件链接为一个BIN文件。 这样 就一次烧写这个BIN文件就可以了。


使用特权

评论回复
评论
zlf1208 2020-9-11 15:33 回复TA
你这个方法有个前提,就是 FLASH 足够大。分二次烧写也是有办法解决的,我请别人帮忙写了一个Windows软件,把二个bin文件合并后,就可以一次性烧写,没任何问题。 
沙发
xutong1|  楼主 | 2020-9-9 15:20 | 只看该作者
另外  IAP 和APP 互相跳转到问题。 ST的方案 是要中断重映射,靠背代码等等。  如果RAM足够大,是否可以把IAP代码整部分放入RAM中运行?

使用特权

评论回复
板凳
ufbycd| | 2020-9-9 15:42 | 只看该作者
本帖最后由 ufbycd 于 2020-9-9 15:47 编辑

一、可以将两个HEX合并,然后单次烧录;
二、ST的烧录工具软件可以同时加载多个目标文件,然后单次烧录;
三、将IAP的运行空间定在RAM内,APP运行时接收IAP固件数据将其保存到指定的RAM区域,然后跳转到IAP。

使用特权

评论回复
地板
Diyer123| | 2020-9-9 18:24 | 只看该作者
楼主想法欠妥
IAP要求的是安全、短小、通用。
你把IAP和用户程序合并在一起,以上任意一个都满足不了……

使用特权

评论回复
评论
xutong1 2020-9-9 20:00 回复TA
你说的没有任何根据 
5
yklstudent| | 2020-9-11 19:31 | 只看该作者
分散加载就可以实现,关键看你想不想去研究和折腾,ST也不是不可以实现

使用特权

评论回复
6
jekey| | 2020-9-11 23:23 | 只看该作者
可以慢慢体会IAP+APP分开的好处。

使用特权

评论回复
7
way2888| | 2020-9-12 07:51 | 只看该作者
楼主为了烧写这么做一点都不明智,你不会写软件的话,可以把一个升级好的程序读出来,后面烧写就用那个就好了,会写软件就写个小软件合并一下就好了

使用特权

评论回复
8
character| | 2020-9-14 14:50 | 只看该作者

使用特权

评论回复
9
guanjiaer| | 2020-10-10 12:05 | 只看该作者
感谢楼主的分享

使用特权

评论回复
10
heimaojingzhang| | 2020-10-10 12:07 | 只看该作者
感谢无私的分享啊

使用特权

评论回复
11
keaibukelian| | 2020-10-10 12:08 | 只看该作者
方法很不错

使用特权

评论回复
12
labasi| | 2020-10-10 12:09 | 只看该作者
第一次了解

使用特权

评论回复
13
paotangsan| | 2020-10-10 12:09 | 只看该作者
没有十全十美的办法 呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

210

帖子

0

粉丝