[ZLG-ARM] 请问各位:现在有谁真正把IAP用在远程升级上。

[复制链接]
 楼主| lw2008 发表于 2009-1-5 18:47 | 显示全部楼层 |阅读模式
用的LCP2136/8。<br />有上千台终端分散在现场,都有GPRS模块,有谁在产品上正式应用远程升级功能。<br />通过GPRS升级整个程序,而且不会发生升级一半死机现象。
zhongyb 发表于 2009-1-6 14:30 | 显示全部楼层

有很多这样的实际应用

像你说的这种情况的,一般的实现方法是MCU+SPI&nbsp;DATAFLASH结构。其实网上也有相关的论文研究讨论这种通过GPRS实现远程升级固件的方法。
 楼主| lw2008 发表于 2009-1-6 15:05 | 显示全部楼层

SPI挂了2M的FLASH

但如何将LPC213X的FLASH替换了,还要考虑替换一半时发生损坏的情况。<br />论文只是想法,我是想有偿购买成熟技术。
db10 发表于 2009-1-6 16:32 | 显示全部楼层

用LPC213X实现可行太差

以前做个这种远程升级。。。<br />&nbsp;升级由于网络和串口速度问题,升级操作时其实稳定行不会很好的。。。<br />&nbsp;如果你采用操作系统来完成比较容易做。。。后台监控进程。。。<br />&nbsp;以前还用51做过这种,华邦的78e54,具体型号忘记了,6年前做的,这个芯片里面有主和从芯片以及对应的程序空间,可以进行控制操作切换。。。你可以看看原理,然后你可以参考。<br />&nbsp;还有用linux做过。。。&nbsp;整体感觉如果用无线网络传输,稳定行不好。。。&nbsp;
PowerGPS 发表于 2009-1-9 14:27 | 显示全部楼层

嗯,2楼的方法实质上就是ISP

&nbsp;&nbsp;&nbsp;和用电脑ISP是一样的,但可以远程升级。就是成本贵了一个MCU的价格,如果系统本身没有DataFlash,成本还要加个Flash的钱。<br /><br />&nbsp;&nbsp;&nbsp;IAP是MCU本身升级本身,代码分成两部分,升级判断代码&nbsp;+&nbsp;用户代码。前者出厂时写好,且固定程序空间,后者可修改。<br /><br />int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(要升级?)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;升级程序<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清升级标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;关中断,让看门狗复位<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;用户程序<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />&nbsp;&nbsp;&nbsp;不管怎么升级,都建议用外部存储器。用内部Flash分成二部分轮流使用的办法不提倡。
zhongyb 发表于 2009-1-10 09:11 | 显示全部楼层

注意是通过GPRS

我说的方法实际上是通过IAP,和ISP没有任何关系,使用DataFlash是必要的,因为GPRS网络传输不是很稳定,避免升级过程中出现LZ说的情况,把升级固件放在DataFlash里是必要的,然后系统再从DataFlashFlash(通过内部SRAM)升级就安全很多了。
mohanwei 发表于 2009-1-10 11:52 | 显示全部楼层

远程升级一定要固定BootLoader并设为写保护。

跳转到用户程序后,用户程序一定要占用所有外设资源和RAM——除了存放BootLoader的一小块Flash。否则以后会折腾死你……<br />除非水平很高或者有相当经验一开始就能把程序做得很完善。
我学MCU 发表于 2009-1-31 22:42 | 显示全部楼层

我做过

我采用的方案是GPRS网络下载到DATAFLASH中,DATAFLASH中总是保存一个最新的和上一个版本的程序,在通过GPRS将程序下载到本地后复位执行bootload升级新版本,如果出现程序在下载到内部FLASH中出现读出校验不成功的话,重新升级新程序,三次失败恢复上一次运行的程序.如果恢复上一次失败可能DATAFLASH就有问题了,我就认为失败了.其实失败后还是可以保留一个程序备份在内部FLASH的高区,执行高区程序并报告错误,高区程序肯定存在bug,不然不用升级了,但至少保证部分功能是可以执行的,然后到现场维修.
zlgmcu 发表于 2009-2-1 09:15 | 显示全部楼层

能做出来容易,但做得可靠就难了

IAP远程升级难点:<br />&nbsp;&nbsp;&nbsp;&nbsp;GPRS网络本身具有不稳定性,如何解决断点续传?<br />&nbsp;&nbsp;&nbsp;&nbsp;正在写Flash时突然停电怎么办?系统崩溃吗?<br />&nbsp;&nbsp;&nbsp;&nbsp;后备电池电量有限,升级时恰好耗光怎么办?<br />&nbsp;&nbsp;&nbsp;&nbsp;新版本程序存在致命缺陷如何补救?<br />&nbsp;&nbsp;&nbsp;&nbsp;……
PowerGPS 发表于 2009-2-1 16:36 | 显示全部楼层

GPRS断点续传,这个容易解决

&nbsp;&nbsp;&nbsp;GPRS本来就不可以大文件传输的,要分包。<br /><br />&nbsp;&nbsp;&nbsp;至于断电,就不用考虑了。工厂生产的时候也有断电或机器坏嘛...<br />断电了,有电的时候再来一次咯
mcuisp 发表于 2009-2-1 18:23 | 显示全部楼层

呵呵,这种事确实得考虑周全些。

zlgmcu提的几点都很伟大,很正确。<br />IAP难,远程IAP更难。<br />平时就把程序代码当数据传输,传输完后,就变成从本地存储器IAP升级了。<br /><br />具体情况得具体分析,还有安全、保密、客户关系处理等一系列问题呢。<br />还要考虑远程IAP的可管理性。不要搞得有的机器跑1.0版,有的跑10.0版,都乱套。<br />
bin8 发表于 2009-2-19 21:05 | 显示全部楼层

怕怕

我刚搞完一个不是很复杂的开IAP项目,工程人员今天过去安装程序了。你们说得这么玄,怕怕,我是第一次搞软件,以前是搞硬件的,或者说是技术员。<br />就两百多台机
qingfengyishi 发表于 2009-2-21 19:59 | 显示全部楼层

用两个MCU协作实现,不知行不行?

用两个MCU协作实现,不知行不行?当然大容量数据存储器是必须的
db10 发表于 2009-2-22 11:18 | 显示全部楼层

zlgmcu

&nbsp;你说的几点都不难解决,华为的所有大点的项目都是有不停电升级功能的,当然是主从两个系统这样实现的。成本会高点,但是也高不了多少。。。&nbsp;但是如果设备还算比较贵,升级很不方便,那完全是可以做和实现的。。。。&nbsp;
youself 发表于 2009-3-4 00:43 | 显示全部楼层

同意楼上的

其实如果NXP或者ZLG提供的IAP的库,足够的稳定或者芯片本身运行IAP足够的稳定,远程升级应该一点问题都没有。<br /><br />可以无线,也可以有线。<br /><br />IAP远程升级难点:<br />&nbsp;&nbsp;&nbsp;&nbsp;GPRS网络本身具有不稳定性,如何解决断点续传?<br />&nbsp;&nbsp;&nbsp;&nbsp;正在写Flash时突然停电怎么办?系统崩溃吗?<br />&nbsp;&nbsp;&nbsp;&nbsp;后备电池电量有限,升级时恰好耗光怎么办?<br />&nbsp;&nbsp;&nbsp;&nbsp;新版本程序存在致命缺陷如何补救?<br /><br />断点续传不需要解决,也没有问题,只要上电的时候检查程序完整性,就可以解决你说的所有问题。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

296

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

49

主题

296

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部