基于iap和keilmdk的远程升级设计

基于iap和keilmdk的远程升级设计

ID:1287108

大小:166.50 KB

页数:21页

时间:2017-11-09

基于iap和keilmdk的远程升级设计_第1页
基于iap和keilmdk的远程升级设计_第2页
基于iap和keilmdk的远程升级设计_第3页
基于iap和keilmdk的远程升级设计_第4页
基于iap和keilmdk的远程升级设计_第5页
资源描述:

《基于iap和keilmdk的远程升级设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于IAP和KeilMDK的远程升级设计写在前面:三个周之前,我突然想写一个远程升级的程序。那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知。我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题。三个周之后,我用自己设计的方法实验了50多次,无一例升级失败。三个周来,遇到了很多的不解、困惑,甚至是想放弃,但我现在想说的是:很多未知的困难会挡在我们面前,我们会感觉毫无头绪甚至觉得毫无出路忍不住要放弃,但多坚持一下,那些困难不但能烟消云散还能带给我们进步。本设

2、计是基于LPC2114和KeilMDK(V4.10),但所有支持IAP的处理器都可借鉴本方案,重要的是思想,而不是用什么。0引言在应用编程(IAP)技术为系统在线升级和远程升级提供了良好的解决方案,也为数据存储和现场固件的升级都带来了极大的灵活性。通常可利用芯片的串行口接到计算机的RS232口、通过现有的Internet或、无线网络或者其他通信方式很方便地实现在线以及远程升级和维护。本文以NXP的LPC2114ARM微处理器为平台,以KeilMDK为开发工具,阐述IAP的原理、Flash的划分、分散

3、加载机制、中断重映射以及在线升级的实现方案及其优化。本方案使用多种校验技术,最大限度的保障传输数据的正确性;使用bootloader机制,即使因意外事件(断电,编程Flash失败等)造成升级失败后,程序也能返回到升级前的状态。1LPC2114的Flash规划1.1扇区描述LPC2114共有128KB片内Flash,共分为16个扇区,分别为0扇区~15扇区,每个扇区为8KB存储空间。其中第15扇区出厂时被固化为BootBlock区,控制复位后的初始化操作,并提供实现Flash编程的方法。所以用户可用的

4、Flash空间只有120KB。IAP程序固化于BootBlock中,IAP操作是以扇区为单位,并占用片内RAM的高32字节。下表列出LPC2114器件所包含的扇区数和存储器地址.表1.1LPC2114Flash器件中的扇区1.2Flash的扇区划分本设计将Flash划分为四个区,扇区0存放跳转程序和升级引导程序(Bootloader)。分站上电后执行跳转程序,跳转到用户程序处。用户程序运行过程中,如果接收到升级指令,会从用户程序跳转到引导程序区(Bootloader),接收新程序数据包,完成Flas

5、h编程并跳转到新程序区执行程序。扇区1~扇区7为程序存储低区;扇区8~扇区13为程序存储高区;扇区14存放当前程序运行区域标志,如果当前程序运行在高区,该标志区的最低四个字节为0x00010000,如果当前程序运行在低区,该标志区的最低四个字节为0x00008000。2IAP的原理与软件设计2.1IAP的原理IAP函数是固化在微处理器内部flash上的一些函数代码,最终的用户程序可以直接通过调用这些函数来对内部flash进行擦除和编程操作。LPC2114微处理器的内部flash有一个块称为BootB

6、lock,位于flash的顶端,可供调用的IAP函数就位于该块中。上电后BootBlock被映射到内部地址空间的顶端,同样IAP函数人口地址也被映射到地址0x7ffffff0处。用户可通过跳转到该地址来调用相应的lAP函数。2.2IAP命令对于在应用编程来说,应当通过寄存器r0中的字指针指向存储器(RAM)包含的命令代码和参数来调用IAP程序。IAP命令的结果返回到寄存器r1所指向的返回表。用户可通过传递寄存器r0和r1中的相同指针重用命令表来得到结果。参数表应当大到足够保存所有的结果以防结果的数目

7、大于参数的数目。参数传递见图2-1。参数和结果的数目根据IAP命令而有所不同。参数的最大数目为5,由“将RAM内容复制到Flash”命令传递。结果的最大数目为2,由“扇区查空”命令返回。命令处理程序在接收到一个未定义的命令时发送状态代码INVALID_COMMAND。IAP程序是thumb代码,位于地址0x7FFFFFF0。图2-1IAP的参数传递表2-1描述了IAP的命令。表2-1IAP命令汇总IAP命令命令代码描述准备编程扇区50该命令必须在执行“将RAM内容复制到Flash”或“擦除扇区”命令

8、之前执行。这两个命令的成功执行会导致相关的扇区再次被保护。该命令不能用于boot扇区。要准备单个扇区,可将起始和结束扇区号设置为相同值。将RAM内容复制到Flash51该命令用于编程Flash存储器。受影响的扇区应当先通过调用“准备写操作的扇区”命令准备。当成功执行复制命令后,扇区将自动受到保护。该命令不能写boot扇区。擦除扇区52该命令用于擦除片内Flash存储器的一个或多个扇区。boot扇区不能由该命令擦除。要擦除单个扇区可将起始和结束扇区号设定为相同值。扇区查

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。