0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一款专为32位MCU开发的OTA组件

STM32嵌入式开发 来源:STM32嵌入式开发 2023-02-09 10:40 次阅读

mOTA简介

mOTA 是一款专为 32 位 MCU 开发的 OTA 组件,组件包含了 bootloader 、固件打包器 (Firmware_Packager) 、固件发送器 三部分。

固件更新流程:

f605f798-a796-11ed-bfe3-dac502259ad0.png     源码地址:

https://gitee.com/DinoHaw/mOTA 作者:DinoHaw

mOTA 中的 m 可意为 mini 、 micro 、 MCU ( Microcontroller Unit ),而 OTA ( Over-the-Air Technology ),即空中下载技术,根据维基百科的定义, OTA 是一种为设备分发新软件、配置,乃至更新加密密钥(为例如移动电话、数字视频转换盒或安全语音通信设备——加密的双向无线电)的方法。 OTA 的一项重要特征是,一个中心位置可以向所有用户发送更新,其不能拒绝、破坏或改变该更新,并且该更新为立即应用到频道上的每个人。用户有可能“拒绝” OTA 更新,但频道管理者也可以将其踢出频道。由此可得出 OTA 技术几个主要的特性:

一个中心可向多个设备分发更新资料(固件);

更新资料一旦发送便不可被更改;

设备可以拒绝更新;

中心可以排除指定的设备,使其不会接收到更新资料。

mOTA功能

该组件实现了以下功能:

固件包完整性检查:自动检测固件 CRC 值,保证固件数据的可靠性。

固件加密:支持 AES256 加密算法,提高固件的安全性。

APP 完整性检查:支持 APP 运行前进行完整性检查,以确认运行的固件无数据缺陷。

断电保护:当固件更新过程中(含下载、解密、更新等过程),任何一个环节断电,设备再次上电时,依然能确保有可用的固件。(需配置为至少双分区)

固件水印检查:可检测固件包是否携带了特殊的水印,确认非第三方或非匹配的固件包。

固件自动更新:当 download 或 factory 分区有可用的固件,且 APP 分区为空或 APP 分区不是最新版本的固件时,可配置为自动开始更新。

恢复出厂设置:factory 分区存放稳定版的固件,当设备需要恢复出厂设置时,该固件会被更新至 APP 分区。

无须 deinit :我们知道,固件更新完毕后从 bootloader 跳转至 APP 前需要对所用的外设进行 deinit ,恢复至上电时的初始状态。本组件的 bootloader 包含了下载器的功能,当使用复杂的外设收取固件包时, deinit 也将变得复杂,甚至很难排除对 APP 的影响。为此,本组件采用了再入 bootloader 的方式,给 APP 提供一个相当于刚上电的外设环境,免去了 deinit 的代码。

功能可裁剪:本组件通过功能裁剪可实现单分区、双分区、三分区的方案切换、是否配置解密组件、是否自动更新 APP 、是否检查 APP 完整性、 是否使用 SPI Flash (待实现) 。

固件存放至 SPI flash :本组件可通过 user_config.h 配置 download 分区和 factory 分区的所在位置为片内 flash 或 SPI flash ,使用了 SFUD (Serial Flash Universal Driver) 作为 SPI flash 的底层驱动库。若使用的 SPI flash 支持 SFDP (Serial Flash Discovable Parameters) ,则可在不修改任何源代码的情况下更换其它品牌型号的 SPI flash 。若不支持 SFDP ,SFUD 中已有对应 SPI flash 参数表的话,也可做到在不修改任何源代码的情况下更换其它品牌型号的 SPI flash 。

mOTA软件架构

f619d718-a796-11ed-bfe3-dac502259ad0.png

硬件层描述的是运算器件和逻辑器件,如CPUADCTIMER、各类IC等,是所有软件组件的硬件基础,是软件逻辑的最终底层实现。

硬件抽象层是位于驱动与硬件电路之间的接口层,将硬件抽象化。它隐藏了特定平台的硬件接口细节,为驱动层提供抽象化的硬件接口,使其具有硬件无关性。

驱动层通过调用硬件抽象层的开放接口,实现一定的逻辑功能后封装,提供给上层软件调用。

数据传输层负责收发数据,对外开放的是数据发送与接收相关的接口,屏蔽了通讯接口的逻辑代码,使其易于修改为其他类型的通讯接口。

协议析构层将调用数据传输层的数据收发接口进行封包发送与收包解析,通过实现用户的自定义协议,完成对数据的构造和解析。

应用层负责业务逻辑代码的实现,通过调用其他层封装的接口,完成顶层逻辑功能。

f6430c50-a796-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16023

    浏览量

    343710
  • OTA
    OTA
    +关注

    关注

    7

    文章

    527

    浏览量

    34600
  • 软件架构
    +关注

    关注

    0

    文章

    60

    浏览量

    10224
  • 组件
    +关注

    关注

    1

    文章

    339

    浏览量

    17593
  • mota
    +关注

    关注

    0

    文章

    3

    浏览量

    2287

原文标题:一款专为32位MCU开发的OTA组件

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【经验】如何快速掌握一款新型MCU

    如何快速掌握一款新型MCU
    发表于 08-02 10:13

    如何快速掌握一款新的MCU

    任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址
    发表于 10-22 10:57

    如何掌握一款新的MCU的经验?

    任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址
    发表于 01-06 15:16

    求助!要找个超低功耗的MCU,希望大家可以推荐一款

    想要找一款供电电压小于1.2V,工作功率小于45uW,睡眠功率小于1uW的单片机。自己在网上搜了几,能满足上面条件的MCU几乎没有。只找到TI的MSP430L092,但这块板子太老了,不适用于
    发表于 05-14 14:12

    分享一款不错的基于STM32W108的32无线MCU RF解决方案

    分享一款不错的基于STM32W108的32无线MCU RF解决方案
    发表于 05-21 06:07

    怎样去理解和掌握一款MCU

    任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址
    发表于 11-01 07:02

    怎样挑选一款MCU平台进行嵌入式系统开发

    如今,嵌入式系统开发往往基于平台模式。MCU平台包括MCU及其相关器件(外延器件、配套器件等),集成开发环境(开发板、
    发表于 11-03 08:42

    开发一款射频SOC蓝牙芯片

    芯片产品从定义到面向市场,大约3~6个月时间。然后以蓝牙为代表的射频技术,与MCU微控制器的设计制造应用流程有诸多不同:开发一款射频SOC蓝牙芯片的周期远远长于开发
    发表于 11-10 06:49

    如何开发一款自己的App

    毫无疑问,开发一款自己的App对于初学者来说,无论从技术学习,还是找工作(或者装x),都是大利器。那么如何才能快速上手,开发一款属于自己的
    发表于 12-17 06:10

    快速掌握一款MCU的方法

    任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址
    发表于 02-08 06:48

    快速应用一款MCU的方法有哪些

    在工作中,有时往往会因为项目进度要求需要用一款自己以前未曾使用过的MCU来进行产品的开发,而且进度要求很急,为此,我结合自己使用多款MCU的经验,谈
    发表于 02-08 06:05

    如何实现MCU开发OTA升级

    本文以依托 GC211 和秉火开发板,讲述如何实现MCU开发OTA升级。 用户如果将开发了的产品发布上线销售,后期需要更新固件和程序,就需
    的头像 发表于 10-28 09:31 3160次阅读

    推荐一款实用的32位MCU-OTA组件

    mOTA 是一款专为 32 位 MCU 开发OTA 组件
    的头像 发表于 12-22 11:00 786次阅读

    针对单片机开发的轻量级OTA组件

    今天为大家分享一款开源的,专为单片机开发的轻量级 OTA 组件:mOTA。
    的头像 发表于 12-26 09:36 965次阅读

    一款专为32位MCU开发OTA组件-mOTA

    今天为大家分享一款开源的,专为单片机开发的轻量级 OTA 组件,挺有参考和学习意义的。
    的头像 发表于 04-04 09:18 707次阅读