远程升级单片机程序设计思路
关注+星标公众号,不错过精彩内容
来源 | 嵌入式技术开发
之前给大家分享过IAP升级APP的例子,今天为大家分享一下远程升级单片机的设计思路。
在物联网应用中,远程IAP升级MCU的程序是一项非常有用的功能。当设备出现程序问题或者需要更新程序时,只需要在服务器上对设备进行升级,不需要在有专门的人员去现场进行升级,节省人力物力。
嵌入式专栏
1
远程升级的基础功能
要实现远程升级,首先要实现以下几个基本功能:
1.Flash读写
不管是本地IAP还是远程IAP,这都是最基本的功能。
2.无线通讯
可通过WIFI、4G、以太网等多种方式来实现,根据实际项目需求选择。
3.通讯协议
常用的通讯协议有TCP、HTTP、FTP、MQTT等。其中HTTP、FTP和MQTT都属于应用层协议,都是基于TCP(传输层)来实现的。用户也可以自己基于TCP编写简单的通讯协议来实现。
远程IAP与本地IAP的设计思路是一致的,都需要设计BOOT程序和APP程序。但也有一些需要注意的地方。主要是远程升级需要考虑网络延迟甚至网络中断的问题。体现在以下几方面:
嵌入式专栏
2
设计程序缓存区
在内部或外部存储器开辟一块区域,用于存储分包接收到的程序数据。等到全部数据接收完毕后再一次性写入到Flash进行升级。
这样做有以下2点好处:
1.直接升级时间可能会比较长,影响用户正常使用,增加缓存区设计可以大大减少升级时间。
2.直接升级时,如果网络出现问题,可能导致设备无法正常启动变砖。增加缓存区设计后,即使升级数据传输失败,也不影响设备的正常使用。
嵌入式专栏
3
健壮的通讯协议
本地升级时数据传输出错的概率比较小,但远程设计时就需要多考虑一些,比如前后两包数据可能同时达到等。
因此,设计通讯协议时,就要更严谨,服务器发送的指令和数据都需要设备的确认回复。
同时,最好有一定的校验信息。,比较校验和,CRC校验等。
嵌入式专栏
4
程序备份设计
即使有上面的各种设计的保障,也不能保证升级过程不会失败。最好能够设计一个程序备份区,在程序升级失败时运行备份区程序。
下面介绍一种简单的远程升级的步骤:
服务器发送升级请求指令。
设备回复收到请求升级指令。
服务器发送程序升级数据。(一般包含包头、包号、总包数、分包的程序数据、校验)
设备收到程序数据后,确认校验无误,存储到程序缓存区,并按包号回复服务器,防止出现传输包错乱。
服务器收到回复后再发送下一包数据,直至结束。
程序数据发送完成后,服务器发送升级结束指令。
设备收到结束指令后,回复服务器。并在Flash指定位置写入升级标志,重启进入BOOT程序。
BOOT程序读取升级标志,若需要升级,则读取程序缓存区数据,写入到Flash中。
升级完毕,跳转到Flash指定地址运行。
------------ END ------------
后台回复『单片机』『嵌入式软件设计与开发』相关文章。
欢迎关注我的公众号,回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
欢迎关注我的视频号:
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。
远程升级单片机程序设计思路相关推荐
- 03-STM32+Air724UG远程升级篇OTA(自建物联网平台)-STM32+Air724UG实现利用http/https远程更新STM32程序(TCP指令,单片机程序检查更新)
说明 这节测试一下STM32+Air724UG实现利用http远程更新STM32程序 我已经把固件文件放在了自己的服务器上 默认使用本人提供的下载路径测试 文件路径: 网站根目录->ota-& ...
- 03-STM32+BC26丨260Y远程升级篇(自建物联网平台)-功能测试-STM32+BC26丨260Y实现利用http远程更新STM32程序(单片机程序检查更新)
说明 这节测试一下STM32+BC26丨260Y实现利用http远程更新STM32程序 提供了BC26 和 BC260Y两份程序 两份程序代码是一样的,只有小小个别的差别 这节以STM32+BC260 ...
- 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级STM32程序,基于Wi-Fi,同时支持升级Wi-Fi,APP控制版)...
https://www.cnblogs.com/yangfengwu/p/10456306.html 视频教程 https://www.bilibili.com/video/av54942955/ 请 ...
- STM32F103代码远程升级(五)基于MQTT协议WiFi远程升级代码的实现
文章目录 一.WiFi模块的选用与介绍 二.ESP8266的固件擦除与烧写 1.ESP8266 Flash擦除工具的安装与使用. 2.ESP8266固件烧写 (1)在线获取固件文件 (2)获取SDK ...
- 8266远程升级stc单片机-isp
bin包制作 bin文件前添加16个字节,只用到了前4个字节,用于存放bin文件长度,如何添加这16个字节呢,见下图 下面就是输入的16个字符,我输入的是a 下图长度就填充好了 使用ESP官方工具把这 ...
- 关于STC单片机的远程升级
关于STC单片机的远程升级 尽量写的通俗一点,有错误之处请不吝赐教. 我对单片机的理解:单片机是运算器+ram(失电后数据丢失)+rom(失电后数据依然保存)+外部设备(各种IO),它是以时序而工作的 ...
- STC51单片机实现IAP远程升级过程分享
STC51单片机实现IAP远程升级过程分享 1.STC内部ISP更新机制 2.了解51单片机IAP分区 3.IAP分区的调用流程与IAP部分源码: 4.IAP步骤总结 5.源码下载 关于STC单片机I ...
- Arduino STC单片机远程升级(1)单机版 STC_OTA云端升级
Arduino STC单片机远程升级(1)单机版 文章目录 Arduino STC单片机远程升级(1)单机版 前言 一.ESP32对STC进行单机升级 二.使用步骤 1.引入库 2.需要烧写的单片机程 ...
- 【阿里云生活物联网架构师专题 ④】分享可商用的ESP8266 SDK连接阿里云物联网生活平台的在线远程升级OTA笔记。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.esp32接入阿里云物联网平台,实现天猫精灵语音控制: 2.es ...
- 基于IAP和Keil MDK的远程升级设计
写在前面:三周之前,我突然想写一个远程升级的程序.那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知.我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题.三 ...
最新文章
- python【蓝桥杯vip练习题库】BASIC-27 2n皇后问题(八皇后问题 搜索)
- mysql 同一张表 某个字段更新到另一条数据上_面试基础:数据库MySQL基础入门(下)...
- RabbitMQ消息队列(十三)-VirtualHost与权限管理
- 搭建spring MVC项目
- 从 SQL Server 到 MySQL (三):愚公移山 - 开源力量
- ImportError: DLL load failed: 找不到指定的模块。Import tensorflow时
- 【转】 opengl编程学习笔记(三)(2D绘图)
- mysql handlersocket_HandlerSocket介绍
- python如何循环sql语句_python sql 循环语句怎么写-问答-阿里云开发者社区-阿里云...
- bim 骗局_来自建筑行业的BIM骗局
- 软件项目经理应具备的素质和条件_一个合格的软件项目经理应该具备哪些条件?...
- qualifiers
- AutoLine源码之RobotFramework运行器
- java什么是工厂_java – 创建工厂的什么名字是什么? (FooFactoryFactory听起来很傻的imo)...
- 碰到文件名目录名或卷标语法不正确怎样解决?
- 递归、迭代、分治、回溯、动态规划、贪心算法
- python中科学计数法怎么表示_python科学计数法转换
- PHP多人聊天系统,ttltCha​tPHP多人在线聊天系统软件源码 v0.0.12
- 简单到出人意料的CNN图像分类策略
- 企业电子邮箱的企业网盘是什么?如何使用?
热门文章
- 常用的Unicode码表(汉字从A到Z、数字、英文)
- oracle断电ora-01033,ora-00600,
- 培根密码(Bacon)——python解密
- CSS盒模型完整介绍
- pythonweb简历_python简历-(网络版)
- 虚拟机win 7 上安装VWware Tools提示升级系统到SP1
- 电容的串联和并联的性质
- eNSP配置VLAN间路由
- python爬虫实战--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
- 上海计算机应用基础自考上机,2012年上海自考《计算机应用基础》上机考核大纲...