嵌入式终端断点续传网络升级方案的实现

上传人:cn****1 文档编号:496115537 上传时间:2023-12-31 格式:DOCX 页数:3 大小:12.90KB
返回 下载 相关 举报
嵌入式终端断点续传网络升级方案的实现_第1页
第1页 / 共3页
嵌入式终端断点续传网络升级方案的实现_第2页
第2页 / 共3页
嵌入式终端断点续传网络升级方案的实现_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《嵌入式终端断点续传网络升级方案的实现》由会员分享,可在线阅读,更多相关《嵌入式终端断点续传网络升级方案的实现(3页珍藏版)》请在金锄头文库上搜索。

1、嵌入式终端断点续传网络升级方案的实现摘要:本方案实现了一种以ST公司的STM32F103ZET为平台的嵌入式系统软件 远程升级方案,此方案以IAP技术为主要基础,通过移动数据网络对MCU (指代 STM32,下同)程序存储区进行实时更新,并支持断点续传,有效地保证了嵌入 式终端能够快捷、安全、稳定地进行固件远程升级。作为方案的技术支撑,本文 还对STM32程序存储区的结构、BOOTLOADER的设计及从BOOTLOADER到用户程 序的跳转过程等内容进行了详述。关键词:嵌入式;STM32;远程升级;断点续传1引言嵌入式终端因其灵活便利、性价比高、嵌入性强的特点,被广泛地应用在各 个场所和行业,

2、发挥着重要的作用。如今随着物联网的兴起和迅速普及,作为其 中不可或缺的一环,市场对嵌入式终端的要求也随之变得更加灵活和全面。嵌入 式终端实际应用过程中,无论是用户需求的变化,或是系统软件的修缮,均需要 对终端固件进行升级。而传统的升级方法,则是由工作人员到终端应用现场进行 开箱或拆机,将终端通过UART、J-Link、USB等方式连接电脑后进行固件烧写。 但由于嵌入式终端安装环境存在复杂多样的特点,这种升级方法不但人力成本和 物力成本高,效率低下,并且在某些应用环境下(如高空、有毒、辐射等)进行 人工升级还会对工作人员的人身安全产生威胁。通过移动数据网络(以下称为GPRS)对嵌入式终端固件进行

3、远程无线升级, 则不存在上述问题。GPRS具有无需布线、实时在线、流量计费、成本低廉的特点, 采用GPRS进行通信的的嵌入式终端,不仅能够缩减安装工作量,还大幅度降低 了终端的维护成本,只要终端安装地点在GPRS基站的覆盖范围内,即具备远程 升级固件的客观条件。本文将以ST公司的STM32F1xx系列为平台,介绍以IAP 技术为主要基础的嵌入式终端无线升级方案的实现。本方案还针对偏远区域无线 网络稳定性差、误码率高的问题,设计了严密的数据校验和可靠的断点续传机制, 从而保证固件数据包能够完整无误地被终端接收,进而安全地进行IAP升级,保 障终端的正常运行。此方案现已在蔗糖税控系统中得到验证和应

4、用。2系统框架系统框架如下图所示。嵌入式终端中,GPRS模块通过RS232总线与STM32的USART 口连接,负责 将接收到的移动网络数据传送给MCU,或是将MCU要发送的数据通过移动网络 发至后台服务器;SD卡通过SPI总线与MCU连接,用于在终端接收固件时临时 存放固件数据,以及保存固件更新进度、版本号等关键信息。本地环境包括用于开发、编译终端固件的上位机,以及用于与终端进行数据 交互的后台服务器。当需要更新终端固件时,由工作人员将终端固件从上位机上 传至服务器并启动更新程序,接下来则由服务器通过透明传输模式,采用自定义 通信协议与终端进行数据交流,直至固件更新完毕。图1系统框架图3终端

5、软件设计3.1IAP技术IAP是In Application Programming的首字母缩写,意指用户程序在运行过程 中对程序存储区(以下称为flash)指定区域进行烧写,目的是为了在产品发布后 可以方便地通过预留的通信接口对产品中的固件程序进行更新升级。本方案所用主控芯片STM32F103ZET的内置flash物理地址范围为0x08000000 至 0X0807FFFF,容量为 512KByte。为了实现 IAP 功能,现将 flash 从逻 辑上划分为bootloader和app两个区域,划分结构如下图所示:从图2可以看到,引导程序(Bootloader)区域的起始地址为0x08000

6、000, 容量分别64KBbyte;固件(App)的起始地址为0x08010000,容量为448Kbyte。 两者的容量可视实际情况进行划分,甚至可以划分多个固件区域,但起始地址必 须是0x08000000 + 4n(n为大于0的整数)。引导程序,在终端出厂前即通过J-Link烧录到指定区域(即引导程序区)。 引导程序不负责终端的功能实现,而是对外设进行初始化,以及检查是否需要更 新固件。若有需要更新的固件,则将新的固件数据写入固件区域,并在写入完毕 后引导MCU跳转至固件;若没有需要更新的固件,则直接引导MCU执行固件程 序。固件作为是终端软件的主体部分,负责终端功能的实现,也负责通过GPR

7、S 与后台服务器进行交互,以接收、校验和保存新固件的数据。出厂固件可以在终 端出厂前通过J-Link预先烧写,也可以将其保存在外置存储器,在终端启动后由 引导程序自动进行烧写。1233.13.2引导程序设计如3.1所述,STM32内部flash的起始地址为0x08000000,即引导程序的起始 地址。终端上电复位后,MCU从0x08000004地址取出复位中断向量的地址,并 跳转到复位中断服务程序,在运行完复位中断服务程序后,跳转到引导程序的 main函数中,开始执行外设初始化。在外设初始化完毕后,程序读取SD卡中的指定地址的标志位,若标志位提 示SD卡中存在需要更新的固件,则从SD卡中读取固

8、件数据保存到临时buffer中 (本文以SDHCv2为例,每次读取1个block,即512字节),然后将buffer中的 每2个连续字节拼接为1个半字,按顺序写入划定的固件区域。每写完一个 block的数据后,还需要分别将此block数据从flash中读出并进行一次CRC32计 算和对比,以确保写入的数据准确无误。如此循环直至SD卡中保存的所有固件 数据处理完毕。图3引导程序跳转及固件运行基本流程固件数据写入完成后,跳转代码会将程序从引导区跳转到固件区。此跳转动 作是通过修改强制修改PC寄存器(程序计数器)的值来实现的。3.3远程升级模块设计固件的实现基于多任务实时操作系统,使得嵌入式设备的主

9、要功能模块与固 件升级模块的运行互不影响。固件中远程升级模块的主要内容包括:接收固件数 据、校验固件数据及保存固件数据,其工作流程如图4所示。升级模块中实现断点续传的关键,在于服务器将固件分割为若干个数据包进 行发送(在本例中每个数据包为512字节大小),且为每个数据包指定了序号, 终端在接收、校验、保存每一个固件数据包后,将该数据包的序号保存到SD卡 中,即使传输被长时间中断,终端也能够在接收到固件升级启动命令后,准确地 告知服务器上次传输时断开的序号,服务器即可直接从上次传输时断开的位置开 始继续发送剩下的数据包。图4在线升级模块工作流程4服务器客户端设计嵌入式设备的新固件上传至服务器后,

10、由客户端对其进行大小统计、总包 CRC32计算、分包及分包CRC32计算。当有设备需要升级时,用户在客户端上指 定其ID号后,启动升级流程。客户端升级工作流程如图5所示。5结束语本设计采用自定义协议、CRC校验、应答机制等技术,通过移动数据网络,实 现了对嵌入式终端系统固件远程升级的功能,为各类无人值守的自动化分布式采 集/监控系统的节点升级及维护提供了可靠的解决方案。目前此方案已经成功地应 用在广西糖厂税控系统中,该系统共安装嵌入式终端240多台,分布安装于广西 全区内各糖厂中,位置分散且距离远,利用此方案对终端进行远程升级,极大减 少了系统维护工作中人力物力成本的消耗。参考文献1 Joseph Yiu. Cortex-M3 权威指南,20092 STMicroelectronics. STM32F10XX 参考手册,20093 STMicroelectronics. STM32 闪存编程手册,2009 宋柏彬.基于嵌入式的GPRS无线通信系统研究D.图5服务器客户端工作流程武汉理工大学,20065王涛.物联网异构型节点自组网通信协议研究D.电子科技大学,2017.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号