打印

求教ARM-STM32F自制远程升级程序的方法

[复制链接]
4668|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qif2000|  楼主 | 2008-5-14 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我正在准备使用STM32F101C8T6做一款终端产品,是通过GPRS方式1点对多点通讯的,现在由于客户的要求经常有改变,不能总去现场用下载器给升级程序啊。想给STM32远程升级程序,现在不知道怎么去做,请各位大侠指点一下。
目前,我能想到的是,在我的GPRS的设备上做ISP下载程序,给终端设备上的STM32升级程序,但这样做,GPRS那个设备我们改动起来比较麻烦。
另外一种设想是,先把程序下载到终端板上,保存到外部FLASH里,然后STM32校验OK后,进入怎么个状态,再STM32自己给自己的内部FLASH更新程序??这种方法是否可行?

相关帖子

沙发
akk2006| | 2008-5-18 20:23 | 只看该作者

楼上的方式是一种相当安全可靠的方式

使用特权

评论回复
板凳
multiice| | 2008-5-21 20:33 | 只看该作者

一定要做双备份

可以这样,boot+APP1+APP2,
APP1和APP2代码是一样的,在boot代码段对APP1和APP2进行CCR校验,

使用特权

评论回复
地板
multiice| | 2008-5-21 20:39 | 只看该作者

升级数据下载到APP2区

如果APP2的时间标记比APP1新,而且CRC正确,则用APP2内容覆盖APP1内容,实现升级。
万一升级过程失败,在BOOT阶段,检查APP1的CRC通不过的,则用APP2内容再次重新覆盖。
这样基本可以确保程序不会因为升级过程异常而丢失程序。

使用特权

评论回复
5
qif2000|  楼主 | 2008-5-24 17:11 | 只看该作者

谢3楼大侠支招

按你的建议,是在芯片内部的FLASH中开两个区?
我之前考虑的是,下载的程序放到片外的数据FLASH中,用它来对片内的程序FLASH更新下载。应该差不多吧

使用特权

评论回复
6
LUCONGWEN| | 2010-9-7 15:13 | 只看该作者
stm32的flash地址开始的地方,要放置中断向量,APP1和APP2的中断函数地址可能不一样的,怎么处理呢?

使用特权

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

本版积分规则

2

主题

8

帖子

1

粉丝