--

  痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v5.0.0)发布过去4个多月了,期间痞子衡也做过三个小版本更新,但不足以单独介绍。这一次痞子衡为大家带来了全新重要版本v5.3.x,这次更新主要是想和大家特别聊聊 XMCD 这个特性的支持。

一、v5.1 - v5.3更新记录

-- v5.1.0
Features:
1. [RT1180] 支持自动加载Edgelock固件 -- v5.2.0
Features:
1. [RTyyyy] 支持i.MXRT118x B0
2. [RT] 对于FlexSPI NOR设备,支持下载安全与非安全两种地址链接的CM33程序
3. [RT] 对于FlexSPI NOR设备,支持别名地址链接的程序
Improvement:
1. [RT1180] 用户输入的源程序文件可以包含启动头 (Container) -- v5.2.1
Bufixes:
1. [RTyyyy] 修复对FlexSPI NAND设备的下载支持 -- v5.3.0
Features:
1. [RTyyyy] 支持XMCD配置功能,可用于加载image进FlexSPI RAM/SEMC SDRAM执行
2. [RTyyyy] 支持第二个FlexSPI去下载启动NAND
3. [RT] 新增FlexSPI NAND启动设备模型支持
Improvement:
1. [RTyyyy] 将FlexSPI序号选择从菜单栏改至设备配置界面
2. [RTyyyy] 可以识别链接在FlexSPI RAM区域的程序
Bufixes:
1. [RTyyyy] 无法识别IVT中复位函数地址相对向量表首地址偏移小于0xB00的可启动程序文件 -- v5.3.1
Improvement:
1. [RT] 可以检查不同FlexSPI序号的有效XIP范围
2. [RTxxx] 可以识别链接在FlexSPI RAM区域的程序
Bufixes:
1. [RT1180] 在FlexSPI NOR启动设备下无法生成一些Non-XIP程序的可启动程序

二、几个不可忽视的更新

2.1 完善的FlexSPI NOR映射地址支持

  在 v5.0 及其之前的版本里,工具对于 FlexSPI NOR 设备映射地址的支持比较单一。在工具目录 \src\targets\xxx\bltargetconfig.py 文件中仅可见如下定义(RT1180为例),即一个 FlexSPI 仅对应一个主映射地址:

flexspiNorMemBase0 = 0x38000000
flexspiNorMemBase1 = 0x14000000

  但是我们知道部分 i.MXRT 型号系统设计里对于 FlexSPI 除了支持主映射地址外,还支持所谓的别名映射地址(Aliased Address),甚至 CM33 内核的 i.MXRT 型号里还区分 Secure 和 Non-Secure 地址。因此 v5.3 里进一步丰富了 FlexSPI NOR 设备的映射地址,这样我们在编译链接 XIP 启动程序的时候,地址选择更加灵活。此外这里如果你仔细看,会发现工具对于最大映射地址空间检查也按 RT 型号不同做了具体区分。

  但是这里有关于 RT1180 的一点注意事项,工具目录 \src\targets\MIMXRT1189\ 下预先放了两个版本的 flashloader,一个仅支持 Secure 地址,另一个仅支持 Non-Secure 地址,这是当前 flashloader 实现的限制。为了能让工具自动根据用户输入源程序实际链接地址类型来选择合适的 flashloader 去做擦写操作,需要先点击一次 Generate xxType Bootable Image 按钮之后再点击 Connect to ROM 按钮,最后再 All-In-One Action

cntr_flashloader_s.bin
cntr_flashloader_ns.bin

2.2 支持链接在FlexSPI RAM区域的程序

  对于 Non-XIP 程序,除了链接在 RT 芯片内部 SRAM 空间之外,还可以链接在外部 RAM 空间,比如 SEMC 接口对应的 SDRAM 设备,或者 FlexSPI 接口对应的 HyperRAM 或者 PSRAM 设备。v5.0 及之前工具仅能支持链接在 SDRAM 的程序,对于链接在 FlexSPI 映射空间的 Non-XIP 程序,工具会直接报非法地址。v5.3 版本开始,这个限制将不复存在(见如下对 RT1180 FlexSPI RAM 地址的支持),这也是为了配合 DCD 以及 XMCD 功能而做的改进。

2.3 对于RT1170 XMCD功能支持

  从 RT1160/1170 B0 以及其后的 RT1180 开始,BootROM 里新增了 XMCD 功能,这是对 DCD 功能的补充。我们知道 DCD 可以实现对芯片指定外设的用户定制化配置,常常用于配置 SEMC 寄存器去初始化 SDRAM 或者 FlexSPI 寄存器去初始化 HyperRAM/PSRAM,但是 DCD 的配置太细致,需要从外设寄存器角度去理解那些外部 RAM 存储器特性,这种方式从应用角度来说不够友好。XMCD 正是为了解决这个问题,其将对 SDRAM/HyperRAM 配置以一种对用户更友好更简洁的方式来呈现,见如下界面设置:

  XMCD 虽好,但是其和 DCD 配合使用在当前工具里会有一些限制,这主要是因为工具依赖的 RT1170 底层工具链(elftosb)对于 dcd 数据的生成仅支持相对 IVT 起始地址 0x40 的偏移,但这个偏移恰恰又是 XMCD 的偏移位置,两者有冲突:

  • 限制 1:如果是 All-In-One Action 操作,不可在界面里同时使能 DCD 和 XMCD。如果两者同时使能,XMCD 设置会被自动忽略。
  • 限制 2:如果是 All-In-One Action 操作,用户源应用程序里如果包含 DCD 数据结构,那么工具界面里 XMCD 设置也会被自动忽略。
  • 限制 3:如果是 All-In-One Action 操作,用户源应用程序里如果包含 XMCD 数据结构,且工具界面里 DCD 被使能,那么 XMCD 数据结构将会被丢弃。

  当然如果你有一个同时包含 DCD 和 XMCD 数据的可启动文件,可以在工具通用编程器(Boot Device Memory)界面使用 Write 按钮去下载。

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

欢迎订阅

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

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

痞子衡嵌入式:MCUBootUtility v5.3发布,利用XMCD轻松使能外部RAM的更多相关文章

  1. 痞子衡嵌入式:MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法. 前段时间痞子衡写了一篇 <在IAR开发环境下将关键函数重 ...

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

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

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

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

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

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

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

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

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

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

  7. 痞子衡嵌入式:MCUBootUtility v3.5发布,支持串行NOR的ECC及双程序启动

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

  8. 痞子衡嵌入式:MCUBootUtility v4.0发布,开始支持MCX啦

    -- 痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v3.5.0)发布过去 9 个月了,这一次痞子衡为大家带来了版本升级 v4.0.0,这个版本主要有两个重要更新需要跟大家 ...

  9. 痞子衡嵌入式:MCUBootUtility v2.3.1发布,解决了长久以来非空flash可能无法下载的问题

    -- 痞子衡维护的NXP-MCUBootUtility工具距离上一个版本(v2.3)发布过去3个月了,这一次痞子衡为大家带来了小版本升级v2.3.1(第一次做x.y.z中z级别更新),这个版本主要有两 ...

  10. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM集成的DCD功能可轻松配置指定外设

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是利用i.MXRT1xxx系列ROM集成的DCD功能可轻松配置指定外设. 关于 i.MXRT1xxx 系列芯片 BootROM 中集成的 ...

随机推荐

  1. [ARM汇编]计算机原理与数制基础—1.1.1计算机的基本原理

    计算机是一种能够根据指令集自动.高速处理数据的现代化设备.它的基本原理可以总结为:输入.存储.处理和输出数据.接下来,我们将详细介绍这些基本原理. 输入 计算机通过输入设备(如键盘.鼠标等)接收外部数 ...

  2. Python 自动化测试的配置层实现方式对标与落地

    Python中什么是配置文件,配置文件如何使用,有哪些支持的配置文件等内容,话不多说,让我们一起看看吧~ 1 什么是配置文件? 配置文件是用于配置计算机程序的参数和初始化设置的文件,如果没有这些配置程 ...

  3. Windows 10 开启子系统Ubuntu

    卸载原有的wsl 分发子系统 # 查看已安装的wsl子系统 wsl --list # 依次删除wsl 子系统 wsl --unregister <子系统名称> 结果 安装子系统Ubuntu ...

  4. Pinot2的开发者社区和教程

    目录 文章背景: Pinot 2 是任天堂公司于2018年发布的一款游戏机,采用了基于马里奥兄弟游戏<塞尔达传说:荒野之息>的开放世界操作系统,并推出了许多创新的功能,例如"超级 ...

  5. 2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并且m > 1, 每段绳子的长度记为 k[0],k[1]...k[m - 1]。 请问

    2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m.n都是整数,n > 1并且m > 1, 每段绳子的长度记为 k[0],k[1]...k[m - 1 ...

  6. 通用权限系统-Spring-Boot-Starter

    Spring-Boot-Starter 自定义Starter 案例一:读取application.yml中的参数 1.创建 1.创建maven工程hello-spring-boot-starter 2 ...

  7. 国内可用的GPT4镜像站

    我做了个镜像站,GPT4的费用目前太贵了. 虽然做了个低价的月费,但基本上亏本在做,接口的实际费用高出太多. 运行了1个月,每天有几十人在用吧. 有兴趣的可以收藏一下 GPT4的验明正身的问题&quo ...

  8. 2023-07-19:布尔表达式 是计算结果不是 true 就是 false 的表达式 有效的表达式需遵循以下约定: ‘t‘,运算结果为 true ‘f‘,运算结果为 false ‘!(subExpr

    2023-07-19:布尔表达式 是计算结果不是 true 就是 false 的表达式 有效的表达式需遵循以下约定: 't',运算结果为 true 'f',运算结果为 false '!(subExpr ...

  9. 【go语言】2.1.1 变量,常量和数据类型

    Go 语言中,变量是存储数据的基本单位,常量则是固定不变的数据.每个变量和常量都有其对应的数据类型. 变量 在 Go 语言中,你可以使用 var 关键字来声明一个变量: var name string ...

  10. QPushButton按钮的使用

    1 import sys 2 from PyQt5.QtCore import * 3 from PyQt5.QtGui import * 4 from PyQt5.QtWidgets import ...