--
  恩智浦半导体从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工具息息相关的启动方面的特点。

  上图是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硬件加密启动。

  在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的密钥配置窗口看一下:

  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)功能已经非常完备,你还是可以在此基础上再添加自己想要的功能。如此神器,还不快快去下载试用?

痞子衡嵌入式:MCUBootUtility v2.0来袭,i.MXRT1010哪里逃的更多相关文章

  1. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在恩智浦MCUXpresso IDE下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  2. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  3. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  4. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  5. 痞子衡嵌入式:MCUBootUtility v2.3发布,这次不再放过任何一款Flash

    -- 痞子衡的 NXP-MCUBootUtility 开源项目自2018年8月27日第一笔提交至今已有21个月,目前累计代码已近50000行.相信这个工具为大家开发 i.MXRT 项目提供了一些便利, ...

  6. 痞子衡嵌入式:MCUBootUtility v2.4发布,轻松更换Flashloader文件

    -- 痞子衡维护的NXP-MCUBootUtility工具距离上一个版本(v2.3.1)发布过去2个月了,这一次痞子衡为大家带来了版本升级v2.4.0,这个版本主要有一个非常重要的更新需要跟大家特别说 ...

  7. 痞子衡嵌入式:MCUBootUtility v3.0发布,开始支持LPC, Kinetis啦

    -- 痞子衡维护的NXP-MCUBootUtility工具距离上一个版本(v2.4.0)发布过去2个半月了,这一次痞子衡为大家带来了全新版本v3.0.0,从这个版本开始,NXP-MCUBootUtil ...

  8. 痞子衡嵌入式:MCUBootFlasher v3.0发布,为真实的产线操作场景而生

    -- 痞子衡维护的NXP-MCUBootFlasher工具(以前叫RT-Flash)距离上一个版本(v2.0.0)发布过去一年半以上了,这一次痞子衡为大家带来了全新版本v3.0.0,从这个版本开始,N ...

  9. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NOR启动时间. 痞子衡刚刚拿到i.MXRT1170 B0版本的芯片,迫不及待地在上面跑了 ...

随机推荐

  1. Gym 101510C

    题意略. 思路: 由于xi的选取是任意的,所以我们不用去理会题目中的xi数列条件.主要是把关注点放在长度为L的线段覆盖至少k个整数这个条件上. 像这种取到最小的合法解的问题,我们应该要想到使用二分法来 ...

  2. Java集合框架之Set接口浅析

    Java集合框架之Set接口浅析 一.java.util.Set接口综述: 这里只对Set接口做一简单综述,其具体实现类的分析,朋友们可关注我后续的博文 1.1Set接口简介 java.util.se ...

  3. Leetcode之深度优先搜索(DFS)专题-301. 删除无效的括号(Remove Invalid Parentheses)

    Leetcode之深度优先搜索(DFS)专题-301. 删除无效的括号(Remove Invalid Parentheses) 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果. 说明 ...

  4. MySQL数据库笔记六:数据定义语言及数据库的备份和修复

    1. MySQL中的函数 <1>加密函数 password(str) 该函数可以对字符串str进行加密,一般情况下,此函数给用户密码加密. select PASSWORD('tlxy666 ...

  5. DOM的选择器

    这几天学习了DOM的选择器,现在来进行一下总结分类. 1.DOM里的元素节点选择器 元素节点选择器包括id,class,name,tagname,高级,关系. 1.1 id选择器 id:返回的是单个对 ...

  6. 1.Sentinel源码分析—FlowRuleManager加载规则做了什么?

    最近我很好奇在RPC中限流熔断降级要怎么做,hystrix已经1年多没有更新了,感觉要被遗弃的感觉,那么我就把眼光聚焦到了阿里的Sentinel,顺便学习一下阿里的源代码. 这一章我主要讲的是Flow ...

  7. redis desktop manager安装及连接方式

    1.下载安装包 官网下载地址:https://redisdesktop.com/pricing 官网下载需要付费使用 再此附上一个免费的破解版本,绿色安全可用 链接:https://pan.baidu ...

  8. A-The power of Fibonacci_2019牛客暑期多校训练营(第九场)

    题意 求\(\sum_0^n{Fb}_i^m \mod (1e9)\) 题解 模1e9时的斐波那契数列循环节太大,考虑把模数质因数分解成\(2^9\cdot5^9\),此时循环节变成768和78125 ...

  9. UVA - 315 Network(tarjan求割点的个数)

    题目链接:https://vjudge.net/contest/67418#problem/B 题意:给一个无向连通图,求出割点的数量.首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第 ...

  10. Codeforces Round #385 (Div. 2) C - Hongcow Builds A Nation

    题目链接:http://codeforces.com/contest/745/problem/C 题意:给出n个点m条边,还有k个不能连通的点,问最多能添加几条边. 要知道如果有n个点最多的边是n*( ...