• 痞子衡嵌入式:MCUBootUtility v2.0来袭,i.MXRT1010哪里跑


    --
      恩智浦半导体从2017年10月开始正式推出业内首款跨界处理器—i.MX RT系列,如今距离该系列第一款i.MXRT1050发布已过去近2年,i.MX RT系列在行业里应用越来越广泛,i.MX RT系列家族成员也越来越壮大。为了进一步满足不同行业的需求,恩智浦近期推出了i.MX RT系列又一款新品,主打极致性价比,LQFP80小巧封装,主频高达500MHz,售价却不到1美金,它究竟是何方神圣?不用猜啦,它就是i.MXRT1010。为了配合i.MXRT1010的闪亮登场,痞子衡特地将一站式启动工具NXP-MCUBootUtility升级到了v2.0,增加了对i.MXRT1010的全面支持。今天痞子衡就跟大家聊一聊NXP-MCUBootUtility v2.0对i.MXRT1010的支持。

    一、i.MXRT1010

      本文是双男主阵容,在介绍另一个男主角MCUBootUtility v2.0出场之前,痞子衡先来揭晓第一男主角i.MXRT1010的真容,侧重介绍其跟MCUBootUtility工具息息相关的启动方面的特点。

    RT1010_Block_Diagram

      上图是i.MXRT1010内部模块框图,痞子衡将结合这个框图对i.MXRT1010启动方面特点进行简单剖析:
      首先来看Internal Memory部分,i.MXRT1010内部RAM一共128KB,这对于一般单片机应用程序来说已然够用。其内部ROM是64KB(请注意这个ROM不是给用户放代码的,而是用于固化i.MXRT出厂启动代码的),如果你对i.MXRT1010的老大哥i.MXRT1050熟悉的话,你应该知道i.MXRT1050的ROM是128KB,那i.MXRT1010的ROM为啥小了呢?下一段就会给你答案。
      继续来看External Memory部分,我们知道老大哥i.MXRT1050支持的启动设备类型比较丰富(Serial NOR/NAND,Parallel NOR/NAND,SD/eMMC,1-bit SPI NOR/EEPROM,SDRAM),而i.MXRT1010则非常单纯,它就只支持Serial NOR这一种启动设备,因此ROM的代码被精简了。
      最后看Security部分,老大哥i.MXRT1050支持软件(HAB)和硬件(BEE)两种安全加密启动方式,在这点上小兄弟i.MXRT1010一点也不含糊,甚至有点青出于蓝而胜于蓝,i.MXRT1010也同时支持软硬件安全加密启动,虽然软件加密方面仅保留了验签功能,但是硬件加密模块却由BEE升级为了OTFAD,加密选项更丰富,在线解密效率也更高。

    二、MCUBootUtility v2.0

      是时候揭晓第二男主角MCUBootUtility v2.0的真容了,下图是v2.0版本主界面,延续了v1.x版本系列的高颜值,并且功能更加全面,它对于i.MXRT1010的支持可不仅仅是简单地生成unsigned bootable image下载进FlexSPI NOR Flash,而是全方位无死角地支持i.MXRT1010的安全加密启动,尤其是OTFAD硬件加密启动。

    MCUBootUtility_v2.0_Main_Interface

      在i.MXRT1050芯片上使用过MCUBootUtility v1.x的朋友都知道,痞子衡将i.MX RT安全启动等级分为5级,分别如下:

    第一级:不启用任何安全措施
    第二级:启用HAB签名认证
    第三级:启用HAB签名认证与HAB加密
    第四级:启用单引擎BEE加密(唯一SNVS Key)
    第五级:启用双引擎BEE加密(用户自定义Key)

      从MCUBootUtility v2.0引入i.MXRT1010的支持后,i.MX RT安全启动等级又增加2级,分别如下:

    第六级:启用单重OTFAD加密(唯一SNVS Key)
    第七级:启用双重OTFAD加密(用户自定义Key)

      第六级是顶级的安全模式,即用唯一SNVS Key对image进行单重OTFAD级加密,该级别与单引擎BEE加密(唯一SNVS Key)是类似的,只是早期i.MX RT芯片(比如i.MXRT105x)的FlexSPI配套硬件加解密模块是BEE,而后期i.MX RT芯片(比如i.MXRT1011)的FlexSPI配套硬件加解密模块升级为OTFAD。相比于BEE模块,OTFAD模块在加解密效率上提升了很多,并且提供了更加强大的加解密模式。关于OTFAD强大的加解密模式在双重OTFAD加密模式中会进一步介绍。
      第七级是顶级的安全模式,即用用户自定义Key对image进行双重OTFAD级加密,前面讲了OTFAD是BEE的升级,那么我们就来比较一下双重OTFAD加密与双引擎BEE加密区别:

    • 双引擎BEE加密最多可设3个加密区间,这3个加密区间最多仅能由2组用户密钥来保护;而双重OTFAD加密最多可设4个加密区间,每个加密区间均可设独立的用户密钥,并且所有的用户密钥还由一个全局密钥来保护。
    • 双引擎BEE加密的用户密钥是直接存在efuse里的;而双重OTFAD加密存在efuse里的全局密钥可引入扰乱算法来保护。

      从软件操作流程上来说,双重OTFAD加密与双引擎BEE加密是类似的,只是密钥配置窗口有差别,我们打开OTFAD的密钥配置窗口看一下:

    NXP-MCUBootUtility_flexibleUserKeysWin_otfad

      kek即全局密钥,kek是存放在efuse里的;用户密钥个数与保护区间一致,所有用户密钥均在OTFAD DEK KeyBlob,KeyBlob是存放在外部NOR Flash里的,kek就是用来保护OTFAD DEK KeyBlob的。
      至此NXP-MCUBootUtility v2.0对i.MXRT1010的支持,痞子衡就介绍完了。

      那么这么好用的工具去哪里下载?其实MCUBootUtility是一个基于Python的开源项目,其项目地址为 https://github.com/JayHeng/NXP-MCUBootUtility, 核心代码约15000多行,虽然当前版本(v2.0.0)功能已经非常完备,你还是可以在此基础上再添加自己想要的功能。如此神器,还不快快去下载试用?

    欢迎订阅

    文章会同时发布到我的 博客园主页CSDN主页微信公众号 平台上。

    微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

  • 相关阅读:
    css学习笔记1
    HTML学习笔记4
    Layui使用入门教程
    MVC _Layout
    C# MVC _viewstart.cshtml的作用
    用javascript提交表单
    form表单中的属性和标签
    <input>标签中id和name的作用和区别
    input type = button 的onclick属性调用函数
    form表单提交onclick和onsubmit
  • 原文地址:https://www.cnblogs.com/henjay724/p/11612323.html
Copyright © 2020-2023  润新知