摘要
随着无线通信技术的不断更新发展,嵌入式设备的联网应用领域得以大规模扩大,远程升级功能成为产品开发中必不可少的一部分。
本文对嵌入式设备远程升级进行了研究,在不改变设备硬件集成度基础上,设计实现了分离式升级的远程升级系统。
新程序文件的获取由升级工具来完成,终端设备通过UART开发的引导程序实现新程序的下载和更新。
该升级工具为无线网络与终端设备的中间适配层,向下适配不同的硬件接口,扩展了应用场景和设备类型,向上为用户提供了统一的应用开发接口,方便移植和扩展。
研究背景与意义
嵌入式设备程序漏洞修复、更新迭代、程序更新以及功能添加,都需要对软件进行升级。
现场更新的方式在新的应用场景下,已远不能满足用户对使用更方便、操作更简单,升级更稳定,系统更安全的需求。
因此设计一个脱离底层设备结构、性能稳定的嵌入式设备远程升级系统对嵌入式升级、实现设备的智能化和多功能扩展意义重大。
嵌入式升级一般通过连接通信接口或者网络获得程序文件,接口连接虽然实现简单,但需要手动操作,耗时耗力,特别是对于监控摄像头、电网供电设备、天文观测设备等不易安装拆卸的产品。
该功能目前大多是通过无线通信实现,设备与无线模块进行数据传输,通过网络获得升级程序,对用户来说最简单方便。
最近的研究大多选择在待升级设备上添加远程通信功能,对设备的软硬件需要重新设计,增加了设备的不稳定性,较适用于系统性能优秀,资源功能较多的嵌入式设备。
一般的嵌入式设备多数是前后台系统,没有操作系统的强大资源调配和任务处理能力,且硬件资源较简单,外设模块少,升级受限。
如果直接搭载无线模块到这种设备上进行远程升级,引导程序部分需要包含无线模块驱动程序,远程通信的协议解析程序等等。而且硬件平台芯片参数不同,产品性能和所使用的升级通信接口不同,引导程序多是针对某一种芯片的某种接口进行的,不具备一种方案对应多种设备和芯片的普遍性。
本文采取分离式两段升级方式,借助升级工具对底层终端进行升级,当底层通信接口改变时,不用修改升级工具的程序结构,只需改变几个参数,增加相应的通信接口驱动,即可接入新接口。对应用层的调用接口可以根据协议功能添加,在服务器添加对应的解析协议即可。协议只需编写一次,对底层来说完全没有影响,大大减少了开发任务量。
国内外研究现状
IAP在应用编程是指MCU可以在系统中获取新代码烧写在FLASH中,程序对自己编程的技术。
IAP技术从结构上讲FLASH存储分为两部分,执行程序更新并跳转的引导程序和正常运行时实现具体功能的应用程序。
引导程序一般通过JTAG等接口下载烧录到片内FLASH中,单片机上电复位自动运行引导程序,如果外部改写程序的条件满足,在其控制下通过任意通信接口实现新的应用软件的下载,之后跳转到新下载的程序中运行,否则程序指针直接跳到应用程序执行,这样便实现了IAP功能。
ISP修改MCU内部数据需要连接外部获得程序,配合软件进行人工操作。
而IAP方式更加灵活,通常可利用单片机的串口连接PC机或者其他通信方式,由引导程序来编程内部存储器实现升级。
主要研究内容
提出一个在不改变设备硬件平台的基础上,实现分离式升级的远程升级系统方案。
对硬件平台进行模块化搭建,在升级工具上搭建4G模块和服务器远程通信,新程序文件获取由升级工具来完成。
制定了较规范稳定和功能完备的通信协议,按照制定的通信协议对数据进行打包和加密。
对无线传输过程中和程序运行处理中可能出现的错误异常提出解决方法。
待升级设备通过UART开发的引导程序实现新程序的下载和更新。
系统需求分析
系统方案设计要求升级工具能与远程服务器建立通信连接,和待升级设备远程实时传输数据,功能需求有以下几点:
- 通信协议的可靠性
升级工具与服务器和待升级设备通信频繁,通信协议功能要完备,格式要规范,便于解析处理。针对软件运行过程中的错误状态,协议中要根据工作状态制定不同的错误报文。 - 数据存储和传输的正确性
能长期存储数据文件以供待升级设备升级。程序升级过程中对程序文件和版本号等传输,都要避免数据错误,要求有数据校验和加密算法。 - 硬件设计的扩展性
硬件平台不易拆卸和更改,因此硬件设计上要有扩展性,与多种工业通信接口对接,根据项目的要求进行升级改造。该系统的硬件设计需要稳定可靠,连接待升级设备的接口要进行隔离的设计。 - 设备状态的显示
能提供用户直观查看升级工具的运行状态和错误状态。
网络通信协议选择
本文在物理层上采用UART接口,数据链路层对UART协议的格式进行设置,网络层使用IP协议,传输层协议有TCP和UDP。
TCP即传输控制协议,是面向连接的传输层协议。在数据传输前,客户端和服务器之间会三次握手建立连接,而且在数据传递时,有确认、窗口。重传。拥塞控制机制。在断开连接时也会进行四次挥手操作,大大增加了可靠性,但增加了延迟。
TCP提供全双工通信和相应的数据缓存,确保数据无差错、不丢失、不重复。
UDP即用户数据报协议是一种无连接的传输层协议,在传输建立连接后无需等待接收应答就开始传输,所以当报文发送之后无法保证数据是否安全完整。传输速度对比TCP来说比较快,只是网络质量不好时会有一些安全隐患。
因此,UDP协议先考虑时间而不是可靠性。相较于UDP协议,TCP传输速度比较慢,但可靠性高。本文中远程通信主要传输程序文件和协议指令,对通信协议的准确性和可靠性有较高要求,因此采用TCP协议。
无线通信方案选择
GPRS(General Packet Radio Service)数据传输技术介于2G和3G之间,又被称为2.5G。GPRS技术不断更新成熟,GPRS传输速率在100kbps左右,具有接入时间短、建立连接快,实时在线的特点。
以上几种方案最大的区别就是网速、业务类型以及传输延时上。
本文中,升级工具主要是传输程序文件,不需要传输图像或者音频数据,而且程序大小不定,设置为分包传输,对传输速率要求不高。但要求传输可靠、网络覆盖要广、实时性较高且需要长时间在线。
总体架构设计
该系统主要包括:待升级设备、升级工具、无线通信网络、远程服务器和PC机。
升级工具一方面使用无线模块将数据组成TCP/IP协议包通过无线网络发送给服务器,服务器接收到报文判断透传给PC机还是直接解析处理,
另一方面通过串口与待升级设备连接,通过BootLoader协议进行程序升级,适用于各种具备串行通信接口的待升级设备。
MCU选型
MCU是嵌入式系统的核心,起到中心调度的作用。较广泛的MCU有意法半导体等,其芯片内核大多数ARM系列,根据具体的产品采用不同的版本,如ARM7,ARM9,ARM Cortex-M等。
选择STM32F405芯片作为MCU,通过UART的硬件数据流模式和4G模块连接。
MCU按照自定义数据通信协议装载数据成报文,4G模块将报文通过网络发送给服务器,服务器解析处理后发送应答报文给升级工具。