痞子衡维护的 NXP-MCUBootFlasher 工具(以前叫 RT-Flash)距离上一个版本(v2.0.0)发布过去一年半以上了,这一次痞子衡为大家带来了全新版本 v3.0.0,从这个版本开始,NXP-MCUBootFlasher 将不再局限于 i.MXRT 系列,也要开始支持经典的 LPC,Kinetis 系列。但是扩展 MCU 型号支持并不是这个版本最重要的更新,这次主要做了 8 路板卡异步自动下载功能(特别适合产线操作场景),痞子衡是怎么做到的?且往下看。

 

一、v3.0 更新记录

 

 

二、关于新系列 MCU 的支持

NXP-MCUBootFlasher v3.0 之前的版本主要支持 i.MXRT 系列。从 v3.0 开始,MCUBootUtility 加入了 LPC5500、Kinetis 的支持。这三大系列 MCU 虽然差异不小,但有一个共同特点,那就是支持恩智浦独创的一种程序文件格式(.sb)。这种 SB 格式文件除了包含可执行文件所有信息外,还同时包含配套的 Flash 操作步骤信息以及加密相关操作信息,这样就非常方便量产使用。下图便是最早期的 .sb 格式文件组成:

 

 

Kinetis 和 i.MXRT1xxx 系列是基于 SB 1.x 版本设计的,SB 1.x 中程序既可以是不加密的也可以加密;i.MXRTxxx 和 LPC5500 系列是基于 SB 2.x 版本设计的,SB 2.x 规定了程序必须要加密。

 

三、适用真实的产线操作场景

NXP-MCUBootFlasher v3.0 之前的版本烧写多块板卡的设计逻辑是:一位工人将 n 块板卡先全部连上 PC 的插槽,等工具将板卡全部识别出来,这时候工人点击工具【Start】按钮,工具会按序完成这 n 块板卡的下载工作,然后工人再换下一批板卡,重复上述过程,其本质上是串行的。这种设计其实并不符合产线上实际操作流程。

 

NXP-MCUBootFlasher v3.0 版本实现了真正的异步烧写多块板卡的设计逻辑:n 块板卡不需要同时被连上 PC 插槽,每个插槽均由一名工人负责,工人将板卡连上插槽,工具会自动完成该板卡的下载工作(不需要点击任何按钮),并给出最终下载状态结果,下载完成工人即可更换下一块板卡,重复此过程。n 路插槽的 n 个工人可以根据自己工作节奏来做,不需要严格同步,其本质上是并行的,这种设计才是产线上的真实操作流程。

 

基于并行的带宽考量,v3.0 暂时支持最多 8 路插槽,当然想扩展到更多路,改一下代码也很容易做到。

 

 

Note: v3.0 版本在使用上有一个小限制,8 路插槽需要被分别单独下载一次(此时其他 7 路不能连接板卡),完成此流程后 8 路插槽便可以一起工作了。

 

至此,这次更新的主要特性便介绍完了。MCUBootFlasher 项目地址为 https://github.com/JayHeng/NXP-MCUBootFlasher , 虽然当前版本(v3.0.0)功能已经非常完备,你还是可以在此基础上再添加自己想要的功能。如此神器,还不快快去下载试用?