嵌入式设备远程在线升级技术的研究_第1页
嵌入式设备远程在线升级技术的研究_第2页
嵌入式设备远程在线升级技术的研究_第3页
嵌入式设备远程在线升级技术的研究_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 20 卷第 9 期电子设计工程2012 年 5 月Vol.20No.9Electronic Design EngineeringMay. 2012嵌入式设备远程在线升级技术的研究黄绳雄, 张荣芬(贵州大学 理学院, 贵州 贵阳 550025)摘要: 介绍了嵌入式系统远程在线升级的工作原理 ,并详细阐述了系统硬件平台及软件的设计原理 ,提出了基于 In-ternet 通信方式的嵌入式系统远程在线升级的方案 ,并对该方案进行了测试 ,测试结果表明 :该方案具有较高的升级成功率和较快的升级速度。关键词: 在线升级; TCP 通信协议; 嵌入式系统; 在应用编程中图分类号: TN8文献标识码: A

2、文章编号:16746236(2012)09-0172-03Research of remote online update for embedded deviceHUANG Sheng-xiong, ZHANG Rong-fen(College of Science of Guizhou University, Guiyang 550025, China)Abstract: The working principle of remote online update for embedded system is presented. The hardware platform of the sy

3、stem and the design principle of software are introduced. This paper presents the scheme of remote online update for embedded system which is based on the communication mode of Internet and this scheme was tested, the result shows that this scheme has a high rate of success for update and a fast spe

4、ed for update. Key words: online update; TCP protocol; embedded system; IAP随着电子技术、 通信技术以及计算机技术的迅猛发展,嵌入式系统已经广泛应用于各领域,各种行业对嵌入式设备的系统功能、性能以及规模的要求都在日益提高,开发者必须能够针对客户的需求及时对系统进行维护和升级,以延长系统的使用周期, 改善系统的性能。 目前远程升级方式主要有: 采用 Boot 加双 Loader 的结构式设计实现系统的完整升级 、 基于 TFTP (Trivial File Transfer Protocol) 协议的 ARM 软件远程更新

5、系统等。 笔者对基于 LM3S6965 微控制器的嵌入式系统软件远程在线升级技术进行研究,并提出了一种已成功验证的在线升级实现方法,该方法对减少嵌入式设备的维护成本、提高设备的工作效率具有很重要的现实意义。1 嵌入式系统功能及在线升级原理1.1嵌入式系统的功能嵌入式系统的运行主要分为工作模式和升级模式,其中工作模式为默认模式,工作模式指设备正常工作状态,嵌入式系统按预定的程序完成相应的测控任务, 并且通过internet、GPRS 等方式向监控管理中心上报监测参数。 升级模式是指嵌入式处于升级状态,包括接收服务器发送的程序代码,以及在 flash 区域固化程序代码等1。1.2远程在线升级原理整

6、个升级系统主要由服务器和远程终端组成,其中远程终端包括基于 ARM 内核的嵌入式控制芯片和 Modem 模块 。二者之间通过 RS232 总线连接 , 服务器与远程终端通过 Internet 进行通信。 系统结构如图 1 所示。图 1系统结构图Fig. 1Structure of system服务器作为软件升级任务的主动发起者,首先向嵌入式系统发送升级命令,嵌入式系统在硬件启动后,首先执行引导程序 Bootloader 进行一系列的初始化操作 , 同时选择执行升级控制程序,待服务器接收到嵌入式系统的确认升级回复后即开始发送升级程序代码,在发送升级程序代码前,服务器会将这些代码拆分成固定长度的多

7、个数据单元,以每个数据单元为核心组成数据包 (数据包内容包含数据包头标志、命令头、包序列 、数据单元 、CRC 校验码 、数据包尾标志 、总包数等)2,嵌入式系统每接收到一个数据包,都将返回确认信息,若数据包校验无误 ,则在规定的 FLASH 区域进行旧程序的擦除以及新程序的复制,从而达到远程终端的嵌入式系统软件的在线升级目的。 在线升级实现流程如图 2 所示。2 嵌入式系统在线升级的设计2.1硬件平台笔者设计的嵌入式系统,其硬件结构主要包括一个片外收稿日期:2012-03-11稿件编号:201203090EEPROM、微处理器 LM3S6965 及相应的接口电路。 LM3S6965基金项目:

8、贵州省科学技术基金(黔科合 J 字20102134 号)作者简介:黄绳雄(1986),男,福建福州人,硕士研究生。 研究方向:电路系统设计自动化。172黄绳雄, 等嵌入式设备远程在线升级技术的研究图 2在线升级实现流程Fig. 2Procedures of online update处理器是 Luminary Micro 公司生产的 Stellaris 系列微控制器,该芯片内部具有 256 kB FLASH 和 64 kB SRAM,LM3S6965芯片能够提供高效的性能,广泛的集成功能,适用于各种关注成本并明确要求具有过程控制以及连接能力的应用方案,此微处理器是针对工业的应用方案而设计的,这

9、些方案包括远程监控、测试和测量设备等。2.2嵌入式系统软件设计2.2.1Bootloader 工作原理Bootloader 位于 FLASH 的起始处 , 主要是用来启动系统 ,并且装载用户程序执行 ,如果没有 Bootloader,硬件启动成功后 ,将直接运行用户应用程序 。 反之 ,Bootloader 的启动代码将先被执行,进行一系列的初始化操作后,根据预先设定的条件,选择执行用户应用程序或升级控制程序。Bootloader 包含两种不同的操作模式 :“启动加载 ” 模式和“下载” 模式。启动加载模式:这种模式也称为“自主”模式 。也就是 Bootloader 从目标机上的某个固态存储设

10、备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。 这种模式是 Bootloader 的正常工作模式 。 下载模式 : 在这种模式下, 目标机上的 Bootloader 将通过串口连接或网络连接等通信手段从 PC 下载文件 ,比如:下载内核映像和根文件系统映像等。 从主机下载的文件通常首先被 Bootloader 保存到目标机的 RAM 中,然后再被 Bootloader 写到目标机上的 FLASH 类固态存储设备中3。 Bootloader 工作原理流程图如图 3 所示。图 3 Bootloader 工作原理流程Fig. 3Procedures of working princ

11、iple for Bootloader2.2.2FLASH 存储器编程及升级流程远程终端的升级主要是对 ARM 芯片内部的 FLASH 存储器的原始数据进行擦除以及新数据的下载的过程。 本研究采用 IAP(In-Application Programming)技术进行 FLASH 编程,在应用编程 IAP 是从结构上将 FLASH 存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个;同时还可以在应用程序控制下, 对程序某段存储空间进行读取、擦除和写入操作。IAP 的实现极为灵活,可利用单片机的串行口接到计算机的 RS232 口 ,

12、通过专门设计的固件程序来编程内部存储器 , 可以通过现有的 Internet 或其他通讯方式很方便地实现远程升级和维护4。为了实现升级将 ARM 芯片内部的 FLASH 存储器划分为 Bootloader 区 (程序启动区 )、升级处理区 、用户代码 0 区 、用户代码 1 区。 如图 4 所示。图 4 FLASH 内部划分Fig. 4Internal division of FLASH启动区主要用于存放系统初始化代码以及引导程序Bootloader,当 CPU 复位后 ,自动执行该段程序代码 ,该程序的主要功能是读取片外 EEPROM 中相关标志,判定嵌入式系统的运行模式 ,若是工作模式 ,

13、则根据片外 EEPROM 中其他标志,跳转到规定的应用程序区的首地址;若是升级模式,则进入软件升级处理部分的首地址。升级处理区主要是负责接收程序代码数据包、 校验、固化程序代码等 ;当升级完毕后 ,将修改片外 EEPROM 中相关标志,指示 CPU 复位后的运行模式和复位后应运行的程序区。用户代码 0 区和用户代码 1 区用于交替存放当前用户代码以及升级代码 ,若当前用户代码放在 0 区 ,则将接收到的升级代码存放在 1 区,此时用户代码 1 区便成为当前终端指向的用户程序 ,而用户代码 0 区则用于存放下次升级时的新代码。远程终端上电后首先进入 Bootloader 区进行系统的初始化 ,接

14、着终端从片外的 EEPROM 中读取升级配置 ,包括升级标志位 ,已收到的最后一个数据包的 ID 等 ,若终端处于升级状态,则发出向服务器索要升级数据的指令,此时指令中将包含终端上次已接收到的最后一个数据包的 ID,这样可以避免服务器重复发送数据包, 实现续传的功能。 终端通过 Internet 接收数据包并对数据包进行校验判断以保证接收到正确的数据。 由于 FLASH 中进行编程的最小单位是页,当接收到的数据达到一页后 ,通过 IAP 进行编程 ,编程结束后将最后一条数据包的 ID 保存在 EEPROM 中, 所有升级数据发送结束并编程成功后,通过 IAP 指示 CPU 复位后应运行的应用程

15、序区域5。 具体的软件升级流程图如图 5 所示。3 系统测试本方案中的通信部分采用面向连接的 TCP (Transport Control Protocol)通信协议进行数据的传输 。 TCP 协议属于传输 层协议,提供 IP 环境下的数据可靠传输 ,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。 通俗说,它是事173电子设计工程2012 年第 9 期图 5软件升级流程图Fig. 5Procedures of software update先为所发送的数据开辟出连接好的通道,然后再进行数据发送,这样可以减少数据传输过程的出错率6。

16、利用 TCP 协议实现数据传输的部分代码如下:err_t APP_recv (void *arg , struct tcp_pcb *pcb , struct pbuf *p , err_t err) char Date3000; struct pbuf *pcopy=p; tAPPState *pState; pState = arg;pbuf_copy_partial(pcopy, Date,300,0);if(err = ERR_OK) & (p ! = NULL)GPIOPinWrite (GPIO_PORTE_BASE, GPIO_PIN_1,GPIO_PIN_1);Send_to_

17、memorizer( );GPIOPinWrite( GPIO_PORTE_BASE ,GPIO_PIN_1 , GPIO_PIN_1);Lcd_displaywhile(pcopy)tcp_write(pcb,jin,pcopy-len,TCP_WRITE_FLAG_COPY);pcopy=pcopy-next;pbuf_free(p);pbuf_free(pcopy);if(err = ERR_OK) & (p = NULL)tcp_arg(pcb, NULL);tcp_sent(pcb, NULL);tcp_recv(pcb, NULL);mem_free(pState);tcp_clo

18、se(pcb);return ERR_OK;根据以上程序, 利用 TCP&UDP 测试工具对本方案进行测试,测试结果如图 6 及表 1 所示。图 6 测试结果Fig. 6 Test results表1测试报告Tab. 1Test report测试次数代码容量/kB成功次数失败次数5036.55005033.25004结论通过数百次的实验表明,本文提出的这种嵌入式远程升级的方案在利用 TCP 通信协议进行软件的远程升级时 ,具有较高的升级成功率,较快的升级速度,且代码容量的大小基本符合 FLASH 存储器的要求。参考文献:1 王田苗. 嵌入式系统设计与实例开发M. 北京:清华大学出版社,2002

19、.2 马丰玺,杨斌,卫洪春. 非易失存储器NANDFlash及其在嵌入式系统中的应用J.计算机技术与发展,2007,17(1):203-206.MA Feng-xi,YANG Bin,WEI Hong-chun. The non-volatile memory NANDFlash and the application in the embedded system J. Computer Technology and Development,2007,17(1): 203-206.3 季昱 ,林俊超 ,宋飞. ARM嵌入式应用系统开发典型实例M. 北京:中国电力出版社,2005.(下转第 17

20、7 页)174沈 勇, 等基于嵌入式 Web 的远程可控电源插座设计移植 Boa 的大致步骤如下:1) 从官方网站 () 上下载 Boa 源代码 ,解压;2) 根据硬件对 Boa 进行相应的配置 ,并交叉编译 ,编译器选用 arm-linux-gcc;3) 编译生成可在 ARM 上运行的 Boa 程序 ,将其和内核一起下载到 ARM 平台上运行;4) 将系统所需静态页面文件和 CGI 程序拷贝至相应的路径下。当 Web 服务器程序收到用户以 HTTP 协议的 GET 方式发 来的远程控制指令后 , 调用 CGI 程序 , 在 CGI 程序中用open(“/de

21、v/rcpo”, O_RDWR)语句打开设备文件 ,若成功 ,则将控制参数传递给 ioctl 函数的 cmd,控制对应的插座开关做相应动作。3 系统测试文中在嵌入式系统开发平台上实现,并制作了控制模块硬件,对电源插座进行了内部连线改装,使之远程可控。 搭建测试环境 , 对一台 220 V 供电工作的普通电扇进行远程控制,如图 5 所示。图 5系统测试环境Fig. 5System test environment用户用浏览器软件访问本系统,经登录认证后进入控制页面 ,如图 6 所示 。 点击 “开启 ”按钮后 ,电扇转动 ;点击 “关闭”按钮后,电扇关闭。 系统运行正常,响应及时。 测试表明,本

22、文设计是可行的、有效的。图 6系统操作界面Fig. 6System operation interface参考文献:1 陈乔云 ,贾金玲. 基于智能手机与PC机的智能家居系统设计 J. 电子设计工程,2009,17(9):25-26,29.CHEN Qiao yun,JIA Jin-ling. Design of smart home system based on intelligent mobile and computer J. Electronic Design Engineering,2009,17(9):25-26,29.2 方尔正,王燕. 嵌入式系统技术及其应用M. 哈尔滨 :哈

23、尔滨工业大学出版社,2008.3 丁苍峰,薛宁静,吕茂林. 嵌入式Web服务器的设计研究J.计算机工程与设计,2009,30(18):4188,4194.DING Cang -feng,XUE Ning -jing,LV Mao -lin. Design and research on embedded web server J. Computer Engineering and Design,2009,30(18):4188,4194.4 孙天泽 , 袁文菊 . 嵌入式设计及 Linux 驱动开发指南 M. 北京:电子工业出版社,2009.4结论文中设计了一种远程可控电源插座 , 在 ARM 嵌入式系统上构建嵌入式 Web 服务器 , 用户通过网络访问 Web 服务器,实现对电源插座的操作,进而远程控制与其相连的电器。本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论