stm32怎样实现一边正常运行,一边串口接收程序升级数据?

2019-07-24 12:28发布

搞了台别人家的设备。测试了下在线升级功能:
串口分了300多包把要升级的程序数据传输到设备里面,然后点击“升级”,设备一眨眼(重启)更新程序了~~~

芯片STM32F030,flash为64K
要升级的APP程序量大概54K

因为flash大小的限制,肯定是不能同时存储2份APP程序的,
那么问题来了:
到底是怎样实现程序的所有功能都能正常运行(显示、保护动作、串口通信等等),一边串口还在接收要写入Flash的程序数据的呢??
接收到的50多K的数据,及时用缓存,也不可能有这么大的RAM用来缓存啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
edmund1234
1楼-- · 2019-07-24 16:19
把接收数据及写到flash的程式抄到RAM去运行
美丽的时光机器
2楼-- · 2019-07-24 19:32
edmund1234 发表于 2018-9-3 16:17
把接收数据及写到flash的程式抄到RAM去运行

可以把你的想法再分步骤描述一下吗?谢谢
xiaomodao
3楼-- · 2019-07-24 23:53
只能外挂flash了。或者写一段bootloda,在开机前几秒进入升级模式,这样也可以。
edmund1234
4楼-- · 2019-07-25 05:16
美丽的时光机器 发表于 2018-9-3 16:40
可以把你的想法再分步骤描述一下吗?谢谢

这还不清楚? 我不知道你的疑问在哪? 范围太广不好猜, 呵呵
美丽的时光机器
5楼-- · 2019-07-25 08:05
 精彩回答 2  元偷偷看……
edmund1234
6楼-- · 2019-07-25 13:13
美丽的时光机器 发表于 2018-9-3 16:54
我对这个需求完全没任何思路。。。

当你确定了要升级后, 是不是最少有四个任务?

一) 通过USART接收数据到RAM
二) 查错
三) 烧录到Flash
四) 是否完毕, 否则重复一至四
五)打开看门狗, 等待复位

把它们全都拷到RAM去执行, 这懂么?

一周热门 更多>