微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于LPC2124的一个远程系统软件升级方案

基于LPC2124的一个远程系统软件升级方案

时间:07-08 来源:互联网 点击:

3 IAP功能的软件设计

  
3.1 IAP编程接口

  
LPC2124的IAP程序位于Boot扇区,复位后整个Bool扇区被映射到存储地址Ox7FFFFE000~Ox7FFFFFFF处;而IAP的入口地址为0x7FFFFFFFo,程序为Thumb代码。IAP编程命令使用RAM的最高端32字节,所以应用程序应保留这部分RAM。在使用IAP擦除/编程操作过程中,片内Flash存储器不可访问。当用户应用程序运行时,用户F1ash区域的中断向量有效,所以在调用Flash擦除/写IAP之前,用户应当禁止中断或确保用户中断向量在:RAM中有效和中断处理程序位于RAM中。IAP代码不使用或禁止中断。
  
3.2 IAP编程C语言实现

  
对于在应用编程,LPC2124是通过寄存器R0中的字指针指向存储器(RAM)包含的命令代码和参数来调用IAP程序。IAP命令的结果返回到寄存器R1所指向的存储器(RAM)。
  
调用LPC2124的IAP可使用如下C语言代码:
  ◆定义IAP程序入口地址
  #definc lAP_LOCATl0N Ox7FFFFFFFl
  ◆定义数据结构来传递IAP命令表和结果给IAP程序
  unslgned long Command[5];
  unsigncd long Result[2];
  ◆定义函数类型指针,函数包括两个参数,无返回值
  typcdef void(*IAP)(unsigned int[],unsigncdim int[]);
  IAP iap_entry; //定义函数指针
  ◆设置函数指针
  iap_entry=(IAP)IAP_LOCATION;
  ◆使用下面的语句来调用IAP
  iap_entry(command,result);
  
本系统是基于LPC2124工程模板进行移植的,在ADSl.2嵌入式软件开发平台上,用C语言直接调用IAP程序代码实现IAP编程。IAP的命令码、状态码和命令详解以及IAP功能的详细应用见参考文献。
  
4 远程升级在用电现场监控终端的应用

  
终端软件系统的设计包括用户引导程序设计(与Boot装载程序有区别,前者由用户设计,后者由芯片生产商设计并固化)和应用程序的设计。它们在LPC2124中的入口地址不同,终端复位后,如果未进入ISP编程状态,则首先执行用户引导程序,由用户引导程序决定执行IAP升级还是正常运行;应用程序实现终端的各种功能,包括新版本应用程序升级包的下载。
  
4.1 终端用户引导程序设计

  
终端用户引导程序是基于文件系统的思想来设计的。终端的应用程序代码存放在LPC2124的Flash存储器中,终端正常运行时,MCU不停地从Flash中读取指令。如果对应用程序升级,即对应用程序占用的Flash存储器扇区进行擦除和再编程,显然执行Flash编程的代码占用的Flash扇区不能被擦除,那么升级程序的代码只能用单独的扇区存放,升级程序的执行可由应用程序调用,也可作为单独的程序执行。由于LPC2124的IAP代码采用16位Thumb指令集,执行IAP的过程中应禁止或者关闭中断。如果将升级程序采用应用程序调用的方式来设计,会增加应用程序设计的复杂性,升级的可靠性较差。LPC2124复位后,由于Boot程序总是从Flash的0地址读取指令,所以升级程序代码放在起始扇区内,设计为用户引导程序的一部分,而用户引导程序总是不被修改的。如果升级过程失败,MCU复位后应用程序可以重新升级,增强了升级的可靠性。
  
终端用户引导程序在系统上电后执行。首先它检查应用程序升级标志和版本号。当检查到升级标志置位且出现新版本号时,从AT45DB081B中读取应用程序升级包,然后执行LPC2124的Flash编程动作,实现对应用程序的升级。升级任务完成后,清除升级标志和更新应用程序版本,最后转移到应用程序入口并执行应用程序代码。引导过程流程如图3所示。

  
4.2 终端应用程序设计

  
终端应用程序负责完成终端的数据采集、更新、扫描,并上报告警事件,控制现场执行机构,执行前置机的远程命令及保存各种历史数据等。前置机的远程命令包括读/写终端命令、中继命令和远程升级命令。当终端接收到前置机的远程升级命令后,终端分析升级命令帧,读取升级包信息,包括包总长度、包校验码、帧序号和帧校验码,然后应答前置机并请求发送后继数据帧,终端对后继数据帧进行校验,校验正确则应答成功和接收下一帧数据,否则应答失败并要求终端重发。连续5次重发失败,则认为网络通信质量差而取消当前升级操作,保存成功接收到的帧号和数据校验和以备续传。应用程序升级包按帧的方式通过GPRS Modem,由前置机下载到终端,并保存到终端的AT45DB081B Flash存储器。下载成功后,置位升级标志和记录升级包版本号,以备用户引导程序升级。
  
升级包的下载过程可看成是数据的传输过程,应用程序可同步实现终端的其他各种功能,不影响终端的正常运行。应用程序升级包下载成功后,终端进行必要的现场保存并主动复位,从而执行用户引导程序升级的最后一步——Flash编程。另外,也可在终端里配置升级时间,避开终端任务重负荷阶段,使得升级过程对终端正常工作的影响降低到最小。
  
应用程序升级包的下载流程如图4所示。

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

网站地图

Top