新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于IAP和Keil MDK的远程升级设计

基于IAP和Keil MDK的远程升级设计

作者:时间:2016-12-19来源:网络收藏

  CC 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母(包括校验字节)相加之后等于0x00。

本文引用地址:http://www.eepw.com.cn/article/201612/341760.htm

  一个Intel HEX文件必须有一个文件结束记录,这个记录的类型域必须是01,

  一个EOF记录总是这样:

  :00000001FF

  00是记录中数据字节的数目

  0000这个地址对于EOF记录来说无任何意义

  01记录类型是01(文件结束记录标示)

  4.2 对上位机软件的要求

  Ø 上位机具备解析重组Intel HEX文件的能力.

  Ø 上位机软件应能识别分站发来的应答信号并做出正确的响应。

  Ø 上位机应能够检验代码的完整性。

  Ø 上位机能根据分站发出的程序所在高区或低区标志,自动判别当前升级程序是否和升级区域相对应。

  5 实验数据

  为验证升级程序的稳定性,对分站进行重上电、复位、远程升级等一些列实验,实验记录及如下。

  1. 测试程序跳转功能.程序在上电或复位之后,应顺利跳转到用户程序。

    

image

 

  2. 测试Bootloader(一)。上位机发送升级命令但不发送升级数据包,程序应能进入Bootloader并发送当前程序所在的区域(高区或者低区代号),10S后程序应跳转到用户程序。

    

image

 

  3.测试Bootloader(二)。上位机发送升级命令,发送升级数据包,但发送到一半时停止发送。程序在10S后应能跳转到用户程序区。

    

image

 

  4.测试Bootloader(三)。上位机发送升级命令,发送升级数据包,但发送中途给分站断电,重新上电后,应还能执行原来的程序。

    

image

 

  5.测试Bootloader(四)。上位机发送升级命令,发送完成升级数据包。程序应能接收升级数据包并编程Flash,完成用户程序的更新,更新用户程序后,跳转到新的用户程序。

    

image

 

  6.总结

  本次升级方案虽然是以LPC2114为基础的,但任何具有功能的单片机、ARM都可使用本设计方案。

  设计的重点在于如何保证升级的安全性,分站采取了一些列校验、超时处理以及看门狗等措施,一是保障升级数据包的正确传送,二是即使升级失败也能退回原升级程序。上位机的校验措施需相关部门配合。从实验数据来看,进行了几十次的远程升级,未有一例失败,安全性能可以得到保证。

  7.参考文献:

  1. 周立功等 ARM微控制器基础与实战(第二版) 北京航空航天大学出版社 2005

  2. LPC2114/2124/2212/2214 使用指南.Pdf 广州周立功单片机发展有限公司

  3. 韦文祥 朱志杰 车琳娜 郭宝泉 基于LPC21 24的一个远程系统软件升级方案 单片机与嵌入式系统应用 2006第三期

  4. 许文杰 丁志冈 张 泉基于ARM 处理器的设计及应用 计算机应用与软件 2009第3期

  5. 姜晓梅 李祥和 任朝荣 姚明基于ARM的在线及远程升级技术 计算机应用 2008第二期

  6. RealView 编译工具-编译器参考指南.pdf ARM Limited 2009.3

  7. RealView Compilation Tools(连接器用户指南).pdf ARM Limited 2009.3

  8. RealView 编译工具-编译器用户指南.pdf ARM Limited 2009.1

  9. RealView 编译工具-链接器参考指南.pdf ARM Limited 2008.9

  10. Intel HEX文件格式

  11. LPC2000 secondary bootloader for code update using IAP NXP Semiconductors 2009.5.26

  后记:分散加载文件,软中断,中断向量表重映射,变量对齐,精确定位变量等等这些东西的详细讲解在我的参考资料上都能找的到,发现问题并能解决它,是件很美妙的事情,所以我没打算也没时间详细写这些东西的用法。

  需要说的是,我在设计的时候走了一个弯路,现在想想还觉得挺可笑。我以为上面讲的东西要在一个工程里面实现才好,这样才能生成一个.hex可烧录文件,可以一次性的将用户程序、Bootloader程序烧写进处理器,我想弯了。正确的做法是建四个工程:跳转程序、Bootloader、用户低区程序、用户高区程序。如果你懂了.hex文件的格式,就完全可以将跳转程序、Bootloader和用户低区程序(或者跳转程序、Bootloader和用户高区程序)这三个工程生成的.hex文件合成一个。灵活多变的处理问题,这是我最大的收获。

  后记的后记: 很多同学看完后都希望得到源码,这种心情我是理解的,最初的时候我也希望有一套别人的源码的,毕竟这样可以进行的快点.所以我将一个远程升级的例子放在下面的链接里,大家想看看的就去下载吧,这个不是我产品中用到的,因为我的代码毕竟是含有公司的一些信息.如果我最近有时间,会把其中的英文文档翻译一下的。


上一页 1 2 3 下一页

关键词: IAP Keil

评论


相关推荐

技术专区

关闭