请选择 进入手机版 | 继续访问电脑版
查看: 3512|回复: 17

MCU-OTA参考解决方案

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32003
    最后登录
    2024-4-9
    发表于 2021-11-25 16:27:14 | 显示全部楼层 |阅读模式
    MCU-OTA参考解决方案

    1. 全面且灵活的MCU-OTA工程

    OTA的全称是Over-The-Air,泛指对某个嵌入式系统的软件在线升级。

    就MCU系统来说,目前主要是对整个Firmware进行在线更新,所以也称之为FOTA,本文中OTA与FOTA同义。
    我们构建了一个适用于恩智浦MCU平台的OTA参考工程,客户可以基于这个工程开发适用于自己项目的OTA系统。
    请从如下链接获取工程源代码和文档:
    Bootloader: https://github.com/NXPmicro/sbl
    Firmware: https://github.com/NXPmicro/sfw
    用户手册:https://github.com/NXPmicro/sbl/tree/master/doc
    https://github.com/NXPmicro/sfw/tree/master/doc

    对于这个复杂的工程,我们尽力做到了全面和灵活的平衡,全面主要是指:
    包含bootloader(SBL)和firmware(SFW)两个独立git工程
    支持9个NXP MCU平台,多种OTA方式,完善的安全策略,丰富的开发环境,详细的文档资料。
    看看有没有你在用或者感兴趣的平台
    13.png

    作为MCU工程师,首要解决的问题就是开发环境。MCU-OTA工程支持Linux主机GCC_ARM编译开发,Windows主机GCC_ARM、IAR、MDK编译开发调试环境。

    我们又是怎么做到灵活的呢?

    解耦:不同平台之间没有任何关联,git clone或者下载代码后,可仅保留你用到的平台代码,其他平台文件夹可以直接删除。(当然轻clone也可以达到相似效果)

    裁剪:引入Kconfig(menuconfig)机制,半图形化的配置方式和宏的自动关联管理,方便客户对工程特性进行裁剪配置。

    预设:MCU-OTA工程是基于NXP MCU EVK开发板开发的,每个开发板都有特定的Flash芯片,但是我们在MCU-OTA工程里预设了多种类Flash芯片数据,客户只需要选择自己使用的Flash芯片,MCU-OTA会自动获取对应的参数,方便客户的代码快速在Flash上跑起来。

    分层:我们尽力做到代码层次清晰,客户可以方便的增加自己的代码,或者从MCU-OTA工程里提取自己需要的代码。

    2. 先看看总体架构

    下图展示了MCU-OTA工程的系统概念。

    MCU硬件系统:MCU-OTA基于NXP的EVK开发板开发

    SBL:SecureBootloader,负责验签,烧写,交换,失败回滚Firmware,支持In-System-Program (ISP)功能,方便烧写Firmware
    SFW:SecureFirmware,基于FreeRTOS的Firmware实例,支持SD卡,U盘,AWS,和Aliyun等OTA例程
    Host Tool:Windows或者Linux主机工具,用来创建、烧写、签名,加密SBL和SFW可执行镜像,由多个独立的工具软件组成
    14.png

    更多的功能特性,让我们来看系统框图。
    15.png

    基于NXP Soc完善的安全硬件模块,SBL和SFW可以方便的实施验签,加密等安全OTA策略。同时可以使用硬件加速MbedTLS的某些加密算法。

    从上图可以看出,SBL是基于open source的MCUBoot工程,加上Scons工程编译工具,Kconfig工程配置工具,NXP MCUSDK driver代码等创建而成的工程。其重点不仅在于对OTA的支持,更在于对安全加密功能的实现。同时,基于NXP MCU的硬件Remap功能,SBL优化了OTA时对Firmware镜像的交换操作,取消了对Flash的频繁擦除和烧写,在执行时间和Flash寿命方面有显著优化。更多的SBL特性,请参阅ReleaseNotes和User Guide文档。

    基于最广泛使用的FreeRTOS实时操作系统,我们创建了SFW工程,并采用与SBL相同的Scons + Kconfig方式组织代码的编译与配置。同时根据不同板卡硬件特性,集成了U盘,SD卡OTA功能,远程OTA方面,支持AWS和Aliyun两个云服务商。另外,我们把需要与SBL配合的操作,集合在了一个C文件和一个头文件中,客户在不使用SFW的情况下,可以方便快速的在自己的Firmware项目中集成这两个文件,从而方便的与SBL配合完成OTA功能。

    在烧写镜像,配置eFuse,生成密钥,对镜像进行签名、加密方面,你需要一些运行在Host主机侧的工具。不要担心,NXP提供了完备的解决方案,请参阅UserGuide下载使用相关的Host Tools。

    3. 适合MCU用户的开发习惯

    做为一个MCU平台工程,肯定要想MCU客户之所想。首当其冲的是开发环境问题。我们不赞成把一个“Linux +make + makefile + GCC_ARM”的环境强加给客户,徒增产品开发的难度。毕竟很多MCU客户并不需要熟悉Linux环境,IAR, MDK,以及其他Windows环境下的IDE集成开发环境很好用,也很容易上手。这一点,RT-Thread做了很好的工作。我们也在参考了其架构的基础上,采用Scons + Kconfig来组织编译SBL和SFW代码。

    Scons是一个开源项目,相关资料网上很容易查到,不再赘述。你可以把Scons理解成make,只不过它是用Python写的,跨平台支持,脚本可读性和命令扩展性是它的优点。

    那么客户是不是需要先安装Python呢?不需要!我们的SBL和SFW工程自带了Python环境,其实不仅仅是Python环境,包括Windows下的命令终端器,Kconfig命令,以及其他用得到的环境命令,都已经被包含在工程里了。当你git clone,或者直接下载压缩包获取到SBL/SFW工程源代码后,不需要任何额外的环境建设(当然Git、IAR、MDK还是要自己安装的),可以直接根据UserGuide或者README里的Quick Start,开始上手编译调试工作。

    注:Linux主机环境需要自己安装Python3.6,Scons等支持包,都玩Linux了,这些肯定不是问题。

    MCU用户没听说过Kconfig?没关系!以程序员的智商和思维方式,根本不用学,上下左右箭头,回车键来回捣腾捣腾,都明白了。看看下图,不需要过多解释吧。至于用Linux环境开发的用户,就更不用啰嗦了吧。
    16.png

    通过Kconfig对代码进行配置裁剪完成后,就可以执行scons --ide=iar,或者 scons--ide=mdk5生成对应的IDE工程,然后,愉快的玩起来吧!

    4. 安全的OTA

    大家知道NXP的slogan么?打开NXP的芯片手册,或者各种培训资料,你大概率能找到这句话:
    17.png

    同样,在SBL和SFW工程里,双击某个平台的env.bat后,我们也打印了这句话。
    18.png

    其实从项目工程的命名,你也应该能感觉到我们想把重点放在哪儿,SBL、SFW里的S,并不是Secondary,而是Secure的意思。万物互联的时代,裸奔会是件极其危险的事情。
    NXP一向以安全著称,我们的Soc内置了完善的硬件安全引擎,支持丰富的加密算法。我们的BootROM代码在定义开发阶段就一直把安全作为首要任务,作为信任根随Soc一起流片。MCU-OTA工程就是想基于NXP完善的硬件安全引擎,为客户展示一个完整的OTA信任链。
    19.png

    在SBL的Release Notes里,展示了各平台已经支持的安全策略。

    All platforms: RSA(2048), ECDSA(P256) signand verify by software
    evkmimxrt10xx:
    Soc sign-verify: HAB RSA(2048,3072,4096)
    Soc encrypted XIP boot: Yes
    evkmimxrt1170:
    Soc sign-verify: HAB RSA(2048,3072,4096),HAB ECDSA(p-256/384/521)
    Soc encrypted XIP boot: Yes
    evkmimxrtxxx:
    Soc sign-verify: ROM RSA(2048,3072,4096)
    Soc encrypted XIP boot: Yes
    lpc55s69:
    Soc sign-verify: ROM RSA(2048,4096)
    Soc encrypted XIP boot: Yes

    安全特性方面更多的细节,请参考User Guide。

    5. 持续支持与开发

    如你所见,目前MCU-OTA工程(SBL, SFW)已经支持NXP的9个MCU平台。

    后续我们会增加对NXP其他MCU平台的支持,包括新出的MCU芯片。

    在OTA和安全特性方面,我们很乐意听取客户的意见,持续优化和解决问题。同时,我们也欢迎直接在Github平台给SBL和SFW工程提交patch,与客户的交流与协作对我们很重要,帮助我们共同成长,谢谢!

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:32
  • 签到天数: 1932 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17214
    最后登录
    2024-4-18
    发表于 2021-11-25 18:11:06 | 显示全部楼层
    收藏收藏
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92609
    最后登录
    2024-4-9
    发表于 2021-11-25 22:16:48 | 显示全部楼层
    这个不错,赶紧收藏 1.png 2.png 3.png 4.png 7.png 9.png 6.png 5.png 8.png 10.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-7-8 09:06
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    18

    主题

    438

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    2209
    最后登录
    2024-3-5
    发表于 2021-12-9 11:32:07 | 显示全部楼层
    上手,练起来
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    74
    最后登录
    2022-9-28
    发表于 2021-12-9 16:23:28 | 显示全部楼层
    我用MDK环境编译的SBL,EVK板用CMSIS-DAP下载可以找到设备,项目的主板用Jlink下载找不到设备,不知道怎么解?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    74
    最后登录
    2022-9-28
    发表于 2021-12-9 16:47:07 | 显示全部楼层
    可以下载
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    74
    最后登录
    2022-9-28
    发表于 2021-12-9 16:59:00 | 显示全部楼层
    文档提到:程序下载进去,主板设置为XIP模式,然后reset主板;
    问题:1.怎么设置为XIP模式?
    现象:普通下电、上电,没有log输出。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-3 10:59
  • 签到天数: 329 天

    [LV.8]以坛为家I

    3

    主题

    1386

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    5339
    最后登录
    2024-4-16
    发表于 2021-12-10 11:10:51 | 显示全部楼层
    真心不错,要是能直持更多的NXP mcu就更好了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32003
    最后登录
    2024-4-9
     楼主| 发表于 2021-12-10 14:15:17 | 显示全部楼层
    黄豆 发表于 2021-12-9 16:59
    文档提到:程序下载进去,主板设置为XIP模式,然后reset主板;
    问题:1.怎么设置为XIP模式?
    现象:普通下 ...

    sbl是XIP启动的。使用KEIL,可以先load,然后再点击debug。或者把Utilities->Update Target before Debugging选项勾选上。
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-1-15 15:23
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    12

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    2022-1-17
    发表于 2022-1-17 00:36:46 来自手机 | 显示全部楼层
    lpc  系列的都可以MCU-OTA吗?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-19 08:51 , Processed in 0.151004 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表