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

随着电子技术、通信技术以及计算机技术的迅猛发展,嵌入式系统已经广泛应用于各领域,各种行业对嵌入式设备的系统功能、性能以及规模的要求都在日益提高,开发者必须能够针对客户的需求及时对系统进行维护和升级,以延长系统的使用周期,改善系统的性能。目前远程升级方式主要有:采用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存储器的要求。


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

台湾新竹 – 2024年4月23日 – 著名的微控制器供货商新唐科技公司,与全软件开发生命周期提供跨平台解决方案的全球软件公司Qt Group宣布深化合作,扩展新唐科技人机界面(HMI)平台支持「Qt for MCUs」...

关键字: 微控制器 嵌入式系统 MCU

随着物联网、嵌入式系统以及微控制器技术的飞速发展,微控制器已成为众多智能设备和系统不可或缺的核心组件。而微控制器的正常工作,离不开烧录器的精准操作。C8051F021烧录器,作为一款高效、稳定、易用的微控制器烧录工具,在...

关键字: c8051f021烧录器 联网 嵌入式系统

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

兰州生物制品研究所有限责任公司是一家历史悠久的生物制剂研发生产企业,是我国生物制品行业的标杆。生物制品的产品形式包含西林瓶、安瓿瓶、“伴侣装”(一水一苗)、预充针等多种方式[1],笔者在兰州生物制品研究所有限责任公司工作...

关键字: 中盒机 工作原理 常见故障

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

【2024年3月25日,德国慕尼黑和瑞典瓦尔贝格讯】不同汽车的独特性给汽车零部件供应商和OEM厂商等带来了挑战,因为每辆车的驾驶方式、驾驶地点、驾驶者、设计、用途以及道路和交通状况都是独一无二的。为保证每辆汽车都能正常运...

关键字: AI 机器学习 嵌入式系统
关闭
关闭