大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦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基础教程之十四)Python将tuple开箱为变量或参数

    Python示例将N元素元组或序列开箱缩为N个变量的集合.将元组开箱缩为变量的 Python示例. 1. Python开箱元组示例 可以使用简单的赋值操作将任何序列(或可迭代)开箱缩为变量.唯一的要求 ...

  2. 三菱电梯IC卡系统数据库备份与恢复

    查看msde2000的登录方式 sa密码lonele 64位操作系统下 reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsof ...

  3. SPRINGBOOT 热加载JAR包

    1.概要 springboot 的程序一般打包程成jar包.我们有些情况下,我们需要对程序进行扩展,我们没办法对已打包的程序进行修改. 我们希望的做法是: 1.将我们的一些接口打包. 2.在扩展包时, ...

  4. Zcmu-1178

    思路: 分析题目要求的就是由2,3,5,7单独相乘或者组合相乘的数字. 所以将数字循环起来相乘,之后结果按从大到小地无重复放进数组当中. 学长 #include<set> #include ...

  5. less 动态样式语言

    1.less的介绍 Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展 官方文档 2.less需要编译才能被浏览器解析 浏览器 ...

  6. 19号CSS学习

    一.CSS的复合选择器 更高效的选择目标元素. 后代选择器.子选择器.并集选择器.伪类选择器等. 1.后代选择器 可以选择父元素里的子元素. 又称包含选择器. 必须是空格,必须是后代,ul li {c ...

  7. Ant Design Pro项目ProTable怎么实现单元格合并效果

    前情 公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 产品效果图 最新接到的一个后 ...

  8. js修改表单值不会触发input事件

    前情 最近在做需求开发时候,需要监听表单的input事件 坑位 当通过JS动态修改表单的值的发现并不会触发表单的input事件 Why? 个人猜测是浏览器默认行为,input只会针对用户手动输入做响应 ...

  9. hello鸿蒙

    1. 前言 鸿蒙是一款由华为推出的全生态操作系统(探索 | 华为开发者联盟),最近几年发展势头非常强劲,现在开始,让我们来一起认识他吧. 本文针对鸿蒙基本的开发内容做一次概览性的串联. 咱们学习一款新 ...

  10. 深入理解 HTTP 协议:从基础到实践全解析

    在当今数字化时代,HTTP 协议如同互联网世界的"语言",支撑着无数网页浏览.数据传输和在线交互.无论你是初涉编程的新手,还是经验丰富的开发者,深入掌握 HTTP 协议都至关重要. ...