基于IAP和Keil MDK的远程升级设计
2 对上位机软件的要求 ? 上位机具备解析重组Intel HEX文件的能力. ? 上位机软件应能识别分站发来的应答信号并做出正确的响应。 ? 上位机应能够检验代码的完整性。 ? 上位机能根据分站发出的程序所在高区或低区标志,自动判别当前升级程序是否和升级区域相对应。 5 实验数据 为验证升级程序的稳定性,对分站进行重上电、复位、远程升级等一些列实验,实验记录及如下。 1. 测试程序跳转功能.程序在上电或复位之后,应顺利跳转到用户程序。
2. 测试Bootloader(一)。上位机发送升级命令但不发送升级数据包,程序应能进入Bootloader并发送当前程序所在的区域(高区或者低区代号),10S后程序应跳转到用户程序。
3.测试Bootloader(二)。上位机发送升级命令,发送升级数据包,但发送到一半时停止发送。程序在10S后应能跳转到用户程序区。
4.测试Bootloader(三)。上位机发送升级命令,发送升级数据包,但发送中途给分站断电,重新上电后,应还能执行原来的程序。
5.测试Bootloader(四)。上位机发送升级命令,发送完成升级数据包。程序应能接收升级数据包并编程Flash,完成用户程序的更新,更新用户程序后,跳转到新的用户程序。
6.总结 本次升级方案虽然是以LPC2114为基础的,但任何具有IAP功能的单片机、ARM都可使用本设计方案。 设计的重点在于如何保证升级的安全性,分站采取了一些列校验、超时处理以及看门狗等措施,一是保障升级数据包的正确传送,二是即使升级失败也能退回原升级程序。上位机的校验措施需相关部门配合。从实验数据来看,进行了几十次的远程升级,未有一例失败,安全性能可以得到保证。 7.参考文献: 1. 周立功等 ARM微控制器基础与实战(第二版) 北京航空航天大学出版社 2005 2. LPC2114/2124/2212/2214 使用指南.Pdf 广州周立功单片机发展有限公司 3. 韦文祥 朱志杰 车琳娜 郭宝泉 基于LPC21 24的一个远程系统软件升级方案 单片机与嵌入式系统应用 2006第三期 4. 许文杰 丁志冈 张 泉基于ARM 处理器的IAP设计及应用 计算机应用与软件 2009第3期 5. 姜晓梅 李祥和 任朝荣 姚明基于ARM的IAP在线及远程升级技术 计算机应用 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文件合成一个。灵活多变的处理问题,这是我最大的收获。 后记的后记: 很多同学看完后都希望得到源码,这种心情我是理解的,最初的时候我也希望有一套别人的源码的,毕竟这样可以进行的快点.所以我将一个远程升级的例子放在下面的链接里,大家想看看的就去下载吧,这个不是我产品中用到的,因为我的代码毕竟是含有公司的一些信息.如果我最近有时间,会把其中的英文文档翻译一下的。
- MSP43F149系列单片机的IAP功能设计(09-08)
- 基于IAP的STM32程序更新技术(01-23)
- STM32 IAP 无法运行用户程序的解决方法(12-03)
- STC单片机 EEPROM/IAP 功能测试程序演示(12-01)
- 9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介(11-29)
- STC IAP片子的仿真功能(11-28)