首页 基于ARM的IAP在线及远程升级技术

基于ARM的IAP在线及远程升级技术

举报
开通vip

基于ARM的IAP在线及远程升级技术 第28卷第2期 2008年 2月 计算机应用 Computer Applications Vo1.28 No.2 Feb.2008 文章编号:1001—9081(2008)02—0519—03 基于 ARM的 IAP在线及远程升级技术 姜晓梅 ,李祥和 ,任朝荣 ,姚 明 (1.信息工程大学 信息工程学院,郑州 450002; 2.中国电子设备系统工程公司研究所,北京 100039) (jxmdp61096_2007@sina.com) 摘 要 :本文在阐述 In—Applic...

基于ARM的IAP在线及远程升级技术
第28卷第2期 2008年 2月 计算机应用 Computer Applications Vo1.28 No.2 Feb.2008 文章编号:1001—9081(2008)02—0519—03 基于 ARM的 IAP在线及远程升级技术 姜晓梅 ,李祥和 ,任朝荣 ,姚 明 (1.信息工程大学 信息工程学院,郑州 450002; 2.中国电子设备系统工程公司研究所,北京 100039) (jxmdp61096_2007@sina.com) 摘 要 :本文在阐述 In—Application Programming(1AP)⋯技术原理的基础上,以 LPC2138为平台 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 并实现了嵌 入式微处理器 ARM在线及远程升级方案。该方案方便快捷,摒弃了传统升级之前需要打开设备手工安装跳线等繁 琐过程 ,并解决了升级过程意外中断、远程升级传输误码等关键技术问题。 关键词 :在应用编程;ARM;启动装载程序 中图分类号:TP311 文献标志码 :A IAP online upgrade and teleupgrade resolvent based on ARM JIANG Xiao—mei ,LI Xiang—he ,REN Zhao—rong ,YAO Ming (1.College ofInformation and Engineering,PLA Information Engineering University,Zhengzhou Henan 450002,China; 2.China Electronical Equipment System Engineering Corporation Communications Institute,Be ng 100039,China) Abstract:After introducing IAP technology,the on·line upgrade and teleupgrade resolvent of ARM microprocessors were given based on LPC2138. Accidental interruption and transmission error during upgrade were settled in this paper、 The upgrade technique in the paper is more convenient and fast,and has practical application value in the ARM products. Key words:IAP;ARM;BootLoader 0 引言 在应用编程(IAP)技术为系统在线升级和远程升级提供 了良好的解决方案,也为数据存储和现场固件的升级都带来 了极大的灵活性。通常可利用芯片的串行 口接到计算机的 RS232口、通过现有的 Internet或、无线网络或者其他通信方 式很方便地实现在线以及远程升级和维护,如图 1所示。 o 调制解 调设备 计算机 图1 在线及远程升级 本文将以飞利浦公司的 LPC2138系列 ARM7芯片为平 台,阐述 IAP的原理、在线升级的实现方案及其优化。该方案 解决了升级过程意外中断、远程升级传输误码等关键技术问 题,避免了传统固件升级需要更换主机、主板或芯片等问题, 节约了人力和资金等资源,已应用在实际系统中并受到用户 好评。 1 IAP的原理 1.1 飞利浦 LPC2138芯片简介 LPC2138芯片是基于一个支持实时仿真和嵌入式跟踪的 32/16位 ARM7TDMI.STM CPU的微控制器,并带有 32 kB的 静态 RAM以及512 kB的Flash存储器,采用冯 ·诺曼结构统 一 寻址。128位宽度 的存储 器接 口和加速结 构使 其片 内 Flash和内部静态 RAM能够以同样高的速度进行数据的读 取。因此,可以把程序代码直接在片内 Flash中运行,而不影 响速度。 1.2 IAP编程原理 OxFFFFFFFF 0x80000000 lAP程序入口Ox7FFFFFF0 0x40008000 0x40000000 ,0x00080000 l 5 。 12 .. k B~ 。。 jOxO007DO00 内非易失、 性存储器 I 0x0000000O 片内静 固Q(~bootloa, 代码 存储器重 新映射 图2 LPC2138存储结构及存储器重新映射 Boot装载程序是 ARM芯片出厂时固化在内部的一段代 码,它控制芯片复位后的初始化操作。支持 IAP功能芯片的 Boot装载程序 中包含了 IAP代码。LPC2138的 Boot装载程 序在出厂时固化在地址 OxOOO7DO00到 OxO0080000这 12 kB 的范围内(如图2所示 )[2D3 。ARM为了解决不同系列芯 片在实现 IAP功能时调用 IAP函数的入 口地址相同的问题, 引进了地址重映射 』】 的概念。即在芯片复位后 ,把固化 在 片内 Flash高端 地 址 (LPC2138为地 址 0x0OO7D000到 0x00080000)的 Boot代码映射到更高的地址 Ox80000000以下 12 kB处,这 12 kB称为 Boot Block 。Boot Block的最低 64字节为中断向量 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ,又被重新映射 到芯片的最低地址 收稿日期:2007—08—30;修回日期:2007—11—15。 基金项目:国防科研基金。 作者简介:姜晓梅(1977一),女,黑龙江五常人,工程师,硕士研究生,主要研究方向:通信工程; 李祥和(1957一),男,江苏泰州人,教授 , 主要研究方向:通信工程; 任朝荣(1968一),女,河北邯郸人.高级工程师,主要研究方向:保密通信; 姚明(1963一),男,福建厦门人,高级工 程师,主要研究方向:保密通信。 维普资讯 http://www.cqvip.com 520 计算机应用 第28卷 0xO0000000处,最低地址0xO0000000开始的64 B则存储用 户的有效中断向量。经过这样的地址重新映射后,IAP代码 的入口就位于 0x7ffffffO处,Boot Block地址范围内(如图2所 示 )。 用户调用 IAP对 Flash操作的过程如图3所示。首先在 用户代码中初始化 IAP入口指针地址。然后就可以通过调用 Boot Block中的 IAP代码对 FLASH进行擦除或写入的操作。 IAP代码操作片内 Flash是以“扇区”为单位进行 的,因此必 须熟悉片内 Flash的扇区分布。 IA曜 序入口 中断向量 图 3 调用 IAP操作 Flash过程 由于 IAP代码位于 Boot区内,所以 IAP命令不允许对 Boot扇区执行写/擦除操作。而且 ,用户需要控制 自身代码量 的大小及代码定位,不能够出现 Flash数据区和 Flash代码区 重叠的现象。如果数据 区和代码区重合,就有可能会破坏系 统的代码空间,造成系统死机或崩溃。IAP程序会使用片内 RAM空间的顶部 32 B,因此在程序设计时要避免使用这块地 址空间。可以在启动代码 Startup.S文件中的 InitStack函数 内调整各个模式的堆栈空间位置。 InitStack ;设置系统模式堆栈 MSR CPSR — c,#Oxdf LDR SP. =StackUsr一 32; //避免使用片内RAM的顶部 32 B MOV PC,R0 1.3 IAP编程函数接 口 复位后中断向量被激活,跳转到 Boot Block装载程序 的入口。IAP程序是 Thumb代码,位 于地址 0x7FFF FFFO。 在 ARM 系统中实现状态转换的指令是“BX Addr”,目标地址 Addr的最低位(bitO)仅用来确定最终状态,实际的“目的地 址 =Addr&0xFFFF FFFE”。在调用 IAP函数时,不仅要实 现跳转而且还要完成状态转换。IAP的功能可用下面的 c代 码 来调用。 1)定义 IAP程序的入口地址(由于 IAP地址的第0位是 l,因此,当程序计数器转移到该地址时会引起 Thumb指令集 的变化)。 #define IAP — LOCATION 0x7FFFFFF1 2)定义数据结构或指针。 unsigned long command[5]; unsigned long result[2]; 用来传递函数调用时的参数,参数不同决定了不同的功 能 ,比如写入或擦除。 3)定义函数类型指针。 Typedef void( IAP)(unsigned int[],unsigned int[]); lAP iap — entry; 4)设置函数指针。 iap — entry =(IAP)lAP—LOCATION; 对函数类型指针初始化,指 向 IAP在 Boot Block中的入 口地址 。 5)调用 IAP。 lap entry(command,result); 2 LPC2138在线升级方案设计与加固 2.1 在线升级程序 FLASH分区存储 升级过程从结构上将 Flash记忆体映射为两个存储体, 当运行一个存储体上的程序时,可对另一个存储体进行擦除、 读取、写入重新编程操作,之后将程序从一个存储体转向另一 个。(如图4所示)主程序区从 0xO0003000低地址开始,存放 用户代码。升级区从 0x00080000高地址开始,存放实现升级 功能的代码。在主程序接收到升级命令后自动跳转到升级区 执行升级功能,接收新的主程序代码并写入主程序的存储区 域。在升级完毕后升级区程序自动跳转到主程序区执行新的 用户主程序。 升级区 升级 区 / 主程序区 )跳转 Boot区 Boot区 图 4 升级方案 2.2 在线升级抗掉电设计 在进行升级的过程中,难免会出现突然掉电、传输误码等 各种干扰导致升级失败,所以必须有一套可靠的机制来避免 此类情况。 对于升级过程突然掉电情况,可以通过设计 Boot引导区 来保证系统再次加电后正常运行 (如图 4所示 )。程序设计 时把最低地址的存储区0xO0000000到 0xO0002000定为引导 区,即 Boot区。程序在任何时候都不能对 Boot区的程序进行 擦除及写入操作。在正常情况下 Boot区引导主程序区的程 序。在进入升级程序入口处通知 Boot程序引导升级 区,在升 级成功后,升级区程序通知 Boot区程序“升级成功”引导主程 序区程序。这样 ,升级过程意外 中断后 ,当再次加 电时 Boot 区会识别上次升级失败,并能够引导升级区程序。直到升级 成功完成 ,Boot区才会引导主程序实现升级后用户功能。 2.3 在线升级抗误码设计 由于程序升级过程传输的数据是要运行的代码,所以很小 的传输错误都会造成升级后系统瘫痪。因此更要重视传输过程 中的误码情况,可以采用带 CRC 校验的通信协议来解决。 ARM 目标代码 Intel Hex_4 式来保存。Intel Hex文件是 文本行的 ASCII文件,存放了物理程序存储器中的目标代码 的映象,包括数据长度、数据烧写地址 ,以及代码数据等内容。 因此,升级过程的通信协议可 以采用面 向字符 的 SLIP_4 完 成。设计帧格式如下: C0 Type length content CRC CO (1字节) (1字节) (1字节) (1ength字节) (2字节) (1字节) OxG0分别是 SLIP协议的帧头和帧尾。Type是当前帧的类 型。Type为OxFF表示该帧是升级命令帧,收到该帧的设备要进 入升级功能代码区准备完成升级任务;Type为0xO0表示该帧是 数据帧,传输的是升级代码的内容;Type为OxFO表示该帧是传输 结束帧,表示升级代码传输完成;Type为OxOF表示该帧是 CRC 校验错误帧,需要重传;Type为OxAA表示该帧是 CRC校验正确 帧。计算机主机或远程网络端在发送一帧数据后等待10 ms,若 收到CRC校验正确帧则继续发送下一帧;若等待超时没有受到 回应帧,则重新发送,三次等待超时则认为待升级设备或网络没 有准备好,终止发送;若收到CRC校验错误帧,则重新发送;同一 帧发送过程连续三次收到CRC校验错误帧,则认为网络不通或 设备故障,终止升级过程。 . F 0 0 O 0 啪 ㈣ 啪 ∞ 鲫 ∞∞ 7 0 O 0 【二 0 0 O 0 圯 0 0 O 0 圯 0 0 O O h h h h 维普资讯 http://www.cqvip.com 第2期 姜晓梅等:基于 ARM的IAP在线及远程升级技术 521 2.4 在线升级方案流程 在线升级方案的流程如 图5所示。发送端可以由计算 机、远程网络端或专用的升级发送设备来实现。接收端是被 升级的设备(包含 ARM芯片)。 首先由发送端向接收端发送升级命令帧,发送完毕后启动 发送端 升级开始 发送升级命令帧 等待计时开始 收cRc帧超 ] 嚣 厂 砀潞秉 否 发送数据帧 等待计时开始 是 嚣堡堡 笙 垂二= ——— 否 发送升级结束帧 等待计时开始 收CRC帧 是 否 查 /自 痈 — 发送cRc错误 发送CRC正确 计时器,若超时并且没有收到CRC校验正确应答帧,则重新发送 升级命令帧,超时三次则终止升级程序。若收到CRC校验正确 应答帧则发送数据给接收设备,并遵循没有收到正确应答帧超时 三次终止升级程序的协议。数据发送完毕后,发送端向接收端发 送升级结束命令帧,在收到正确应答帧后升级成功。 接收端 系统复位 I是 一 程序跳转到主程序区 I 串口初始化 画 收到升级命歪二> ———l - — — 一 丽 至 面两葫注煎=== 二l=墨 升级标志改成失败程序跳转到升级区 否 发送CRC错误 发送CRC正确 串口初始化 到升级 是 接收数据帧 ——厂 氯矗 是 否 蕉鲎 笪堡 · 夏 菊三五丽碉■ 是 收到结束命 ~ 瘫 商 是 升级标志改为 “成功” 否 的数据 写入 Flash =『_ 否 程序跳转到主程序区 图5 在线升级流程 接收端设备的引导区程序首先判断“升级标志”是否为成 功,如果是“成功”则跳转到主程序运行。主程序通过串口接 收发送端的升级命令,如果接收到的升级命令帧通过 CRC校 验则修改“升级标志”为“失败”并跳转到升级区。注意,主程 序不向发送端发送任何应答信息,只是完成跳转功能。跳转到 升级区后,由升级区接收发送端因没有收到 CRC正确应答帧 并超时发送的第二个升级命令帧。当升级区程序正确接收到 发送端的第二个“升级命令帧”后按照通信协议顺序接收数据 帧和“升级结束帧”。升级成功后修改“升级标志”为“成功”, 以便下次加电后引导区正确引导主程序区的程序。最后升级 区程序跳转到主程序区执行升级后的用户代码。如果加电复 位后引导区程序判断“升级标志”为失败,则表示上次升级失 败,引导区程序直接跳转到升级区完成升级功能。本文的升级 方案是用的串口作为通信传输的接口,也可以采用网口、USB 等其他通信接口来实现,实现方案与本文设计类似。 3 结语 升级结束 升 级 区 随着嵌入式技术的发展,人们不仅对系统的智能化、小型 化的要求也越来越高,产品能否升级也成为一个重要的指标。 基于ARM结构的微处理器以其高性能、低功耗、低成本等方 面的优势被广泛应用于各种电子产品,特别是一些高端的嵌 入式控制应用中(如移动电话、工业控制 、网络通信等)。 参考文献: [11 周立功,张华.深入浅出 ARM7[M].北京:北京航空航天大学出 版社,2005:426—438. [2] LPC2131/2132/2138 User Manual[EB/OL].【2007—02—201. http://www.zhouligong.120111、 [3] 连入INTERNET网络[EB/OL].I2007~02—161.http://mirror. cc.shu.edu.ca. [4] 实用技术参考[EB/OL].I2007—02—15].hItp://yahoo.c0m. 引 导 区 主 程 序 区 一、 ● r ● J l _、 ● ● ● ● , ● ● ● \ 、 ● ● ● ● ● ● ● ● ● , ● 、 一/ , , ● ● ● ● ● ● ● ● ● , / , 维普资讯 http://www.cqvip.com
本文档为【基于ARM的IAP在线及远程升级技术】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_333085
暂无简介~
格式:pdf
大小:182KB
软件:PDF阅读器
页数:3
分类:互联网
上传时间:2012-05-16
浏览量:69