当前位置:首页 > 单片机 > 单片机
[导读] 随着电子技术、通信技术以及计算机技术的迅猛发展,嵌入式系统已经广泛应用于各领域,各种行业对嵌入式设备的系统功能、性能以及规模的要求都在日益提高,开发者必须能够针对客户的需求及时对系统进行

随着电子技术、通信技术以及计算机技术的迅猛发展,嵌入式系统已经广泛应用于各领域,各种行业对嵌入式设备的系统功能、性能以及规模的要求都在日益提高,开发者必须能够针对客户的需求及时对系统进行维护和升级,以延长系统的使用周期,改善系统的性能。目前远程升级方式主要有:采用Boot加双Loader的结构式设计实现系统的完整升级、基于TFTP(Trivial File Transfer Protocol)协议的ARM软件远程更新系统等。笔者对基于LM3S6965微控制器的嵌入式系统软件远程在线升级技术进行研究,并提出了一种已成功验证的在线升级实现方法,该方法对减少嵌入式设备的维护成本、提高设备的工作效率具有很重要的现实意义。

1 嵌入式系统功能及在线升级原理
1.1 嵌入式系统的功能
嵌入式系统的运行主要分为工作模式和升级模式,其中工作模式为默认模式,工作模式指设备正常工作状态,嵌入式系统按预定的程序完成相应的测控任务,并且通过internet、GPRS等方式向监控管理中心上报监测参数。升级模式是指嵌入式处于升级状态,包括接收服务器发送的程序代码,以及在flash区域固化程序代码等。
1.2 远程在线升级原理
整个升级系统主要由服务器和远程终端组成,其中远程终端包括基于ARM内核的嵌入式控制芯片和Modem模块。二者之间通过RS232总线连接,服务器与远程终端通过Internet进行通信。系统结构如图1所示。


服务器作为软件升级任务的主动发起者,首先向嵌入式系统发送升级命令,嵌入式系统在硬件启动后,首先执行引导程序Bootloader进行一系列的初始化操作,同时选择执行升级控制程序,待服务器接收到嵌入式系统的确认升级回复后即开始发送升级程序代码,在发送升级程序代码前,服务器会将这些代码拆分成固定长度的多个数据单元,以每个数据单元为核心组成数据包(数据包内容包含数据包头标志、命令头、包序列、数据单元、CRC校验码、数据包尾标志、总包数等),嵌入式系统每接收到一个数据包,都将返回确认信息,若数据包校验无误,则在规定的FLASH区域进行旧程序的擦除以及新程序的复制,从而达到远程终端的嵌入式系统软件的在线升级目的。在线升级实现流程如图2所示。

2 嵌入式系统在线升级的设计

2.1 硬件平台

笔者设计的嵌入式系统,其硬件结构主要包括一个片外EEPROM、微处理器LM3S6965及相应的接口电路。LM3S6965处理器是Luminary MICro公司生产的Stellaris系列微控制器,该芯片内部具有256 kB FLASH和64 kB SRAM,LM3S6965芯片能够提供高效的性能,广泛的集成功能,适用于各种关注成本并明确要求具有过程控制以及连接能力的应用方案,此微处理器是针对工业的应用方案而设计的,这些方案包括远程监控、测试和测量设备等。

2.2 嵌入式系统软件设计

2.2.1 Bootloader工作原理

Bootloader位于FLASH的起始处,主要是用来启动系统,并且装载用户程序执行,如果没有Bootloader,硬件启动成功后,将直接运行用户应用程序。反之,Bootloader的启动代码将先被执行,进行一系列的初始化操作后,根据预先设定的条件,选择执行用户应用程序或升级控制程序。


Bootloader包含两种不同的操作模式:“启动加载”模式和“下载”模式。启动加载模式:这种模式也称为“自主”模式。也就是Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Boodoader的正常工作模式。下载模式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从PC下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中。Bootloader工作原理流程图如图3所示。


2.2.2 FLASH存储器编程及升级流程
远程终端的升级主要是对ARM芯片内部的FLASH存储器的原始数据进行擦除以及新数据的下载的过程。本研究采用IAP(In-ApplICation Programming)技术进行FLASH编程,在应用编程IAP是从结构上将FLASH存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个;同时还可以在应用程序控制下,对程序某段存储空间进行读取、擦除和写入操作。IAP的实现极为灵活,可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器,可以通过现有的Inte rnet或其他通讯方式很方便地实现远程升级和维护。
为了实现升级将ARM芯片内部的FLASH存储器划分为Bootloader区(程序启动区)、升级处理区、用户代码0区、用户代码1区。如图4所示。


启动区主要用于存放系统初始化代码以及引导程序Boofloader,当CPU复位后,自动执行该段程序代码,该程序的主要功能是读取片外EEPROM中相关标志,判定嵌入式系统的运行模式,若是工作模式,则根据片外EEPROM中其他标志,跳转到规定的应用程序区的首地址;若是升级模式,则进入软件升级处理部分的首地址。
升级处理区主要是负责接收程序代码数据包、校验、固化程序代码等;当升级完毕后,将修改片外EEPROM中相关标志,指示CPU复位后的运行模式和复位后应运行的程序区。
用户代码0区和用户代码1区用于交替存放当前用户代码以及升级代码,若当前用户代码放在0区,则将接收到的升级代码存放在1区,此时用户代码1区便成为当前终端指向的用户程序,而用户代码0区则用于存放下次升级时的新代码。
远程终端上电后首先进入Bootloader区进行系统的初始化,接着终端从片外的EEPROM中读取升级配置,包括升级标志位,已收到的最后一个数据包的ID等,若终端处于升级状态,则发出向服务器索要升级数据的指令,此时指令中将包含终端上次已接收到的最后一个数据包的ID,这样可以避免服务器重复发送数据包,实现续传的功能。终端通过Internet接收数据包并对数据包进行校验判断以保证接收到正确的数据。由于FLASH中进行编程的最小单位是页,当接收到的数据达到一页后,通过IAP进行编程,编程结束后将最后一条数据包的ID保存在EEP ROM中,所有升级数据发送结束并编程成功后,通过IAP指示CPU复位后应运行的应用程序区域。具体的软件升级流程图如图5所示。



3 系统测试
本方案中的通信部分采用面向连接的TCP(Transport Control Protocol)通信协议进行数据的传输。TCP协议属于传输层协议,提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送,这样可以减少数据传输过程的出错率。利用TCP协议实现数据传输的部分代码如下:


根据以上程序,利用TCP&UDP测试工具对本方案进行测试,测试结果如图6及表1所示。


4 结论

通过数百次的实验表明,本文提出的这种嵌入式远程升级的方案在利用TCP通信协议进行软件的远程升级时,具有较高的升级成功率,较快的升级速度,且代码容量的大小基本符合FLASH存储器的要求。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭