基于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…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...