微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > LPC2214的IAP实现方案

LPC2214的IAP实现方案

时间:02-02 来源:互联网 点击:
4 应用boot设计

应用 boot是应用代码更新的关键,它不但解决了在线升级的问题,而且提供了一种异常防护机制。即使在内部Flash的应用程序代码区写入失败的情况下,由于 boot可以正常运行,仍然可以通过boot程序的功能重新更新应用程序。boot程序基本功能包括:内部Flash更新、向应用程序跳转以及本地下载更新应用程序。为保证该软件的可靠性,同时考虑硬件配置情况,采用μC/OS-Ⅱ嵌入式操作系统。通过对该操作系统的合理裁剪和软件优化,可以将boot程序代码控制在12 KB以内,从而为应用程序代码提供了足够的片内Flash存储空间。

当boot程序从内部Flash中读取指令执行时,不能擦除该Flash。为解决该问题,boot程序执行时首先将boot程序代码复制到RAM中,然后跳转到RAM中执行,这样就可以对内部 Flash的应用程序代码区进行修改操作。

boot程序的启动部分非常重要,会直接影响整个系统的运行情况。启动代码首先初始化CPU总线控制器;然后初始化RAM和外部Flash片选,将boot程序代码复制到RAM中并在RAM中执行;最后初始化堆栈和基本系统后进入主程序入口。




boot程序的IAP实现,主要包括两个接口函数:CPU内部Flash扇区的擦除和写入。对于擦除操作,按照IAP提供的操作方式即可实现,注意发送完擦除指令后需要一段时间的延时,并借助指令检查擦除是否成功。对于写入操作,需要根据IAP操作的相关要求,将数据首先复制到CPU的内部RAM中;然后通过相应的 IAP写入命令将其写入到内部Flash中;写入操作完成后,需要进行一定的延时并检查写入是否成功。为了保证上述操作过程的完整性,对于μc/OS- II操作系统,需要借助OS_ENTER_CRITICAL函数进行必要的保护。

5 异常情况应对措施

对于嵌入式产品的在线升级过程,突发的在线升级过程异常中止、装置停电或异常复位,以及更新程序代码错误等情况会导致严重后果,而本产品的IAP在线升级方案完全解决了上述问题,可以保证产品的可靠升级。

①在线升级过程异常中止的情况。外部无线网络或人为原因都可能导致代码下载中断的发生。而对于本产品,下载中止只会导致本次下载失败,再次开始下载即可;而且由于采用了断点续传的软件技术,后续下载可以从上次下载失败处继续进行,从而提高了下载效率。

② 装置停电或异常复位的情况。当停电或复位发生在下载到外部RAM过程中时,只会导致本次下载失败,重新启动装置可以再次下载;发生在代码从外部RAM向外部Flash导入过程中时,也只会导致本次下载失败,不会影响产品的正常运行;发生在代码从外部Flash向CPU内部Flash导入过程中时,内部 Flash的应用程序代码区被破坏,应用程序无法正常运行,但是boot程序可以继续工作,可以在boot程序中完成应用程序的更新工作。

③ 更新程序代码错误的情况。例如由于人为原因下载了一个错误版本的应用程序,导致产品循环异常复位无法正常运行。应用程序中加入了复位监测机制,当异常复位连续达到一定范围时会自动进入boot程序运行状态,可以在boot程序中完成应用程序的更新修复工作。

结语

采用本 IAP设计方案的终端产品,经过上千个用户现场的应用程序在线升级的实际应用检验,完全达到了快速、稳定、可靠的使用要求。该方案为现场服务人员和用户提供了一种简单、可靠的产品维护手段,对于其他嵌入式产品的设计和开发也具有一定的指导和借鉴意义。

参考文献

1. 杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.
2. 广州周立功单片机发展有限公司.LPC2114/2124/2212/2214使用指南,2003.

作者:天津凯发电气股份有限公司 曾庆钊  李政  董文宽   来源:《单片机与嵌入式系统应用 》 2009(10)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top