面向城乡公交的嵌入式系统远程升级设计方案

这篇具有很好参考价值的文章主要介绍了面向城乡公交的嵌入式系统远程升级设计方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

针对城乡公交站牌显示终端现场升级与维护困难的问题,提出了一种基于应用程序(IAP)技术的嵌入式系统远程升级设计方案。

通过IAP技术配合改良过的远程升级程序代替传统的现场烧写调试,节约了奔赴现场调试的时间和成本。

针对远程升级过程中被恶意攻击、固件文件安全传输和可靠更新等安全性问题,提出利用分包校验和设置临时程序存储区域的方法。

采用多服务器协同设计和严格权限管理方式,在服务器端通过权限管理来提升升级操作过程中的安全性。

引言

公共交通智能化是当前的大趋势,安装于村镇道路旁的城乡公交站牌显示终端能实时显示公交车到离站信息,到站距离,能极大地方便老百姓的公交出行。

传统的升级方式通过预留的升级接口,通过切换BOOT模式使用串口或者JLINK接口来进行升级。

城乡公交站牌安装点位偏远、分散,要实现设计缺陷修补、功能改进或
性能提升等需求,需要到现场拆卸设备,增加了维护成本。

本设计在利用城乡公交站牌显示终端现有的数据链路的基础之上,通过协议的扩展,实现远程升级固件。
提高了嵌入式设备的可维护性,并通过多服务器协同和严格的权限管理机制,提升了升级过程中的安全性,通过CRC加密算法和断点续传机制,保证了升级文件的可靠性。

系统组成

面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网
本文的升级系统由业务服务器、站牌显示终端和升级服务器三部分组成。

业务服务器通过与站牌显示终端的网络连接,实现车辆到站的信息发布。

升级服务器在业务服务器发起升级请求后,响应站牌显示终端的升级请求,实现升级数据的下发。

站牌显示终端通过4G网络登录业务服务器,接收业务服务器下发的数据。

城乡公交站牌显示终端由微控制器(MCU GD32F103RB)、4G无线模块(移远EC20)、数码管显示驱动单元、实时时钟、供电单元等组成,主要实现上报数据和接收服务器下发的车辆到离站信息等功能。

面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网
远程升级功能是利用城乡公交站牌显示终端本身具有的网络连接特性,通过网络协议的接口,实现对站台显示终端的固件程序的更新:即更新微控制器MCU内部的程序,以达到改进和提升的目的。

升级原理

GD32F330 MCU是兆易创新公司推出的基于Cortex®-M4内核的微控制器[3][4],是国产自主品牌的32位MCU,集成外设单元丰富、性能强劲,成本低廉,是替换STM32系列MCU的首选。本文选择GD32F330RB作为站牌显示终端的主控MCU。

微处理器的编程方法通常有两种:通过串口或者JTAG等接口进行编程的在系统编程(In System Programming,ISP)模式、在应用程序控制下的在应用编程(In Application Programming,IAP)模式。

本设计采用的预先将Bootloader程序+应用程序通过ISP方式下载到终端作为出厂程序,出厂后通过IAP模式对程序进行升级。IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写。

本系统设计两个程序[7]:Bootloader(引导加载程序)和App
(应用程序)。

Bootloader程序不执行应用的功能操作,只负责在开机启动时对系统升级数据进行更新,并跳转到对应的App程序。App程序为用户功能代码,执行用户功能操作,同时接收服务器的升级请求,将升级代码数据保存到特定的FLASH位置。

本系统中使用的芯片GD32F330RB的FLASH存储器大小是128K,此空间被划分为三大块,分别用于运行Bootloader程序,APP程序1,APP程序2。

其中0x801E000-0x801f000这4K空间用来存储升级相关的环境变量,包括升级标志、数据长度,CRC32校验后的校验码。
面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网

Bootloader设计

Bootloader程序是本方案的核心,需要完成升级文件检测,程序校验,固件更新以及程序跳转等功能。
面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网

  1. 微处理器上电/复位后,从地址0x08000000开始运行Bootloader程序。
  2. Bootloader完成MCU的初始化,然后从0x0801E0000地址读取环境变量。
  3. 根据环境变量中的升级标志位来判断是否要进入程序升级模式。
  4. 如果不需要升级,读出需要跳转的程序入口地址,执行程序跳转操作,跳转到0x08002000(APP1程序区)处开始运行应用APP;如需要升级,进入升级流程,进行APP代码的更新。
  5. 在升级流程中,首先读取环境变量中的待升级程序的长度和CRC校验码,并计算APP2程序区地址中的存储的程序的CRC32的校验码,与环境变量中的校验码进行比对。
  6. 校验码一致的话进入FLASH操作流程,根据需要对FLASH扇区进行擦除,然后从APP2对应的位置读取程序数据写入APP1对应的位置;校验码不一致的话,放弃升级。
  7. 升级完成或者升级失败均需要清除升级标志位,然后软复位MCU。

通信协议设计

与服务器通信,需要遵循一定的通信协议,才能正确的进行升级。
当前采用的连接为TCP长连接,大端模式的网络字节序。
面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网
面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网
面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网
为了降低远程传输数据出现的误码率,把升级固件分成小包进行传输。
固件数据包的分包长度设置为256个字节,分包序号表示当前传输的数据包是第几包,当出现传输错误,帧数据包校验不正确时,会返回错误接收的数据包给服务器,服务器根据分包序号,重新发送此分包的数据包。终端正确接收了当前的分包,给服务器返回成功的应答信号,服务器发送下一个分包,直到固件数据发送完成。

APP程序设计

APP程序是实现终端功能的软件。本终端主要实现的功能是验证登录业务服务器和接收服务器下发的车辆到离站信息,并在终端的LED上显示公交车到站距离。

将APP2区的(0x0801E0000)开始的一个扇区用来存储升级程序的环境变量,主要包括程序是否需要升级的标志信息,程序的长度和校验码。

Bootloader运行后首先读取0x0801E000位置处的环境变量,判断程序是否需要升级。如果程序需要升级,就需要根据环境变量中存储的程序长度和校验码对APP2区的程序进行CRC校验,判断校验码是否与环境变量中的校验码一致,若不一致,则清除环境变量的升级标志,跳转到APP1执行;若一致,则擦除APP1程序区,将APP2程序区的数据拷贝到APP1程序区。拷贝完成以后,清除环境变量的升级标志,跳转到APP1执行。

面向城乡公交的嵌入式系统远程升级设计方案,论文学习,网络,远程升级,物联网
固件升级的安全关系到整个系统的安全,因为固件将彻底的替换掉终端正在运行的程序。因此需要从几个方面来保证新的固件程序在下发升级以后,不会造成系统的大面积崩溃。

  1. 需要保证新版本的固件程序经过了严格的测试才能上传到服务器中。
  2. 要保证新版本的固件程序拥有再次升级的功能,这样在出现bug或者错误以后,可以迅速进行升级补救。
  3. 分批次进行升级,保证升级后的设备运行稳定,无故障,再扩大升级规模。
  4. 固件程序升级过程中,实行Bin文件加密校验,保证升级固件的完整性。
  5. 提升服务器的安全等级,防范内部或者外部的恶意攻击。

终端开机后主动连接业务服务器,根据JT808协议,完成终端设备的注册、登录,并根据业务服务器下发的到站信息数据,在本地LED上实现车辆信息的显示。如果需要对新版本的固件进行升级,则开启升级流程。文章来源地址https://www.toymoban.com/news/detail-625142.html

  1. 上传经过测试的BIN文件到业务服务器,业务服务器经过身份认证和密码验证,确认上传的文件合法,并将BIN文件同步到升级服务器。
  2. 在业务服务器的终端升级管理页面选择需要升级的终端设备,下发升级命令,根据待升级终端的数量来进行身份认证。在大于5台待升级设备时,需要请求更高的系统权限。
  3. 业务服务器给终端发送升级命令,包括升级服务器的IP和端口号。
  4. 终端主动断开与业务服务器的网络连接,根据下发的升级服务器IP和端口号,连接升级服务器,连接过程中会发送自己的终端ID和当前版本给升级服务器。
  5. 升级服务器确认终端的版本与待升级的版本都正确无误后,发送新版本固件程序的固件程序大小,CRC校验码等信息给终端,在收到终端的确认信息后,开始分包发生固件信息给终端。
  6. 终端根据协议,对分包数据进行校验,校验无误后,写入FLASH中对应的存储区域。每接收完一帧数据,向升级服务器请求下一段数据。若是校验出错或者是网络中断,将会重复请求未接收完成的数据,实现断点续传。
  7. 在终端接收到最后一帧数据并写入FLASH之后,将根据最开始接收到的程序大小和CRC校验码对整个写入FLASH的程序文件进行校验。在校验无误后,置位环境变量中升级标志。
  8. 断开与升级服务器的网络连接,软复位MCU。复位后执行Bootloader里的程序更新操作,程序更新后,跳转到APP1程序运行。
  9. 终端连接业务服务器,在注册登录过程中上报自己的终端ID和版本信息。并根据业务服务器下发的命令实现基本功能。此时在业务服务器上将显示当前终端的版本信息。

到了这里,关于面向城乡公交的嵌入式系统远程升级设计方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全志V3S嵌入式驱动开发(开发环境再升级)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的时候都很麻烦,譬如说,如果是驱动代码

    2024年02月08日
    浏览(58)
  • VScode远程连接开发嵌入式开发板

    在做嵌入式开发时,很多时候需要远程连接或者远程调试设备,这时可以通过VScode上的插件来很方便的进行远程连接和调试。 ssh远程连接嵌入式开发板: 1、安装vscode ssh远程插件:Remote-SSH。 2、点击\\\"+\\\",输入ssh连接命令。(eg:ssh root@192.168.1.4)  3、选择要更新的ssh配置文件,

    2024年01月21日
    浏览(46)
  • 嵌入式系统>嵌入式硬件知识

    AI芯片的特点包括 :新型计算范式AI芯片的关键特征: 1、新型的计算范式 AI 计算既不脱离传统计算,也具有新的计算特质,如处理的内容往往是非结构化数据(视频、图片等)。处理的过程通常需要很大的计算量,基本的计算主要是线性代数运算,而控制流程则相对简单。

    2024年02月08日
    浏览(50)
  • 嵌入式操作系统(嵌入式学习)

    嵌入式操作系统是一种专门设计和优化用于嵌入式系统的操作系统。它是在资源受限的嵌入式设备上运行的操作系统,如微控制器、嵌入式处理器和系统芯片等。 嵌入式操作系统的主要目标是提供对硬件资源的有效管理和对应用程序的调度,以实现系统的可靠性、实时性和效

    2024年02月10日
    浏览(56)
  • 软考-嵌入式系统设计师:[嵌入式系统基础:笔记(一)]

    大家不要只收藏不关注呀,哪怕只是点个赞也可以呀!🤣 粉丝私信发邮箱,免费发你PDF!!! 因为准备备考中级嵌入式设计师证书,所以买了一些资料回来准备复习,本书为倪奕文老师编制的书,如果大家有时间和精力还是很建议大家去买一本的,这本书反而是能够让小白很快

    2023年04月08日
    浏览(109)
  • 机器视觉与嵌入式技术:开拓自动驾驶和远程监控新视野

    (本文为简单介绍,观点源于网络) 机器视觉系统是指利用计算机来模拟人眼的识别与判断。在自动驾驶和远程监控领域,机器视觉结合嵌入式技术的应用,不仅极大地提升了自动化水平,而且开辟了新的技术视野。 在自动驾驶领域,机器视觉系统负责捕捉车辆周围的环境

    2024年02月19日
    浏览(38)
  • 关于嵌入式开发的一些信息汇总:嵌入式C开发人员、嵌入式系统Linux

    这篇文章是关于嵌入式开发的一些基本信息,供想入行的人参考。有一些作者本人的想法,以及来自外网的大拿的文章翻译而来,原文链接在此Learning Linux for embedded systems,再次感谢,支持原创。 普通C开发人员和嵌入式C开发人员之间的 基本区别在于 ,因为嵌入式C程序被设

    2024年02月03日
    浏览(67)
  • 了解嵌入式系统的不同细分领域:探索嵌入式BSP的定义

    嵌入式BSP是指嵌入式系统中的板级支持软件。它是针对特定硬件平台的软件包,提供了操作系统和硬件之间的抽象层,以便开发人员可以更方便地使用硬件功能和编写应用程序。 嵌入式BSP的功能包括: 设备初始化和配置:BSP负责初始化硬件设备,并进行必要的配置,使操作

    2024年02月11日
    浏览(41)
  • 【计算机三级嵌入式】考试自学笔记(三)——嵌入式系统硬件组成、嵌入式处理芯片以及存储器介绍

    常考知识点: 嵌入式最小硬件组成 嵌入式处理芯片 嵌入式系统的存储器 I/O接口及常用I/O设备 ARM内核典型嵌入式处理芯片 嵌入式系统外部通信接口 嵌入式最小硬件系统的组成如下: 嵌入式硬件系统≠嵌入式最小硬件系统 电源电路 :为整个嵌入式系统提供能量 时钟电路 :

    2023年04月12日
    浏览(84)
  • 【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM

    板级支持包(BSP) 是商用嵌入式操作系统实现可移植性所采用的一种方案,是硬件抽象层的一种实现。BSP是介于硬件和操作系统中驱动层程序之间的一层,有时也可认为属于操作系统一部分。BSP实现了对操作系统的支持,为上层的驱动程序提供访问硬件设备的函数包。 BSP隔离了

    2024年04月17日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包