1.写在前面:

一般利用云端更新MCU端固件的机制是:云端通过一个能联网的模块(例如wifi,4G等)将固件信息传输到MCU端。整个过程也就是 云端(TCP)-->模块(串口)-->MCU。当然这其中还涉及到固件完整性的校验,传输过程的稳定性等等。通过接受双方会选择校验机制确保固件的一致性,例如CRC、MD5、Hash等。

2.关于机制云与STM32的固件更新的说明

首先将STM32划分为四个区域:

Bootloader:存储 Bootloader 固件,MCU 上电后首先运行该固件。
 FLAG:存储有关升级的相关标志位,Bootloader 和 APP 都需要操作该区域。
 APP:存储用户程序固件。
 APPBAK:临时存储云端下发的新固件,升级固件的一个过渡存储区。

3. 再谈谈我对这个固件更新过程的认识

说白了就是对内部flash的操作,首先接受云端的固件存储在固件备份区,然后进行加密校验,校验通过就将标志区的有新固件更新的标志置位;校验不通过就将备份区的固件擦除,通知云端。

MCU重启后会运行boot程序,通过读取标志区的信息判断有没有固件需要更新。有就进入更新流程,没有就跳转到app程序。

在这个过程中要注意MD5值的校验和flash地址的计算,每次分片数据的大小是由MCU端决定的,这样就保证了计算偏址的灵活性。

下面是机智云官方提供的流程图

4.STM32的启动文件

机智云提供的文档里关于STM32启动过程的描述如下:

总结下来就是:

STM32的内核复位后从0x80000004出取出复位中断服务入口地址,进而跳转到main函数。

AREA    |.text|, CODE, READONLY ; Reset handler
Reset_Handler   PROC
EXPORT  Reset_Handler             [WEAK]
IMPORT  __main
IMPORT  SystemInit
LDR     R0, =SystemInit
BLX     R0              ;BL表示跳转到R0地址,跳转前将下一条指令地址保存在LR
LDR     R0, =__main     ;LDR表示从存储器加载一个字到寄存器
BX      R0              ;BX表示跳转到R0地址不用返回
ENDP

这里需要注意的是:复位中断服务程序的地址在栈顶地址偏移4字节的位置,后面实现地址跳变的时候会用到。

好了,基本的概念和一些需要关注的点就介绍完了。下篇文章我们学习app部分的程序设计思路。

机智云OTA过程MCU端程序设计学习(一)相关推荐

  1. 机智云OTA过程MCU端程序设计学习(二)

    这篇我们主要是学习下app部分固件的设计逻辑. 1. 初始化过程中开辟一个环形缓冲区,设置串口为中断接收,重写串口中断回调函数,也就是每次接收一个字节的数据就往环形缓冲区里丢一个数据. void gi ...

  2. 机智云OTA实践教程

    机智云的官方OTA帮助文档说得很不清楚,如果你是第一次尝试OTA看完文档你绝对晕了,这里SimonLiu梳理一下ESP8266 SOC模式的机智云OTA流程,也顺便当做记录,下次查找方便. 首先以下图 ...

  3. 《近匠》专访机智云 CTO 刘琰—从 0到1 开启智能化硬件开发

    在物联网浪潮之下,智能硬件的火爆程度不断升温.未来十年,全球接入互联网的硬件设备将达到1万亿台.如今的智能硬件产品正成为下一个"台风口",同时这对于终端市场也是一个机遇.然而从创新 ...

  4. 【入门必看】机智云产品、功能、服务一览表

    前言 简单来说,传统电子设备接入云平台需要开发三个方面的能力: 1.是完成设备与云端的通信能力: 机智云提供了多种基于wifi(GPRS.BLE)模块的通信解决方案,企业开发者只需要在wifi模块上烧 ...

  5. leach协议c++代码_入门教程4:教你STM32F407标准库移植机智云代码(控制LED灯)

    我们知道,使用机智云自助开发平台会根据产品定义的数据点生成对应产品的设备端代码即MCU代码包.自动生成的代码实现了机智云通信协议的解析与封包.传感器数据与通信数据的转换逻辑,并封装成了简单的API,且 ...

  6. 32要烧写3个bin文件_入门教程3:如何给ESP8266烧录Gagent固件,快速接入机智云实现透传功能...

    上两文说到在机智云上创建自己的第一个设备和使用MCU代码自动生成器生成MCU代码包和修改的注意事项后,今天我们来谈谈如何快速从零开始接入机智云,实现简单的透传功能,以及常见的配网失败问题排查,这里主要 ...

  7. 机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...

    [ 写在前面 ] 自智云社区开辟IoT开源项目专区以来,一直有IoT开发者在贡献案例.玛莉甄选了一些具有代表性的案例分享给IoT爱好者们,本文亦如此. 若你有好的案例,想和IoT爱好者们分享,欢迎投稿 ...

  8. 《物联网 - 机智云开发笔记》第1章 机智云平台快速入门

    机智云官网 1.1机智云与GoKit3简介 机智云为开发者提供物联网设备的自助开发工具.后台技术支持服务.设备远程操控管理.数据存储分析.第三方数据整合.硬件社交化等技术服务,也为智能硬件厂家提供一站 ...

  9. app显示机智云服务器图片,【图片】【使用指南】机智云FAQ文档【gokit吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.问:为什么不能绑定我的设备? 答:绑定不成功一般有两种情况,具体可查看输出的日志:{"error_message": " ...

最新文章

  1. 使用函数对4*4的二维数组转置
  2. 深度丨AI挑战人类情感!机器人写诗出书背后透露了什么?
  3. MapReduce原理与设计思想
  4. 创建线程池的四种方式_创建线程到底有几种方式?
  5. 创维oled工厂模式abd_创维OLED游戏电视创维专业电竞显示器 为SN战队保驾护航
  6. UIImage指定区域自由拉伸
  7. PostgreSQL Huge Page 使用建议 - 大内存主机、实例注意
  8. WEB安全基础-WEB服务器相关知识
  9. 干得漂亮!法院在微信朋友圈精准投放“老赖”广告 网友:建议全国推广
  10. struts2上传文件时把文件放到服务器真实路径下的webapps\upload下
  11. php php_strip_whitespace,php strip_whitespace函数怎么用
  12. nginx 正向代理_看这篇彻底认识Nginx!
  13. javascript基础(对象继承与引用)
  14. 基于SSM流浪宠物管理系统
  15. Android自定义控件学习
  16. nodejs Log4js v2.x配置使用
  17. IIS6/IIS7以上、Nginx、Apache拦截屏蔽垃圾蜘蛛UA爬行降低负载方法IIS7.5如何限制某UserAgent 禁止访问
  18. 仅用 1/4 数据量还原真人语音100%细节,火山语音上新超自然对话语音合成技术...
  19. 选择排序(Selection sort)是一种简单直观的排序算法
  20. Hadoop HA集群配置问题记录

热门文章

  1. 最适合烟酒茶业使用的进销存软件,用对了超越同行毫不费力
  2. 视频监控安防平台(企业级)-国标28181平台
  3. 南航金城学院计算机网络试卷及答案,南航金城学院期末电路理论基础考试题及答案解析.pdf...
  4. unity2D小游戏打地鼠
  5. vue文件命名规范和文件夹命名规范
  6. 大数据时代的互联网分析引擎
  7. 中小学信息学可以参加的比赛
  8. x32计算机控制,Behringer干货|带你用电脑和ipad玩转X32
  9. 基于51单片机自动定时浇花程序
  10. 按键精灵html代码,按键精灵键盘代码~