我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 远程终端 >

利用WiFi通信方式的车载终端远程软件升级设计详解

归档日期:06-06       文本归类:远程终端      文章编辑:爱尚语录

  随着对系统功能、性能要求的不断提高,或为了消除缺陷,用户常常需要对嵌入式终端设备软件进行升级。目前嵌入式终端软件升级方法有专用工具烧写、在系统编程(ISP)和在应用编程(IAP)等。前两种方式需要专门的人员到达现场、甚至拆卸设备才能进行软件升级。IAP方式可由开发人员根据实际应用进行灵活设计,例如使用串口升级、USB升级等。

  由于车载终端具有移动性、分布广泛、无法集中召回等特点,传统软件升级方案显得束手无策。远程软件升级方案能够为系统维护提供极大的方便,目前主流使用基于GPRS的IAP方式,但通常需要支付给运营商一定的费用。

  根据某单位车辆管理系统的实际情况,本文设计出一种基于WiFi的远程软件升级方法。具有简单、便捷、可靠、成本低等优点。

  系统结构如图1所示。该单位有若干分部,每个分部独立管辖所属的车辆,每个车辆装载一套终端,用于记录车辆行驶信息。当车辆外出执行任务及返回经过车场门口时,与车场门口的数据采集设备通过WiFi进行数据交互。各分部数据采集设备连接至互联网与总部进行数据交互。

  终端设备MCU采用STM32F107芯片,该芯片是意法半导体公司基于ARM CortexM3的32位嵌入式处理器,主频达72 MHz、90DMIPS。它具有256 KB闪存程序存储器、20KB的数据存储器及64 KB RAM。外围接口丰富,价格仅与8位单片机相当,性价比极高。

  ③车辆终端设备通过WiFi网络连接到数据采集设备,如需要则进行新软件下载;

  STM32F107内部FLASH存储器地址以0x08000000开始,共256K。为了在线升级,将该FLASH存储器如图2所示划分为BOOT区、应用程序区、临时区、参数存储区。

  其中BOOT区用于存放系统自举程序,应用程序区用于存放用户应用软件,临时区用于临时存储正在下载的软件,参数存储区用于存储程序升级时所使用的标志及其他系统参数。

  软件升级标志定义如下:正常模式、升级模式及拷贝模式。正常模式标志着无需进行软件升级,直接跳转到应用程序区执行;升级模式标志着终端需要下载新的应用程序;拷贝模式用于在软件下载完毕后拷贝到应用程序区,将该部分功能独立出来是为了在软件下载完毕后拷贝到应用程序区时出现突然断电等故障时进行故障恢复。

  终端处于WiFi信号范围时,接入WiFi网络与数据采集设备进行信息交互。如图3所示,软件升级流程如下:

  ②若版本号为最新,流程结束,否则会接收到数据采集设备发来的软件升级指令;

  ⑤读取软件升级标志,如是“正常模式”,判断应用程序区是否有应用程序,若有则跳转到应用程序区执行,若无则置软件升级标志为“升级模式”,复位MCU,跳转到步骤④;

  ⑥若软件升级标志是“拷贝模式”,拷贝临时区软件到应用程序区,修改软件升级标志为正常模式,复位MCU,跳转到步骤④;

  升级软件主要由版本号比较、软件复位、软件下载及校验、拷贝软件到应用程序区、软件跳转到应用程序区几部分组成。

  每个版本的软件需要有不同的版本号,按照一定规则递增,如数据采集设备上有2.0版本软件比本终端1.0版本高,则据此进行软件升级。

  根据本设计,软件需要复位进入BOOT区进行一系列操作。通过使STM32内部中断应用和复位控制寄存器中的SYSRESETREQ位置1,即可实现软件复位。

  采用TFTP协议下载应用软件到MCU临时区。TFTP用于发送较小的文件时实现简单,可靠性高。其下层使用UDP协议,发送使用UDP 69端口,每次发送的最大分组为512字节,发送双方采用超时重传机制。数据传输模式可选为octet模式(二进制模式)。

  目前常用的是前5种。由于系统只需实现终端从数据采集设备上下载软件文件,无需实现完整的TFTP协议,仅实现上述第1、3、4、5类数据包功能即可。主要定义以下4个接口函数:

  该函数用于终端发送读文件请求,数据采集设备收到该包将发送文件数据包给终端;

  该函数用于接收数据采集设备发送到的包,根据包类型分别对ERROR包、DATA包进行处理。如果是ERROR包则需要重新传输文件,本次传输失败。如果是DATA包,则校验后根据包号存储到FLASH指定位置,然后调用发送ACK函数回复ACK。掉包、错包等的错误处理也在该函数执行;

  ③数据采集设备收到终端的这个请求包后,将直接发送DATA包给终端,这个DATA包中含数据采集设备选择的TID作为UDP的源端口和终端的TID作为UDP目标端口,起始包号为1,往后包号逐次加1。

  传输过程中的掉包或包错误会导致重传,重传不超过三次,否则认为传输失败。传输过程中的错误,会触发发送ERROR包。ERROR包的错误代码值供程序员分析使用。

  软件正确的下载到临时区后,需要拷贝到应用程序区。该部分关键部分在于STM32内嵌FLASH的擦除与读写。

  STM32F107内嵌FLASH是通过分页机制来实现对寻址空间的扩展和FLASH页面的使用和管理的。所以对FLASH的擦除操作需要按页进行擦除。即擦除FLASH不能擦除某一字节或一次擦除小于一页(2048字节)。

  应用程序准备好后,程序需要从BOOT区跳转到应用程序区首地址处执行应用程序。这里分为两步:

  ②跳转到应用程序首地址处执行应用程序。该步骤完成堆栈指针和程序指针(PC)的修改。在上述汇编代码之后,通过以下方式实现:

  为保证软件升级错误不导致系统崩溃,将终端程序隔离为引导程序(BOOT区程序)及应用程序两部分,如单次软件升级失败仍可进行再次升级。两部分程序分别在Keil中编译,并把BOOT区程序烧写在FLASH首地址0x08005000处,以便终端启动直接进入BOOT区。用于应用程序编译吋需设定烧写地址为应用程序区首地址,并生成bin文件以便直接下载到FLASH中即可运行。

  该方法实现了采用WiFi通信方式,通过TFTP协议将编译后的软件文件下载到终端设备,完成软件升级的功能。在嵌入式系统领域,程序升级可以方便地对程序缺陷进行弥补和修改,或对程序功能进行扩充,运用该方法可极大提高产品的生存周期,节省对项目的维护成本和提高了开发效率。

  基于该方法已成功设计出可远程在线升级程序的车辆管理系统。使用情况表明,该系统能稳定、可靠地工作,且为系统的维护节省了大量的工作量,对同类型的嵌入式设备软件在线升级设汁有很好的参考价值。

  如何使用51单片机进行带wifi APP查看功能的zigbee温湿度传输及控制

本文链接:http://dropped-call.com/yuanchengzhongduan/42.html

上一篇:远程培训系统终端_辰联电子

下一篇:没有了