首页 新闻资讯 技术资料 论坛 网站地图
嵌入式硬件 开发工具 综合电子技术 嵌入式开发新闻 软件开发 医疗电子 计算机外设
电子元器件搜索:
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
维库电子市场网是知名的电子元器件交易网站, 为电子生产企业提供IC库存和技术资料查询服务。
位置: 首页 > 详细信息
  基于LPC2124的一个远程系统软件升级方案(2)
出处: 时间: 2007-11-01
AT45DB08081B,8Mb串行Flash存储器,兼有ROM的掉电数据保存和RAM的读/写速度,最快支持20MHz的时钟频率,擦写次数达10000次,内置2个264字节SRAM缓冲器,使得对主存储体的编程可以连续进行,省去编程等待时间。AT45DB081B采用CASON-8封装,支持2.5~3.6 V低电压,操作功耗低,支持模式O和3的SPI总线接口,与MCU接口简单,稳定可靠,非常适用于数字语音、图像、程序代码和数据的存储应用中。在本设计中采用模式0与LPC2124通信,速度可达MCU主频的1/8。

  GPRS模块使用Wavecom公司生产的Q2406B,双频GPRS/GSM模块(EGSM900/1800 MHz或EGSM900/l900 MHz),内置TCP/IP,与标准AT指令完全兼容;其设计开发符合ETSI GSM Phase 2+标准。

  3 IAP功能的软件设计

  3.1 IAP编程接口

  LPC2124的IAP程序位于Boot扇区,复位后整个Bool扇区被映射到存储地址Ox7FFFFE000~Ox7FFFFFFF处;而IAP的入口地址为0x7FFFFFFFo,程序为Thum
 
b代码。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所示。

关闭】 【打印
相关专题  
开发工具
消费电子
存储器
应用产品
电源系列
医疗电子
数控系统
嵌入式硬件
SOPC
安防产品
软件开发
传感控制
汽车电子
接口电路
工业控制
计算机外设
CPLD/FPGA
嵌入式开发新闻
嵌入式软件
综合电子技术
通信产品
测试测量
AD/DA
IC设计
军工/航空航天

© 2007 百斯嵌入式开发网 网站地图