基于4G网络的嵌入式设备远程升级系统设计与实现(学习一)
摘要
随着无线通信技术的不断更新发展,嵌入式设备的联网应用领域得以大规模扩大,远程升级功能成为产品开发中必不可少的一部分。
本文对嵌入式设备远程升级进行了研究,在不改变设备硬件集成度基础上,设计实现了分离式升级的远程升级系统。
新程序文件的获取由升级工具来完成,终端设备通过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模块将报文通过网络发送给服务器,服务器解析处理后发送应答报文给升级工具。
相关文章:

基于4G网络的嵌入式设备远程升级系统设计与实现(学习一)
摘要 随着无线通信技术的不断更新发展,嵌入式设备的联网应用领域得以大规模扩大,远程升级功能成为产品开发中必不可少的一部分。 本文对嵌入式设备远程升级进行了研究,在不改变设备硬件集成度基础上,设计实现了分离式升级的远程…...

陪诊小程序软件|陪诊系统定制|医院陪诊小程序
开发一个陪诊小程序需要投入一定的费用,具体金额会因项目的复杂程度、功能需求和推广政策而有所差异在投入资金之前,建议进行市场调研和需求分析,制定出合理的预算,并选择专业的开发团队进行合作,那么开发陪诊小程序需…...

[数据集][目标检测]空中飞鸟目标检测数据集VOC格式4955张
数据集名称:空中飞鸟数据集VOC-4955张 数据集制作单位:未来自主研究中心(FIRC) 图片数量(jpg文件个数):4955 标注数量(xml文件个数):4955 标注类别数:1 标注类别名称:["bird"] 每个类别标注的框数࿱…...

安徽现货黄金代理请看这篇
持续两三年的新冠疫情,令全球经济遭受不同程度的打击,很多传统的行业更是重灾区,当中不少从业多年的朋友表示虽然看不清前进,但也不敢随便转行,如果那么有一份这样的工作,既不用他们离开本职,也…...

HTML JS实现点击按钮下载文件功能例子(C知道版)
其实这篇应该算是一篇“水”文章,为什么要这么“水”呢,除了最近南方的气候闷热难耐需要降温之外,另一个主要原因,这里面所写的代码均是由CSDN的AI文本大模型"C知道"完成,我在这里只是简单记录一下ÿ…...

企业网络安全与数据保护合规建设 ——从合规运营到香港上市
序言 《企业网络安全与数据保护合规建设 ——从合规运营到香港上市(一)》梳理了我国网络安全与数据保护领域近期主要立法情况,本文将着重分析拟赴港上市企业运营阶段的数据合规要点以期为拟赴港上市的相关企业提供有益的参考。 二 企业运营…...

antdv Select dropdownRender Input 不能输入的问题
简言之:外层套div,然后利用Select的open属性。直接上代码: <template><a-form-item-rest><div click"selOpen !selOpen"><Selectv-model:value"xxx"placeholder"请选择":options"g…...

PostgreSQL 查询json/jsonb是否存在某个片段
文章目录 前言实现实现思路坑1坑2坑3 恍然大悟 前言 在PostgreSQL中,jsonb有额外的操作符,如 >、<、?、?|、?& 可以用来查询是否包含路径/值,以及顶层键值是否存在。 详细文章:PostgreSQL 操作json/jsonb 那么&am…...

Spring 官方文档及相关资料的网址集合
文章目录 MavenSpringSpring FrameworkSpring BootSpring Cloud AlibabaNacos Maven Maven 仓库依赖包官方查询通道:https://mvnrepository.com/ Maven 插件官方文档:https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*:https://m…...

hypery 十一、命令行
教程:Hyperf symfony/console composer地址: symfony/console - Packagist github地址:GitHub - symfony/console: Eases the creation of beautiful and testable command line interfaces hyperf/command github地址:https://github.com/…...

QT占位符 %n+arg()、QString的格式化arg(补零/进制转换)
一、 1、QMessageBox::warning(this, tr("查找"), tr("找不到%1").arg(str)); 其中 %1为占位符,QMessageBox显示时,arg中的变量值会替代 %1占位符,达到在QMessageBox弹出框中输出变量的目的。 2、const QString entry…...

浙江大学第六周数据结构之06-图1 列出连通集
题目详情: 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。 输入格式: 输入第1行给出2个整数N(0&…...

DNS缓存病毒防护43.227.220
DNS缓存病毒又称DNS欺骗,是一种通过查找并利用DNS系统中存在的漏洞,将流量从合法服务器引导至虚假服务器上的攻击方式。 在实际的DNS解析过程中,用户请求某个网站,浏览器首先会查找本机中的DNS缓存,如果DNS缓存中记录…...

Spring MVC -- 返回数据(静态页面+非静态页面+JSON对象+请求转发与请求重定向)
目录 1. 返回静态页面 2. 返回非静态页面 2.1 ResponseBody 返回页面内容 2.2 RestController ResponseBody Controller 2.3 示例:实现简单计算的功能 3. 返回JSON对象 3.1 实现登录功能,返回 JSON 对象 4. 请求转发(forward)或请求重定向(redirect) 4.1 请…...

k8s集群部署(使用kubeadm部署工具进行快速部署,相关对应版本为docker20.10.0+k8s1.23.0)
1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘20GB或更多可以访问外网,需要拉…...

SIP视频对讲sip广播网关
SV-PA2是专门对行业用户需求研发的一款SIP音视频对讲,媒体流传输采用标准IP/RTP/RTSP协议。它很好的继承了锐科达话机稳定性好、电信级音质的优点,且完美兼容当下所有基于SIP的主流IPPBX/软交换/IMS平台,如Asterisk, Broadsoft, 3CX, Elastix 等。它集多…...

prometheus直方图实践
目录 1.简介 2.方案 1.简介 Prometheus提供了Counter、Gauge、Histogram、Summary四类指标(详见Metric types | Prometheus),可以通过"github.com/prometheus/client_golang/prometheus"自定义采集指标、注册、采集数据、发布UR…...

【C语言进阶篇】指针都学完了吧!那回调函数的应用我不允许还有人不会!
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 函数指针数组💭 函数指针数组的定义💭 函数指针数组的…...

专注:如何提高专注力和注意力的简要指南
专注力和集中力可能很难掌控的很好。大多数人都想学习如何提高注意力和注意力。但真的做到了?我们生活在一个嘈杂的世界里,不断的分心会使注意力难以集中。 此指南包含有关如何获得并保持专注的研究。我们将分解提升您的思维并关注重要事物背后的理论依…...

Linux查看内存的几种方法
PS的拼接方法 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head 进程的 status 比如说你要查看的进程pid是33123 cat /proc/33123/status VmRSS: 表示占用的物理内存 top PID:进程的ID USER:进程所有者 PR:进程的优先级别&#x…...

selenium定位rect元素
rect元素属性 rect元素的属性如下: x:此属性确定矩形的x坐标。 值类型:| ; 默认值:0 动画:是y:此属性确定矩形的y坐标。 值类型:| ; 默认值:0 动画:是width:…...

uniapp <textarea>组件的踩坑
1、ios真机上,textarea输入时会触发页面其他点击事件, 解决方法:把textarea封装成基础组件,绕过这个bug。 2、使用auto-height属性,安卓真机上,会导致textarea高度异常, 官方人员解释…...

README.md 文档使用 treer 生成树形项目结构
一、前言 前后端编写 README.md 文档的时候,常常需要描写项目的结构,使用 tree 命令生成的目录又不能忽略某个目录,不方便。后来我找到了可以忽略某些目录的 treer命令 ,特此记录一下: 二、使用 treer 生成项目结构 全局安装tr…...

朝花夕拾思维导图怎么画?看看这种绘制方法
朝花夕拾思维导图怎么画?绘制思维导图的好处有很多,首先它可以帮助人们更好地组织和管理知识,提高工作效率和学习效果。其次,绘制思维导图可以帮助人们更好地记忆知识点和理解知识点。总之,绘制思维导图可以帮助人们更…...

Python - OpenCV、OCR识别摄像头中的文字
使用Python3的OpenCV库来识别摄像头中的文字,以及使用OCR(光学字符识别)技术。 安装OpenCV库 在命令行中输入以下命令来安装OpenCV库: pip install opencv-python安装Tesseract OCR库 Tesseract OCR库是一种免费的光学字符识别…...

金融中的数学:贝叶斯公式
1.贝叶斯定理 贝叶斯定理是概率论中的一项重要定理,用于在已知某一事件的条件下,求另一事件发生的概率。它是根据条件概率推导出来的,得名于英国数学家托马斯贝叶斯。 贝叶斯定理可以表示为: 这个式子就是贝叶斯公式,…...

ClickHouse单节点安装配置
四个安装包: 创建clickhouse目录 将安装包解压到该目录 tar -zxvf clickhouse-server-21.9.4.35.tgz -C /opt/module/clickhouse tar -zxvf clickhouse-common-static-21.9.4.35.tgz -C /opt/module/clickhouse tar -zxvf clickhouse-common-static-dbg-21.9.4.35.…...

AtcoderABC231场
A - Water PressureA - Water Pressure 题目大意 假设水压仅取决于深度,在深度为x米时,水压为x/100兆帕斯卡。 现在给定一个深度D米,需要计算在该深度下的水压是多少兆帕斯卡。 思路分析 直接将输入的深度除以100得到水压结果。 时间复杂…...

opengauss数据库快速安装
root执行 groupadd gs useradd -g gs gs passwd gs mkdir -p /opt/software/openGauss sudo chown gs:gs /opt/software/openGauss chmod 700 /opt/software/openGauss gs执行 上传文件到/home/gs目录下 tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 -C /opt/software/o…...

前端中的LocalStorage和SessionStorage
在前端开发中,常常需要在浏览器端保存数据,以便在页面刷新或跳转时能够保留数据或状态。在这种情况下,可以使用Web Storage API中的LocalStorage和SessionStorage来实现数据的存储。它们都是HTML5提供的本地存储解决方案,可以在浏…...