--
  跨界之风吹满地,先锋当属NXP;
  微控制器谁独骚?当仁不让看RT!

  恩智浦半导体2017年10月正式发布了业内首款跨界处理器—i.MX RT系列,这是MCU界的汗血宝马,更是一匹桀骜不驯的悍马。一年多来,众多骑士(MCU开发者)纷纷想去征服这匹悍马,然而想要驯服这匹悍马没并非易事,除了需要骑士自身马术(嵌入式功底)精湛,还需要善于利用恩智浦提供的一整套马具(工具链软件开发包),方可成功驾驭这匹悍马。今天痞子衡为大家介绍的这款工具名叫NXP-MCUBootUtility,其功能堪比马镫,有了马镫骑士可以轻松上马。

一、i.MX RT启动背景

  在介绍MCUBootUtility出场之前,咱们先来聊聊i.MX RT的启动背景。众所周知,i.MX RT源自经典的i.MX6ULL平台,同i.MX处理器一样,i.MX RT也是flashless的芯片,其内部没有可供用户存储代码的非易失性存储器,因此在i.MX RT系统设计里需要为其配置一块非易失性存储器(在i.MX RT世界里,我们更喜欢称其为启动设备)。
  有了外置启动设备,代码存储的问题解决了,但随之引入了启动问题。要想从启动设备中访问代码数据,首先需要对其进行必要的配置,配置正确之后还需要从中找到正确的应用程序位置来加载启动,那么问题来了,谁负责干这些事?当然是BootROM,BootROM其实是固化在i.MX RT内部一段程序,其功能就类似于PC上的BIOS,i.MX RT上电首先运行的就是BootROM,由BootROM为i.MX RT做好启动的所有准备工作。
  翻看i.MX RT的BootROM章节,可以看到BootROM核心功能概括起来主要如下6条:

  • Support for booting from various boot devices
  • Serial downloader support (USB OTG and UART)
  • Device Configuration Data (DCD) and plugin
  • Digital signature and encryption based High-Assurance Boot (HAB)
  • Wake-up from the low-power modes
  • Encrypted XIP on Serial NOR via FlexSPI interface powered by BEE and DCP
    controller

  BootROM核心功能看起来有6条,其实主要是第1条,后面5条都是为第1条服务的,various boot devices即各种各样的启动设备,启动设备到底有多丰富?且看下图:

  从上图可以看出i.MX RT BootROM支持的启动设备真的很丰富,有通过FlexSPI接口支持的高速串行NOR、NAND Flash,有通过uSDHC接口支持的SD Card、eMMC,有通过SEMC接口支持的并行NOR、NAND Flash,甚至还有通过LPSPI接口支持的低速EEPROM、NOR Flash,真是应有尽有。
  启动设备类型这么多,是好事但也是麻烦事,BootROM为了能够同时支持这么多特性各异的启动设备,必须制定一个通用规则,这个规则就是i.MX RT Boot Data Component,即放在启动设备中的用户Application除了自身image数据外,还必须包含额外的Boot Data以供BootROM识别,那么Boot Data Component到底有哪些呢?继续看下表:

  上表中IVT和Boot Data是最必不可少的Component,也是用于支持众多特性各异的启动设备的关键,IVT与Boot Data合称Bootable header,包含Bootable header的Application即称为Bootable Application,启动设备中仅当存储的是Bootable Application才能够被i.MX RT BootROM正确识别和启动。

二、MCUBootUtility

  上一节讲完了i.MX RT启动背景,都是理论的东西,该是进入实战环节的时候了。到底如何制作一个Bootable Application?到底怎么将Bootable Application下载到指定类型启动设备中?
  其实恩智浦早为大家已经准备好一整套工具,BD file、elftosb.exe、MfgTool2.exe等,这些工具都在Flashloader包里,下面是这些工具的联合使用流程:

  首先在自己喜欢的IDE里(比如恩智浦免费提供的MCUXpresso)开发Application,开发结束之后生成可执行文件(.elf/.srec均可),将该可执行文件经过elftosb.exe转换成.sb文件(需要两次转换,第一次生成Bootable Application,第二次生成.sb文件,两次转换需要两个不同BD file),最后使用MfgTool2通过USB口将.sb文件内容下载到启动设备里。
  上述整个过程虽然涉及多个命令多步操作,但总算能够顺利完成。如果需要进一步使能HAB签名或者加密,那么需要再联合CST工具,步骤再增加一些。如果是使能BEE加密,那么得注意选对合适的BD file,一些特殊的fuse需要烧录正确,不管怎样,事情总能解决。
  但这就够了么?你有没有曾期望过有一个工具能够把上面这些事情全部包进去并且还是一个优雅的GUI?别以为这是妄想,这样的工具早已存在了,它就叫NXP-MCUBootUtility,下图是它的庐山真面目,清爽的界面,强大的功能,有了它,启动i.MX RT从未如此简单。

  NXP-MCUBootUtility是一个专为恩智浦MCU安全启动而设计的工具,其特性与MCU里的BootROM功能相对应,目前主要支持i.MX RT系列MCU芯片,与NXP官方的标准安全启动配套工具集(OpenSSL, CST, sdphost, blhost, elftosb, BD, MfgTool2)相比,NXP-MCUBootUtility是一个真正的一站式工具,一个工具包含NXP官方所有配套启动工具的功能,并且是全图形用户界面操作。借助于NXP-MCUBootUtility,你可以轻松上手NXP MCU安全启动。
  NXP-MCUBootUtility主要功能如下:

  • 支持i.MXRT全系列MCU,包含i.MXRT1015、i.MXRT1021、i.MXRT1051/1052、i.MXRT1061/1062、i.MXRT1064 SIP
  • 支持UART和USB-HID两种串行下载方式(COM端口/USB设备自动识别)
  • 支持五种常用格式(elf/axf/srec/hex/bin)源image文件输入并检查其链接地址的合法性
  • 源image文件既可以是裸源image文件,也可以是含启动文件头的bootable image文件
  • 支持将裸源image文件自动转换成i.MXRT能启动的Bootable image
  • 支持下载Bootable image进主动启动设备 - FlexSPI NOR、SEMC NAND接口Flash
  • 支持下载Bootable image进备份启动设备 - LPSPI接口NOR/EEPROM Flash
  • 支持DCD配置功能,可用于加载image进SDRAM执行
  • 支持用于开发阶段的非安全加密启动(未签名加密)
  • 支持基于HAB实现的安全加密启动(单签名,签名和加密),证书自动备份
  • 支持基于BEE实现的安全加密启动(唯一SNVS key,用户自定义key)
  • 支持MCU芯片内部eFuse的回读和烧写操作(即专用eFuse烧写器)
  • 支持外部启动设备的任意读写擦操作(即通用Flash编程器)
  • 支持从外部启动设备回读Bootable image,并对其组成部分(NFCB/DBBT/FDCB/EKIB/EPRDB/IVT/Boot Data/DCD/Image/CSF/DEK KeyBlob)进行标注

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

痞子衡嵌入式:如果i.MX RT是一匹悍马,征服它时别忘了用马镫MCUBootUtility的更多相关文章

  1. 痞子衡嵌入式:SNVS Master Key仅在i.MXRT10xx Hab关闭时才能用于DCP加解密

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列中数据协处理器DCP使用SNVS Master Key加解密的注意事项. i.MXRT不仅仅是处理性能超强的MCU,也是 ...

  2. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU开发那些事 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是飞思卡尔i.MX RT系列微控制器相关知识. 飞思卡尔半导体(现恩智浦半导体)于2017年开始推出的i.MX RT系列开启了高性能MC ...

  3. 痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手 ...

  4. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(2)- RT1052DVL6性能实测

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的性能. 在前面的文章 i.MXRT微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新 ...

  5. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(3)- Serial Downloader模式(sdphost/MfgTool)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial Downloader模式. 在上一篇文章 Boot配置(BOOT Pin, eFUSE) ...

  6. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(4)- Flashloader初体验(blhost)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Flashloader. 在上一篇文章 Serial Downloader模式(sdphost, mf ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(5)- 再聊eFUSE及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的eFUSE. 在i.MXRT启动系列第二篇文章 Boot配置(BOOT Pin, eFUSE) 里痞子 ...

  8. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(6)- Bootable image格式与加载(elftosb/.bd)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Bootable image格式与加载过程. 在i.MXRT启动系列第三篇文章 Serial Down ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(8)- 从Raw NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Raw NAND启动. 前面铺垫了七篇启动系列文章,终于该讲具体Boot Device了,我们知道i. ...

随机推荐

  1. [SDOI2011]染色 BZOJ2243 树链剖分+线段树

    分析: 区间合并,lcol是左端点的颜色编号,rcol是右端点的颜色编号,那么我们向上合并的时候,如果左儿子的rcol等于右儿子的lcol那么区间的sum--. 另外,如果重链顶的颜色等于重链顶的父节 ...

  2. 虚拟机console基础环境部署——系统基础环境

    1. 概述2. 工具类安装2.1 安装vim2.2 安装tree2.3 安装expect2.4 安装lsof3. 编译环境类安装 1. 概述 本系列博客是在最小化安装CentOS6.5的基础上,通过配 ...

  3. Extjs中数据导出到Excel

    1.前端代码(URL+前端传入参数) window.location.href="studnetMaintainAction!exportExcel"               ...

  4. 十分钟学会Java8的lambda表达式和Stream API

    01:前言一直在用JDK8 ,却从未用过Stream,为了对数组或集合进行一些排序.过滤或数据处理,只会写for循环或者foreach,这就是我曾经的一个写照. 刚开始写写是打基础,但写的多了,各种乏 ...

  5. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  6. 神经网络——反向传播BP算法公式推导

    在神经网络中,当我们的网络层数越来越多时,网络的参数也越来越多,如何对网络进行训练呢?我们需要一种强大的算法,无论网络多复杂,都能够有效的进行训练.在众多的训练算法中,其中最杰出的代表就是BP算法,它 ...

  7. 入门系列之Scikit-learn在Python中构建机器学习分类器

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 介绍 机器学习是计算机科学.人工智能和统计学的研究领域.机器学习的重点是训练算法以学习模式并根据数据进行预 ...

  8. python assert的用处

    python assert 句语格式及用法很简单.通常程序在运行完之后抛出异常,使用assert可以在出现有异常的代码处直接终止运行. 而不用等到程序执行完毕之后抛出异常. python assert ...

  9. HTML/CSS初步了解

    一.CSS是什么? 它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示 ...

  10. Odoo:全球第一免费开源ERP权威性能测试报告完整版(绝对珍藏)

    Odoo平台简介 Odoo(以前叫OpenERP)是世界排名第一的开源ERP系统,最早由比利时一家公司开发,经过十几年发展,目前全世界Odoo的使用者超过2百万人,Odoo被翻译成几十种语言,Odoo ...