--

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

一、v3.5更新记录

二、几个不可忽视的更新

2.1 支持串行NOR双程序启动下载

  部分 i.MXRT 型号 BootROM 支持串行 NOR Flash 的双程序启动,这意味着在这些型号上用户可以不用额外设计二级 bootloader 也可以完成本地 OTA 升级。

  之前痞子衡把所有支持双程序启动的 i.MXRT 型号都试了一遍,一共写了三篇文章,在文中痞子衡是借助 MCUBootUtility v3.4 里的通用编程器来手动做两个 image 的下载的,并且 image 版本头添加,以及 Fuse 烧写也都是手工完成的,步骤稍显复杂。

《i.MXRT1060,1010上串行NOR Flash冗余程序启动设计》

《i.MXRT1170上串行NOR Flash双程序可交替启动设计》

《i.MXRT500,600系列上串行NOR Flash双程序可交替启动设计》

  在 MCUBootUtility v3.5 上再去做同样的事情就简单多了,只需要在 FlexSPI NOR Device Configuration 界面里设置双程序启动相关参数即可,工具会自动完成后续所有事情(烧写相应 Fuse、添加 image 版本头,烧写两份 image 进 Flash)。

  • Note1: Image 1 offset 保持默认 0,即不使能双程序下载;如果设为非 0,这个值也会被烧写进 Fuse。
  • Note2: Image 0/1 version 如果保持 none 值,在双程序下载使能的情况下实际等同于 0xFFFF 值。

2.2 支持串行NOR的ECC方式下载

  在部分增强型 i.MXRT 型号上(比如 i.MXRT1170),芯片内部增加了很多 ECC 方面设计,从 RAM 到 Flash 再到 Fuse,全部都有 ECC 保护,这样芯片可放心用于那些对稳定性要求高的产品场合(比如汽车)。

  在 i.MXRT1170 上是 XECC 模块负责了 FlexSPI 外设连接的 Flash 上 ECC 处理,痞子衡之前为此写过一篇文章 《i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道》。但是官方 SDK 里提供的 Flashloader (路径在 \SDK_2.11.0_MIMXRT1170-EVK\boards\evkmimxrt1170\bootloader_examples\flashloader)并不支持 ECC 方式的写入,而 MCUBootUtility 正是借助这个官方 Flashloader 完成 Flash 的擦写的,所以我们需要改这个官方 Flashloader,为此痞子衡创建了一个项目:

  在 imxrt-ecc-flashloader 工程里,痞子衡引入了 XECC 模块驱动,并且将 ECC 功能集成到了 set-property 13 和 write-memory 这两个命令里。这里有两个注意点,一是:使能 ECC 写入后,写入首地址需要以 4KB 对齐(在 XECC 模块的限制下做的设定),二是:使能 ECC 写入后,擦除长度需要是 image 长度的两倍(XECC 原理决定的)。

// 初始化 Flash
blhost -u -- fill-memory 0x20200000 0x4 0xC0000005
blhost -u -- fill-memory 0x20200004 0x4 0x0
blhost -u -- configure-memory 0x9 0x20200000 // 关闭 ECC 写入功能,复位 XECC 模块(默认配置)
blhost -u -- set-property 13 0
// 擦除 Flash 前 16KB 空间
blhost -u -- flash-erase-region 0x30000000 0x4000
// 正常写入 Flash
blhost -u -- write-memory 0x30000000 bt_image_16KB.bin 0x9 // 使能 ECC 写入功能
blhost -u -- set-property 13 1
// 擦除 Flash 前 32KB 空间
blhost -u -- flash-erase-region 0x30000000 0x8000
// 先初始化 XECC 模块,然后以 ECC 方式写入 Flash(写入地址需要以 4KB 对齐)
blhost -u -- write-memory 0x30000000 bt_image_16KB.bin 0x9
// 每一次写完 Flash 需要关闭 ECC 写入功能
blhost -u -- set-property 13 0

  痞子衡将 imxrt-ecc-flashloader 工程生成的可执行文件(CM4版本)放到了 \NXP-MCUBootUtility\src\targets\MIMXRT1176\flashloader_user.srec,让工具用这个含 ECC 功能的 Flashloader,并且在工具通用编程器界面增加了 ECC Write 按钮,这个按钮可以一键完成 .bin 格式文件的 ECC 方式下载。

  • Note: v3.5版本工具里没有自动集成 ECC 使能的 Fuse 位烧写,因为 Fuse 烧写完,芯片需要复位一次,XECC 才生效,所以用户需要自己手动烧写 Fuse。

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

欢迎订阅

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

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

痞子衡嵌入式:MCUBootUtility v3.5发布,支持串行NOR的ECC及双程序启动的更多相关文章

  1. 痞子衡嵌入式:揭秘i.MXRT1170上串行NOR Flash双程序可交替启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1060/1010上串行NOR F ...

  2. 痞子衡嵌入式:系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败问题. 我们知道,i.MXRT1xxx家族早期型号(RT1050/ ...

  3. 痞子衡嵌入式:FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败问题. 本篇是<系统时钟配置不当会导致i.MXRT1xxx ...

  4. 痞子衡嵌入式:导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP. i.MXRT系列MCU发布已两年多了,基于i.MXR ...

  5. 痞子衡嵌入式:借助Serial Plot软件测量i.MXRT系列FlexSPI驱动Flash页编程执行时间

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列FlexSPI驱动Flash页编程执行时间. 痞子衡之前写过一篇文章 <串行NOR Flash的页编程模式对于量产 ...

  6. 痞子衡嵌入式:i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad. 最近碰到一个客户,他们在 i.MX ...

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

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

  8. 痞子衡嵌入式:MCUBootUtility v3.4发布,支持串行NAND

    -- 痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v3.3.0)发布过去 4 个多月了,这一次痞子衡为大家带来了版本升级 v3.4.0,这个版本主要有几个非常重要的更新需 ...

  9. 痞子衡嵌入式:MCUBootUtility v3.3发布,可配合SBL项目使用

    -- 痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v3.0.0)发布过去4个多月了,期间痞子衡其实断断续续做个几个小版本更新,这一次痞子衡为大家带来了稳定版本v3.3.0,顺 ...

随机推荐

  1. java创建一个子类对象是会调用父类的构造方法会不会创建父类

    1.子类在创建实例后,类初始化方法会调用父类的初始化方法(除了Java.lang.Object类,因为java.lang.Object类没有父类),而这种调用会逐级追述,直到java.lang.Obj ...

  2. python——虚拟环境管理大合集

    个人常用:pipenv 安装 pip3 install pipenv 创建虚拟环境 # 默认安装在~/.local/virtualenv下 mkdir project cd project pipen ...

  3. HTML5知识点笔记

    1.HTML是一种标记语言 2.HTML元素不区分大小写  //可以在xss绕过waf时使用 3.<code></code>为空元素标签 <code/>为自闭合标签 ...

  4. suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用

    文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...

  5. Java基于ClassLoder/ InputStream 配合读取配置文件

    阅读java开源框架源码或者自己开发系统时配置文件是一个不能忽略的,在阅读开源代码的过程中尝尝困惑配置文件是如何被读取到内存中的.配置文件本身只是为系统运行提供参数的支持,个人阅读源码时重点不大可能放 ...

  6. GAN实战笔记——第四章深度卷积生成对抗网络(DCGAN)

    深度卷积生成对抗网络(DCGAN) 我们在第3章实现了一个GAN,其生成器和判别器是具有单个隐藏层的简单前馈神经网络.尽管很简单,但GAN的生成器充分训练后得到的手写数字图像的真实性有些还是很具说服力 ...

  7. 018 磁盘 IO 性能监控/压测工具(sar、iotop、fio、iostat)

    1 sar 命令查看当前磁盘 IO 读写 sar(System Activity Reporter 系统活动情况报告)是 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告 ...

  8. 防世界之Web_warmup

    题目: 啥都没有,右键打开页面源代码查看一下  发现source.php源文件,输入http://111.200.241.244:53776/source.php看看 <?php    high ...

  9. NSSCTF-gif好像有点大

    下载的附件压缩包是一个接近9mb的压缩包,其实是比较简单的一个小杂项,应该就算是个签到,接下来就是使用工具进行解答,可以使用LSB隐写工具,一帧一帧的查看,最后是在500多看到的一个是存在二维码的,扫 ...

  10. k8s管理平台:rancher

    简介 中文官网:https://docs.rancher.cn/ github:https://github.com/rancher/rancher 基础环境 https://www.cnblogs. ...