基于4G网络的嵌入式设备远程升级系统设计与实现(学习一)

news2024/12/23 4:40:27

摘要

随着无线通信技术的不断更新发展,嵌入式设备的联网应用领域得以大规模扩大,远程升级功能成为产品开发中必不可少的一部分。

本文对嵌入式设备远程升级进行了研究,在不改变设备硬件集成度基础上,设计实现了分离式升级的远程升级系统。

新程序文件的获取由升级工具来完成,终端设备通过UART开发的引导程序实现新程序的下载和更新。

该升级工具为无线网络与终端设备的中间适配层,向下适配不同的硬件接口,扩展了应用场景和设备类型,向上为用户提供了统一的应用开发接口,方便移植和扩展。

研究背景与意义

嵌入式设备程序漏洞修复、更新迭代、程序更新以及功能添加,都需要对软件进行升级。
现场更新的方式在新的应用场景下,已远不能满足用户对使用更方便、操作更简单,升级更稳定,系统更安全的需求。
因此设计一个脱离底层设备结构、性能稳定的嵌入式设备远程升级系统对嵌入式升级、实现设备的智能化和多功能扩展意义重大。

嵌入式升级一般通过连接通信接口或者网络获得程序文件,接口连接虽然实现简单,但需要手动操作,耗时耗力,特别是对于监控摄像头、电网供电设备、天文观测设备等不易安装拆卸的产品。

该功能目前大多是通过无线通信实现,设备与无线模块进行数据传输,通过网络获得升级程序,对用户来说最简单方便。

最近的研究大多选择在待升级设备上添加远程通信功能,对设备的软硬件需要重新设计,增加了设备的不稳定性,较适用于系统性能优秀,资源功能较多的嵌入式设备。

一般的嵌入式设备多数是前后台系统,没有操作系统的强大资源调配和任务处理能力,且硬件资源较简单,外设模块少,升级受限。

如果直接搭载无线模块到这种设备上进行远程升级,引导程序部分需要包含无线模块驱动程序,远程通信的协议解析程序等等。而且硬件平台芯片参数不同,产品性能和所使用的升级通信接口不同,引导程序多是针对某一种芯片的某种接口进行的,不具备一种方案对应多种设备和芯片的普遍性。

本文采取分离式两段升级方式,借助升级工具对底层终端进行升级,当底层通信接口改变时,不用修改升级工具的程序结构,只需改变几个参数,增加相应的通信接口驱动,即可接入新接口。对应用层的调用接口可以根据协议功能添加,在服务器添加对应的解析协议即可。协议只需编写一次,对底层来说完全没有影响,大大减少了开发任务量。

国内外研究现状

IAP在应用编程是指MCU可以在系统中获取新代码烧写在FLASH中,程序对自己编程的技术。
IAP技术从结构上讲FLASH存储分为两部分,执行程序更新并跳转的引导程序和正常运行时实现具体功能的应用程序。
引导程序一般通过JTAG等接口下载烧录到片内FLASH中,单片机上电复位自动运行引导程序,如果外部改写程序的条件满足,在其控制下通过任意通信接口实现新的应用软件的下载,之后跳转到新下载的程序中运行,否则程序指针直接跳到应用程序执行,这样便实现了IAP功能。

ISP修改MCU内部数据需要连接外部获得程序,配合软件进行人工操作。
而IAP方式更加灵活,通常可利用单片机的串口连接PC机或者其他通信方式,由引导程序来编程内部存储器实现升级。

主要研究内容

提出一个在不改变设备硬件平台的基础上,实现分离式升级的远程升级系统方案。
对硬件平台进行模块化搭建,在升级工具上搭建4G模块和服务器远程通信,新程序文件获取由升级工具来完成。
制定了较规范稳定和功能完备的通信协议,按照制定的通信协议对数据进行打包和加密。
对无线传输过程中和程序运行处理中可能出现的错误异常提出解决方法。
待升级设备通过UART开发的引导程序实现新程序的下载和更新。

系统需求分析

系统方案设计要求升级工具能与远程服务器建立通信连接,和待升级设备远程实时传输数据,功能需求有以下几点:

  1. 通信协议的可靠性
    升级工具与服务器和待升级设备通信频繁,通信协议功能要完备,格式要规范,便于解析处理。针对软件运行过程中的错误状态,协议中要根据工作状态制定不同的错误报文。
  2. 数据存储和传输的正确性
    能长期存储数据文件以供待升级设备升级。程序升级过程中对程序文件和版本号等传输,都要避免数据错误,要求有数据校验和加密算法。
  3. 硬件设计的扩展性
    硬件平台不易拆卸和更改,因此硬件设计上要有扩展性,与多种工业通信接口对接,根据项目的要求进行升级改造。该系统的硬件设计需要稳定可靠,连接待升级设备的接口要进行隔离的设计。
  4. 设备状态的显示
    能提供用户直观查看升级工具的运行状态和错误状态。

网络通信协议选择

本文在物理层上采用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模块将报文通过网络发送给服务器,服务器解析处理后发送应答报文给升级工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/786072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Vue-Element中引入jQuery的方法

一、在终端窗口执行安装命令 npm install jquery --save执行完后,npm会自动在package.json中加上jquery 二、在main.js中引入(或者在需要使用的页面中引入即可) import $ from jquery三、使用jquery

结构型设计模式之亨元模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

第16章 控制脚本

CtrlC组合键会发送SIGINT信号,停止shell中当前运行的进程。 CtrlZ组合键会生成一个SIGTSTP信号,停止shell中运行的任何进程。停止进程会让程序继续保留在内存中,并能从上次停止的位置继续运行。 方括号中的数字是shell分配的作业号&#xff0…

PHP之Smarty使用以及框架display和assign原理

一、Smarty的下载 进入Smarty官网下载&#xff0c;复制目录libs目录即可http://www.smarty.net/http://www.smarty.net/ 二、使用Smarty&#xff0c;创建目录demo,把libs放进去改名为Smarty 三、引入Smarty配置,创建目录&#xff0c;index.php文件配置 <?php…

VuePress在生产环境跳转子页报错 Failed to execute ‘appendChild‘ on ‘Node‘

记录一个使用VuePress时遇到的问题 使用VuePress做了一个文档网页&#xff0c;在开发环境的时候一切正常&#xff0c;但是发布到生产环境后&#xff0c;直接跳转二级页面会报错Failed to execute appendChild on Node 比如主页是http://sun/docs/.vuepress/dist/index.html#/…

【算法】递增序列

对于一个字母矩阵&#xff0c;我们称矩阵中的一个递增序列是指在矩阵中找到两个字母&#xff0c;它们在同一行&#xff0c;同一列&#xff0c;或者在同一 45 度的斜线上&#xff0c;这两个字母从左向右看、或者从上向下看是递增的 对于下面的 30 行 50列的矩阵&#xff0c;请问…

AtcoderABC234场

A - Weird FunctionA - Weird Function 题目大意 要求计算 f(f(f(t)t)f(f(t))) &#xff0c;其中 t 是一个给定的整数。 函数 f(x) 定义为 f(x) x^2 2x 3。 思路分析 定义实现函数 f(int t)&#xff0c;并嵌套调用。 时间复杂度 O(1) AC代码 #include<bits/stdc.…

STN:Spatial Transformer Networks

1.Abstract 卷积神经网络缺乏对输入数据保持空间不变的能力&#xff0c;导致模型性能下降。作者提出了一种新的可学习模块&#xff0c;STN。这个可微模块可以插入现有的卷积结构中&#xff0c;使神经网络能够根据特征图像本身&#xff0c;主动地对特征图像进行空间变换&#x…

Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311)(A-G)

Contest Duration: 2023-07-22(Sat) 20:00 - 2023-07-22(Sat) 21:40 (local time) (100 minutes) 头文件和宏 #include<iostream> #include<string> #include<vector> using namespace std; #define int long long #define fer(i,a,b) for(int ia;i<b;i…

Python实现HBA混合蝙蝠智能算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

信息安全与网络空间安全 - 保障您的在线安全

数据参考&#xff1a;CISP官方 目录&#xff1a; 信息与信息安全 信息安全属性 网络安全发展阶段 网络空间安全保障 一、信息与信息安全 1、什么是信息&#xff1f; 定义&#xff1a;信息是通过传递和处理的方式&#xff0c;用于传达知识、事实、数据或观点的内容。形…

k8s安装prometheus

安装 在目标集群上&#xff0c;执行如下命令&#xff1a; kubectl apply -f https://gitee.com/i512team/dhorse/raw/main/conf/kubernetes-prometheus.yml使用 1.在浏览器访问地址&#xff1a;http://master_ip:30000&#xff0c;如下图所示&#xff1a; 2.查看k8s自带的…

模拟Stevens Lewis描述的小型飞机纵向动力学的非线性动态反演控制器研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 针对Stevens和Lewis描述的小型飞机纵向动力学的非线性动态&#xff0c;研究非线性动态反演控制器可以是一个有趣的课题。动态反演控制器的目标…

智慧供水调度工控平台-业务数据化,数据模型化

平台概述 智慧供水调度工控平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑&#xff0c;以城市水资源、水生态、水…

微信小程序quickstartFunctions中云函数的应用

1、在quickstartFunctions文件中新建文件夹和文件 2、index.js 文件书写 const cloud require(wx-server-sdk);cloud.init({env: cloud.DYNAMIC_CURRENT_ENV }); const db cloud.database();// 链表查询试卷和对应的题库 exports.main async (event, context) > {retu…

现货白银投资如何挂单

如果现货白银投资者不想时时刻刻都在盯盘&#xff0c;盯紧进场的机会&#xff0c;可以采用提前挂单的方式来交易&#xff0c; 这样做的好处很多&#xff0c;尤其是在市场行情波动大的时候&#xff0c;投资者如何手动下单&#xff0c;很难在自己期望的价格成交以&#xff0c;导致…

SAP ERP系统屏幕变式(SHD0)的应用

在SAP/ERP项目实施中屏幕变式技术(SHD0)的应用非常广泛,基本每个项目都会大量的应用,通过屏幕变式技术可以不用任何开发情况下,非常方便将SAP操作界面的某些字段根据业务要求进行锁定、隐藏或设为必须输入。 下面通过一个实际项目案例来了解下屏幕变式的具体应用 业务需…

本地非文字资源无法加载

目录 方法A.静态/动态绑定路径 方法B.require导入&#xff08;运行时加载&#xff09; 方法C.import导入&#xff08;x&#xff09;&#xff08;编译时加载&#xff09; 方法D.ref直接操作元素赋值&#xff08;x&#xff09; 相关知识 import和requir区别 模板路径&#…

NLP(六十二)HuggingFace中的Datasets使用

Datasets库是HuggingFace生态系统中一个重要的数据集库&#xff0c;可用于轻松地访问和共享数据集&#xff0c;这些数据集是关于音频、计算机视觉、以及自然语言处理等领域。Datasets 库可以通过一行来加载一个数据集&#xff0c;并且可以使用 Hugging Face 强大的数据处理方法…

RocketMQ教程-(5)-功能特性-消费者分类

Apache RocketMQ 支持 PushConsumer 、 SimpleConsumer 以及 PullConsumer 这三种类型的消费者&#xff0c;本文分别从使用方式、实现原理、可靠性重试和适用场景等方面为您介绍这三种类型的消费者。 背景信息​ Apache RocketMQ 面向不同的业务场景提供了不同消费者类型&…