打印
[ZLG-ARM]

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

[复制链接]
2522|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lw2008|  楼主 | 2009-1-5 18:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhongyb| | 2009-1-6 14:30 | 只看该作者

有很多这样的实际应用

像你说的这种情况的,一般的实现方法是MCU+SPI DATAFLASH结构。其实网上也有相关的论文研究讨论这种通过GPRS实现远程升级固件的方法。

使用特权

评论回复
板凳
lw2008|  楼主 | 2009-1-6 15:05 | 只看该作者

SPI挂了2M的FLASH

但如何将LPC213X的FLASH替换了,还要考虑替换一半时发生损坏的情况。
论文只是想法,我是想有偿购买成熟技术。

使用特权

评论回复
地板
db10| | 2009-1-6 16:32 | 只看该作者

用LPC213X实现可行太差

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

使用特权

评论回复
5
PowerGPS| | 2009-1-9 14:27 | 只看该作者

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

   和用电脑ISP是一样的,但可以远程升级。就是成本贵了一个MCU的价格,如果系统本身没有DataFlash,成本还要加个Flash的钱。

   IAP是MCU本身升级本身,代码分成两部分,升级判断代码 + 用户代码。前者出厂时写好,且固定程序空间,后者可修改。

int     main(void)
{
    if(要升级?)
    {
        // 升级程序
        // 清升级标志
        // 关中断,让看门狗复位
    }
    else
    {
        // 用户程序
    }
}

   不管怎么升级,都建议用外部存储器。用内部Flash分成二部分轮流使用的办法不提倡。

使用特权

评论回复
6
zhongyb| | 2009-1-10 09:11 | 只看该作者

注意是通过GPRS

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

使用特权

评论回复
7
mohanwei| | 2009-1-10 11:52 | 只看该作者

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

跳转到用户程序后,用户程序一定要占用所有外设资源和RAM——除了存放BootLoader的一小块Flash。否则以后会折腾死你……
除非水平很高或者有相当经验一开始就能把程序做得很完善。

使用特权

评论回复
8
我学MCU| | 2009-1-31 22:42 | 只看该作者

我做过

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

使用特权

评论回复
9
zlgmcu| | 2009-2-1 09:15 | 只看该作者

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

IAP远程升级难点:
    GPRS网络本身具有不稳定性,如何解决断点续传?
    正在写Flash时突然停电怎么办?系统崩溃吗?
    后备电池电量有限,升级时恰好耗光怎么办?
    新版本程序存在致命缺陷如何补救?
    ……

使用特权

评论回复
10
PowerGPS| | 2009-2-1 16:36 | 只看该作者

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

   GPRS本来就不可以大文件传输的,要分包。

   至于断电,就不用考虑了。工厂生产的时候也有断电或机器坏嘛...
断电了,有电的时候再来一次咯

使用特权

评论回复
11
mcuisp| | 2009-2-1 18:23 | 只看该作者

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

zlgmcu提的几点都很伟大,很正确。
IAP难,远程IAP更难。
平时就把程序代码当数据传输,传输完后,就变成从本地存储器IAP升级了。

具体情况得具体分析,还有安全、保密、客户关系处理等一系列问题呢。
还要考虑远程IAP的可管理性。不要搞得有的机器跑1.0版,有的跑10.0版,都乱套。

使用特权

评论回复
12
bin8| | 2009-2-19 21:05 | 只看该作者

怕怕

我刚搞完一个不是很复杂的开IAP项目,工程人员今天过去安装程序了。你们说得这么玄,怕怕,我是第一次搞软件,以前是搞硬件的,或者说是技术员。
就两百多台机

使用特权

评论回复
13
qingfengyishi| | 2009-2-21 19:59 | 只看该作者

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

用两个MCU协作实现,不知行不行?当然大容量数据存储器是必须的

使用特权

评论回复
14
db10| | 2009-2-22 11:18 | 只看该作者

zlgmcu

 你说的几点都不难解决,华为的所有大点的项目都是有不停电升级功能的,当然是主从两个系统这样实现的。成本会高点,但是也高不了多少。。。 但是如果设备还算比较贵,升级很不方便,那完全是可以做和实现的。。。。 

使用特权

评论回复
15
youself| | 2009-3-4 00:43 | 只看该作者

同意楼上的

其实如果NXP或者ZLG提供的IAP的库,足够的稳定或者芯片本身运行IAP足够的稳定,远程升级应该一点问题都没有。

可以无线,也可以有线。

IAP远程升级难点:
    GPRS网络本身具有不稳定性,如何解决断点续传?
    正在写Flash时突然停电怎么办?系统崩溃吗?
    后备电池电量有限,升级时恰好耗光怎么办?
    新版本程序存在致命缺陷如何补救?

断点续传不需要解决,也没有问题,只要上电的时候检查程序完整性,就可以解决你说的所有问题。

使用特权

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

本版积分规则

49

主题

296

帖子

0

粉丝