vesperW · 5月30日

推荐一个很赞的单片机OTA开源项目

实现的功能

mOTA 是一个专为 32 位微控制器(MCU)设计的 OTA(空中下载)组件,提供了一整套固件更新解决方案。

以下是 mOTA 的详细功能介绍:

本组件实现了以下功能:

  1. 固件包完整性检查: 自动检测固件 CRC 值,验证固件数据的准确性。
  2. 固件加密: 支持 AES256 加密算法,提高固件的安全性。
  3. APP 完整性检查: 支持在 APP 运行前进行完整性检查,以确认可运行的固件通过数据校验。
  4. 断电保护: 当固件更新过程中(含下载、解密、更新等过程),任何一个环节断电,设备再次上电时,依然能确保有可用的固件。(需在 bootloader_config.h 中配置为双分区或三分区)
  5. 固件水印检查: 可检测下载的固件包是否携带了特殊的水印,用于确认非第三方或非匹配的固件包,防止错误更新。
  6. 固件自动更新: 当 download 或 factory 分区有可用的固件,且 APP 分区为空或 APP 分区不是最新版本的固件时,可配置为自动开始更新。
  7. 恢复出厂设置: factory 分区设计用于存放稳定版的固件,当设备需要恢复出厂设置时,该固件会被更新至 APP 分区。
  8. 无须 deinit : 我们知道,固件更新完毕后从 bootloader 跳转至 APP 前需对所用的外设 deinit ,以使外设恢复至上电时的初始状态。本组件的 bootloader 包含了下载器的功能,当使用复杂的外设收取固件包时, deinit 也将变得复杂,甚至很难排除对 APP 的影响。为此,本组件采用了再入 bootloader 的方式,给 APP 提供一个相当于刚上电的外设环境,免去了 deinit 的代码。
  9. 功能可裁剪: 本组件通过功能裁剪(bootloader_config.h)可实现单分区、双分区、三分区的方案切换、是否配置解密组件、是否自动更新 APP 、是否检查 APP 完整性、 是否使用 SPI Flash 等功能。
  10. 固件存放至 SPI flash : 本组件可通过 bootloader_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 。

软件架构

image.png
软件架构

  • 硬件层描述的是运算器件和逻辑器件,如 CPU、ADC、TIMER、各类 IC 等,是所有软件组件的硬件基础,是软件逻辑的最终底层实现。
  • 硬件抽象层是位于驱动与硬件电路之间的接口层,将硬件抽象化。它隐藏了特定平台的硬件接口细节,为驱动层提供抽象化的硬件接口,使其具有硬件无关性。
  • 驱动层通过调用硬件抽象层的开放接口,实现一定的逻辑功能后封装,提供给上层软件调用。
  • 数据传输层负责收发数据,对外开放的是数据发送与接收相关的接口,屏蔽了通讯接口的逻辑代码,使其易于修改为其他类型的通讯接口。
  • 协议析构层将调用数据传输层的数据收发接口进行封包发送与收包解析,通过实现公有协议或自定义的协议,完成对数据的构造和解析。
  • 应用层负责业务逻辑代码的实现,通过调用其他层封装的接口,完成顶层逻辑功能。

文件架构

├─ document                 设计和原理性文档
├─ example                  示例工程
├─ image                    图片资源
├─ source                   mOTA 组件的源码
│  ├─ bootloader            mOTA 组件的 bootloader 部分
│  │  ├─ Component          第三方库
│  │  ├─ Config             bootloader 配置文件
│  │  ├─ Core               核心源码
│  │  │  ├─ Module          代码模块(可移植部分)
│  ├─ BSP                   BSP(板级支持包)
├─ tools                    mOTA 组件的工具部分
│  ├─ firmware_packager     固件打包工具
│  ├─ YModem_Sender         基于 YModem-1K 协议的发送工具
├─ README.md                说明文件
├─ LICENSE                  Apache-2.0 开源许可

更多详细功能:https://gitee.com/DinoHaw/mOTA

作者:小麦大叔
来源:小麦大叔

推荐阅读

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
2891
内容数
284
分享一些在嵌入式应用开发方面的浅见,广交朋友
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息