大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT118x系列MCU的Boot配置

  痞子衡旧文 《RT四位数Boot简介》 里为大家介绍了 Boot 基本原理以及 i.MXRT1xxx Boot 方式,此外也有文章 《RT1xxx Boot配置》 介绍了 i.MXRT10xx/RT1170 Boot 的行为配置,鉴于 RT1180 系列在 Boot 配置上区别于以往,因此今天痞子衡就来专门聊一聊 i.MXRT118x Boot 行为配置的设计差异。

  无论是什么芯片里的 BootROM,其最核心的功能无非两个:一、从存放 Application 的存储器中加载执行;二、通过支持的通信接口接收来自 Host 的 Application 数据完成更新,所以 Boot 配置也主要围绕这两个核心功能。

一、Boot行为模式选择

  如果你读过痞子衡旧文 《RT三位数Boot配置》,你会发现其实 RT1180 在 Boot 配置设计上更偏向于 RT 三位数系列(相对精简),但是在涉及到的名词术语上还是尽量与 RT 四位数保持了一致。

  RT1180 内部 eFuse memory 中的 FORCE_BT_FROM_FUSE 位和芯片外部管脚 BOOT_MODE[2:0] 状态共同决定了 i.MXRT118x Boot 行为的最顶层配置。

1.1 行为模式定义

1.1.1 FORCE_BT_FROM_FUSE等值定义

  FORCE_BT_FROM_FUSE 是最高优先级的行为模式定义,其与 BOOT_MODE_FROM_FUSE[2:0] 位是一个组合。当 FORCE_BT_FROM_FUSE 被烧写为 1'b1 时,此时芯片 Boot 行为完全由 BOOT_MODE_FROM_FUSE[2:0] 配置值决定。

1.1.2 BOOT_MODE[2:0]管脚状态定义

  当 FORCE_BT_FROM_FUSE bit 未烧写时(即1'b0),BOOT_MODE[2:0] 引脚开始决定行为模式。下表是 BOOT_MODE 相关 pinout 信息,可在参考手册的 External Signals and Pin Multiplexing 章节中找到。

  BOOT_MODE[2:0] pin 状态是在 POR_B pin 上沿时被自动采样存储在芯片内部的寄存器 SRC->SBMR2[29:24] 中的,这些 bit 也叫 IPP_BOOT_MODE[5:0],BootROM 其实是根据 IPP_BOOT_MODE 的值来决定 Boot 行为的。

  • Note: 如果改变了 BOOT_MODE[2:0] 引脚的输入状态而使用 ONOFF pin(RESET_B)去软复位,Boot 行为并不会改变,因为 IPP_BOOT_MODE 值并未改变)。

  当 BOOT_MODE[2:0] 被设置成 3'b000 时即所谓 Boot From Fuses 模式,其有效性还受 BT_FUSE_SEL 位二级控制(默认 1'b0 则仍然是 Serial Downloader 模式,烧写成 1'b1 时才根据 BOOT_MODE_FROM_FUSE[2:0] 决定行为),当然痞子衡认为这里完全多此一举,纯粹是为了与 RT 四位数早期型号里 BootROM 相应代码逻辑作兼容。

1.2 行为模式分类

  不管是 FORCE_BT_FROM_FUSE 位还是外部管脚 BOOT_MODE[2:0] 状态,他们决定的最终 Boot 行为模式是相似的,区别只是一个通过烧 eFuse 决定(一般用于量产阶段),另一个通过切换引脚状态决定(一般用于研发阶段)。Boot 行为模式看起来非常多,但概括而言总共就两大类:

1.2.1 Serial Downloader模式(UART/SPI/USB-HID)

  Serial Downloader 模式顾名思义即串行下载模式,在这种模式下,BootROM 通过指定的 USB/UART/SPI 口来接收来自 Host(恩智浦提供了上位机工具 blhost.exe 或者 mfgtool 或者 MCUBootUtility)的 Application 数据,并将数据存储在 SRAM 中执行。

  • Note: SPI 方式 SDP 虽然很早就被 RT 三位数系列 BootROM 支持,但是在 RT 四位数上首次支持是 RT1180。

  这种模式其实就是从 SRAM 启动,但是如果用这种模式去 Boot Application 缺点很明显,每次上电都需要将 Application 重新下载进 SRAM,无法做到脱机自动 Boot,所以显然这种模式的主要目的并不是从 SRAM 启动 Application,那它到底有什么用?

  其实 Serial Downloader 模式主要是用来从 SRAM 中启动 Flashloader,恩智浦官方提供了 Flashloader 程序,Flashloader 程序可以用来将你的 Application 下载进 i.MXRT118x 支持的所有外部非易失性存储器中,为后续从外部存储器启动做准备。除此以外 Serial Downloader 模式还可以用来查看 eFuse 值。

1.2.2 Device Boot模式(Serial NOR/Serial NAND/Raw NAND/SD/eMMC/Recovery LPSPI NOR)

  Device Boot 模式就是直接从选定的外部非易失 Device 加载 Application 启动,这种模式才是 i.MXRT118x 最核心的模式,毕竟离线运行 Application 才是最重要的任务。Device Boot 又分为 Primary Boot(Serial NOR/Serial NAND/Raw NAND/SD/eMMC)和 Recovery Boot(LPSPI NOR),前者是主动启动设备,后者是备份启动设备。当主动启动设备中的 Application 失效时,芯片会从备份启动设备中再尝试去启动一次 Application,实现双重保障。

  • Note: Recovery LPSPI NOR 启动在 RT 四位数早期型号上虽然也被支持,不过仅支持 1bit 模式,而在 RT1180 上可以同时支持 1/2/4bits 模式。

二、Boot Device具体配置

  当 Boot 行为模式选定的是从某一类 Boot Device 启动,底下就是配置该 Device 具体属性了。假设我们选择了Serial NOR FLASH,但是 Serial NOR 只是一类 FLASH 的统称,市面上有非常多的 Serial NOR 芯片,每个芯片特性可能不完全一样,那么 BootROM 怎么知道这些不同的 Serial NOR 芯片的特性呢?还是通过 eFuse memory 来指定。

  eFuse 是 i.MXRT118x 里一块特殊的存储区域,用于存放全部芯片配置信息,其中有一部分区域分配给 Boot。参考手册的 eFuse 相关章节中可见所有 bit 具体定义,这里痞子衡仅贴出一部分用于示例:

  • Note: 在 RT 四位数早期型号 eFuse 里关于 Device 具体属性定义区域存在复用情况,而在 RT1180 上每一类 Device 都独享一片区域。

  至此,恩智浦i.MX RT118x系列MCU的Boot配置痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园CSDN微信公众号知乎与非网电子技术应用AET电子星球51CTO 平台上。

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

痞子衡嵌入式:恩智浦i.MX RT1180系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)的更多相关文章

  1. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(1)- Boot简介

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的BootROM功能简介. 截止目前为止i.MX RTxxx系列已公布的芯片仅有一款i.MXRT60 ...

  2. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(2)- Boot配置(ISP_Pin, OTP)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXRTx ...

  3. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT架构. Bootloader是嵌入式MCU开发里很常见的一种专用的应用程序,在一个没有Boo ...

  4. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(9)- KBOOT特性(IntegrityCheck)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之完整性检测(Integrity Check)特性. Application完整性检测是非常 ...

  5. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(2)- KBOOT形态(ROM/Bootloader/Flashloader)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT形态. 痞子衡在前一篇文章里简介了 KBOOT架构,我们知道KBOOT是一个完善的Bootl ...

  6. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...

  7. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(11)- KBOOT特性(ROM API)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之ROM API特性. KBOOT的ROM API特性主要存在于ROM Bootloader ...

  8. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(10)- KBOOT特性(可靠升级)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之可靠升级(Reliable Update)特性. 所谓可靠升级机制,即在更新Applica ...

  9. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子 ...

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

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间. 本篇是i.MXRT1170启动时间评测第三弹了,前两篇分别给大家评 ...

随机推荐

  1. (Python基础教程之二)在Sublime Editor中配置Python环境

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  2. API之接口服务

    聚合数据: https://www.juhe.cn/ 百度api市场: https://apis.baidu.com/

  3. Codeforces Round 642 (Div3)

    K-periodic Garland 给定一个长度位\(n\)的\(01\)串,每次操作可以将\(1\)变为\(0\)或者将\(0\)变为\(1\),现在你需要通过操作使得所有\(1\)之间的距离为\ ...

  4. 从 CephFS 到 JuiceFS:同程旅游亿级文件存储平台构建之路

    随着公司业务的快速发展,同程旅行的非结构化的数据突破 10 亿,在 2022 年,同程首先完成了对象存储服务的建设.当时,分布式文件系统方面,同程使用的是 CephFS,随着数据量的持续增长,Ceph ...

  5. P6474 [NOI Online #2 入门组] 荆轲刺秦王 题解

    荆轲将会臭名昭著 首先 $15$ 做法很简单,那就是直接 `cout<<-1` 考虑用 BFS 来解思路很简单,但是怎么求每个士兵的控制范围呢? 直接暴力时间复杂度是 $O(nma^2)$ ...

  6. dockercompose配置ulimit

    在 Docker Compose 文件中设置 ulimit 的方法如下: 在 Docker Compose 文件的 services 块中,为您要设置 ulimit 的服务添加 ulimits 子块, ...

  7. Qt开发经验小技巧191-195

    关于QList队列的处理中,我们最常用的就是调用append函数添加item,往前插入item很多人第一印象就是调用insert(0,xxx)来插入,其实QList完全提供了往前追加item的函数pr ...

  8. Linux 下挂载群晖 NAS 硬盘拓展空间(NFS)

    在群晖 NAS 上配置 开启 NFS 服务 打开群晖的 设置 - 文件服务 - NFS,把 NFS 服务勾选上,协议选最新即可. 配置文件夹的 NFS 权限 在 设置 - 共享文件夹 下,选择需要开启 ...

  9. 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

    ► 相关链接: ①MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对Uniapp和Vue开发有 ...

  10. vs code 添加jquery的智能提示

    1.安装node.js 2.新建VsCodeTestApp文件夹,用vs code打开这个文件夹 3.打开cmd,进入TestApp文件夹所在盘符,然后cd进入VsCodeTestApp C:\Use ...