关注+星标公众,不错过精彩内容

来源 | 嵌入式技术开发

之前给大家分享过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

程序备份设计

即使有上面的各种设计的保障,也不能保证升级过程不会失败。最好能够设计一个程序备份区,在程序升级失败时运行备份区程序。

下面介绍一种简单的远程升级的步骤:

  1. 服务器发送升级请求指令。

  2. 设备回复收到请求升级指令。

  3. 服务器发送程序升级数据。(一般包含包头、包号、总包数、分包的程序数据、校验)

  4. 设备收到程序数据后,确认校验无误,存储到程序缓存区,并按包号回复服务器,防止出现传输包错乱。

  5. 服务器收到回复后再发送下一包数据,直至结束。

  6. 程序数据发送完成后,服务器发送升级结束指令。

  7. 设备收到结束指令后,回复服务器。并在Flash指定位置写入升级标志,重启进入BOOT程序。

  8. BOOT程序读取升级标志,若需要升级,则读取程序缓存区数据,写入到Flash中。

  9. 升级完毕,跳转到Flash指定地址运行。

------------ END ------------

后台回复『单片机』『嵌入式软件设计与开发』相关文章。

欢迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

欢迎关注我的视频号:

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

远程升级单片机程序设计思路相关推荐

  1. 03-STM32+Air724UG远程升级篇OTA(自建物联网平台)-STM32+Air724UG实现利用http/https远程更新STM32程序(TCP指令,单片机程序检查更新)

    说明 这节测试一下STM32+Air724UG实现利用http远程更新STM32程序 我已经把固件文件放在了自己的服务器上 默认使用本人提供的下载路径测试 文件路径:  网站根目录->ota-& ...

  2. 03-STM32+BC26丨260Y远程升级篇(自建物联网平台)-功能测试-STM32+BC26丨260Y实现利用http远程更新STM32程序(单片机程序检查更新)

    说明 这节测试一下STM32+BC26丨260Y实现利用http远程更新STM32程序 提供了BC26 和 BC260Y两份程序 两份程序代码是一样的,只有小小个别的差别 这节以STM32+BC260 ...

  3. 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/ 请 ...

  4. STM32F103代码远程升级(五)基于MQTT协议WiFi远程升级代码的实现

    文章目录 一.WiFi模块的选用与介绍 二.ESP8266的固件擦除与烧写 1.ESP8266 Flash擦除工具的安装与使用. 2.ESP8266固件烧写 (1)在线获取固件文件 (2)获取SDK ...

  5. 8266远程升级stc单片机-isp

    bin包制作 bin文件前添加16个字节,只用到了前4个字节,用于存放bin文件长度,如何添加这16个字节呢,见下图 下面就是输入的16个字符,我输入的是a 下图长度就填充好了 使用ESP官方工具把这 ...

  6. 关于STC单片机的远程升级

    关于STC单片机的远程升级 尽量写的通俗一点,有错误之处请不吝赐教. 我对单片机的理解:单片机是运算器+ram(失电后数据丢失)+rom(失电后数据依然保存)+外部设备(各种IO),它是以时序而工作的 ...

  7. STC51单片机实现IAP远程升级过程分享

    STC51单片机实现IAP远程升级过程分享 1.STC内部ISP更新机制 2.了解51单片机IAP分区 3.IAP分区的调用流程与IAP部分源码: 4.IAP步骤总结 5.源码下载 关于STC单片机I ...

  8. Arduino STC单片机远程升级(1)单机版 STC_OTA云端升级

    Arduino STC单片机远程升级(1)单机版 文章目录 Arduino STC单片机远程升级(1)单机版 前言 一.ESP32对STC进行单机升级 二.使用步骤 1.引入库 2.需要烧写的单片机程 ...

  9. 【阿里云生活物联网架构师专题 ④】分享可商用的ESP8266 SDK连接阿里云物联网生活平台的在线远程升级OTA笔记。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.esp32接入阿里云物联网平台,实现天猫精灵语音控制: 2.es ...

  10. 基于IAP和Keil MDK的远程升级设计

    写在前面:三周之前,我突然想写一个远程升级的程序.那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知.我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题.三 ...

最新文章

  1. python【蓝桥杯vip练习题库】BASIC-27 2n皇后问题(八皇后问题 搜索)
  2. mysql 同一张表 某个字段更新到另一条数据上_面试基础:数据库MySQL基础入门(下)...
  3. RabbitMQ消息队列(十三)-VirtualHost与权限管理
  4. 搭建spring MVC项目
  5. 从 SQL Server 到 MySQL (三):愚公移山 - 开源力量
  6. ImportError: DLL load failed: 找不到指定的模块。Import tensorflow时
  7. 【转】 opengl编程学习笔记(三)(2D绘图)
  8. mysql handlersocket_HandlerSocket介绍
  9. python如何循环sql语句_python sql 循环语句怎么写-问答-阿里云开发者社区-阿里云...
  10. bim 骗局_来自建筑行业的BIM骗局
  11. 软件项目经理应具备的素质和条件_一个合格的软件项目经理应该具备哪些条件?...
  12. qualifiers
  13. AutoLine源码之RobotFramework运行器
  14. java什么是工厂_java – 创建工厂的什么名字是什么? (FooFactoryFactory听起来很傻的imo)...
  15. 碰到文件名目录名或卷标语法不正确怎样解决?
  16. 递归、迭代、分治、回溯、动态规划、贪心算法
  17. python中科学计数法怎么表示_python科学计数法转换
  18. PHP多人聊天系统,ttltCha​tPHP多人在线聊天系统软件源码 v0.0.12
  19. 简单到出人意料的CNN图像分类策略
  20. 企业电子邮箱的企业网盘是什么?如何使用?

热门文章

  1. 常用的Unicode码表(汉字从A到Z、数字、英文)
  2. oracle断电ora-01033,ora-00600,
  3. 培根密码(Bacon)——python解密
  4. CSS盒模型完整介绍
  5. pythonweb简历_python简历-(网络版)
  6. 虚拟机win 7 上安装VWware Tools提示升级系统到SP1
  7. 电容的串联和并联的性质
  8. eNSP配置VLAN间路由
  9. python爬虫实战--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
  10. 上海计算机应用基础自考上机,2012年上海自考《计算机应用基础》上机考核大纲...