痞子衡嵌入式:了解i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点。
前段时间痞子衡写了一篇 《深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程》,那篇文章如果你认真读,你会发现为了能让i.MXRT系列尽可能地支持来自不同厂商的不同串行NOR Flash型号,而且还得发挥Flash最好性能,BootROM可谓煞费苦心,做了很多精心设计。
i.MXRT1060是在i.MXRT1050之后发布的,相比i.MXRT1050在FlexSPI NOR启动初始化上有了一些优化点,今天痞子衡就跟大家聊一聊这些优化点(或者说差异的地方):
- 备注:本文主角是i.MXRT1060,但内容也基本适用i.MXRT1170,仅细节微小差别。
一、整体初始化流程
跟上一篇文章一样,痞子衡重画了i.MXRT1060的FlexSPI NOR启动流程图,从流程上来看,其和i.MXRT1050有两处主要差异,第一个是步骤0(冗余App启动支持)和步骤X(Auto Probe),除此以外,还有一些微小差异(JEDEC硬件复位,延时等待策略等)。
二、初始化流程差异
本文不会介绍步骤X(Auto Probe特性),主要是说一下其他差异,步骤X是个特别重要的改进,痞子衡会另起一文单独介绍。
2.1 冗余App启动
第一个要提的便是新增的冗余App启动支持,即步骤0,痞子衡之前写过一篇文章 《利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA》,这篇文章的第二节讲了i.MXRT1060上多了一个Remap功能,这个功能使得Flash里可以存放多份相同链接地址的XIP App(偏移0x0处固定放App1;偏移0x100000处(这个地址用户自定义)放了App2),借助Remap功能可以将Flash里App2在内存映射地址上直接覆盖到App1处,不需要物理上的实际搬移。
fuse 0x6e0[15:13] - xSPI_FLASH_IMAGE_SIZE,第二份App的实际位置,即填入Remap功能的ADDR_END寄存器的值。
fuse 0x6e0[23:16] - FLEXSPI_NOR_SEC_IMAGE_OFFSET,第二份App的实际大小,即填入Remap功能的ADDR_OFFSET寄存器的值。

BootROM中支持冗余App启动,并不是常见的OTA用意,而是防App误损坏导致设备无法启动,因此App1固定在偏移0x0地址,App2永远是覆盖App1,这意味着App2必须跟App1一样都是包含FDCB, IVT, BootData等完整启动头的App。BootROM上电永远先尝试启动App1,如App1无法启动,则尝试启动App2。我们知道,多份App都损坏是小概率事件。
- 备注1:这个功能在i.MXRT1010上同样存在,毕竟i.MXRT1010支持Remap。
- 备注2:这个功能虽存在于i.MXRT1170上,但步骤移到了FlexSPI第二次初始化之后。
2.2 延时等待策略
在i.MXRT1050 FlexSPI NOR启动初始化步骤4里的善后工作里,有一个借助调用microseconds_delay()做延时以使FlexSPI外设以及Flash完全准备好的操作,这个操作在i.MXRT1060上被从步骤4移到了步骤1前后,即复位Flash前做一次,复位Flash后再做一次。
- 备注1: 复位Flash前的那一次延时操作,实际hold time要减去3ms(如hold time设置小于3ms,则只减3ms),因为复位Flash前属于系统上电启动,ROM本身执行到开始访问Flash就需要时间,所以Flash差不多有近3ms的上电等待时间了。
- 备注2: hold time在fuse中的位置从i.MXRT1050上的0x450[3:2]被移到了i.MXRT1060上的0x6e0[5:4]。
2.3 JEDEC标准复位
i.MXRT1060在复位Flash上多了一个JEDEC标准的硬件复位选项,也包含在步骤1里面,这个复位仅针对Adesto ATXP系列为代表的Flash有效,需要Flash本身支持JEDEC制定的硬件复位功能。
至此,i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:了解i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点的更多相关文章
- 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...
- 痞子衡嵌入式:深扒i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合. 在串行 NOR Flash 热启动过程 ...
- 痞子衡嵌入式:了解i.MXRTxxx系列ROM中灵活的串行NOR Flash启动硬复位引脚选择
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中灵活的串行NOR Flash启动硬复位引脚选择. 关于 i.MXRT 系列 BootROM 中串行 NOR ...
- 痞子衡嵌入式:轻松为i.MXRT设计更新Segger J-Link Flash下载算法文件
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件. 想要在Flash中调试,基本是离不开Flash下载算法的,毕 ...
- 痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项. 痞子衡前段时间写过一篇小文<为i.MXRT设计更 ...
- 痞子衡嵌入式:在SBL项目实战中妙用i.MXRT1xxx里SystemReset不复位的GPR寄存器
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx里SystemReset不复位的GPR寄存器的小妙用. 我们知道稍大规模的项目代码设计一般都是多人协作完成的,在项目 ...
- 痞子衡嵌入式:恩智浦LPC系列MCU开发那些事 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是恩智浦LPC系列微控制器相关知识. 恩智浦半导体最早于2003年便开始推出LPC系列MCU,但早期的产品LPC2000/3000系列属 ...
- 痞子衡嵌入式:自识别特性(Auto Probe)可以让i.MXRT1060无需FDCB也能从NOR Flash启动
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是自识别特性(Auto Probe)可以让i.MXRT1060无需FDCB也能从NOR Flash启动. 接着上篇文章 <了解i.M ...
- 痞子衡嵌入式:揭秘i.MXRT1060,1010上串行NOR Flash冗余程序启动设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业 ...
随机推荐
- 手把手教你使用Vuex(三)
2.mutation属性 了解: mutation是更改Vuex的store中的状态的唯一方法.非常类似于事件,官网说的"每个mutation都有一个字符串的事件类型和一个回调函数" ...
- 优测 x QTA 兼容性测试全面启动啦
鉴于Android系统开放性开发,以及Android系统在智能机市场的覆盖率超高的特点,APP的兼容性测试需求大幅提升.为迎合市场需求,优测(Utest)与QTA合作,全力打造兼容性测试服务.由优测提 ...
- Netlink 内核实现分析 2
netlink 应用层如何创建socket 应用层通过socket()系统调用创建Netlink套接字,socket系统调用的第一个参数可以是AF_NETLINK或PF_NETLINK(在Linux系 ...
- uboot分析——初始化
1.start.S 初始化 icache 看门狗 时钟 DDR 设置栈 初始化串口,并打印 OK 以上完成 lowlevel_init -------------------------------- ...
- sql实现通过父级id查询所有的子集
通过sql实现传入父级id查询出所有的子集 最近刚好有个业务需要这样实现个功能,就是在点击查询列表详情的时候只会传入父级id,而详情得渲染出所有子集,那么做法有很多,可以直接通过代码递归查询去实现, ...
- Linux提权(持续更新)
利用/etc/passwd提权 个人认为,这种提权方式在现实场景中难以实现,条件太过苛刻,但是建立Linux下的隐藏账户是个不错的选择,灵感来自:https://www.hackingarticles ...
- Android RFID调试总结
调试了包括驱动,jni层,当然也熟悉了下应用层. 1. 驱动层包括修改: device/eastaeon/aeon6735_65c_l/init.project.rc //去 ...
- 使用FL Studio来制作停顿的效果
停顿效果是一种在音乐创作中非常常用的音效,它能起到缓冲的作用,而且能使这段旋律更具节奏感,在比较激情的歌曲中尤为常见.例如知名歌手王力宏演唱的<火力全开>中就使用了停顿效果,为歌曲加了不少 ...
- 轻松学编曲,论FL Studio的钢琴卷帘功能
在编曲软件FL Studio中有一个会被经常用到的功能,叫钢琴卷帘,可以用来扒谱.编曲.制作音乐等,并且操作简单,即使不懂乐理也能一样使用.今天,就来带大家认识一下钢琴卷帘. 还没有安装FL Stud ...
- 如何清理MacBook电脑缓存?
使用Mac电脑的用户都知道,Mac其空间硬盘大多数都是只有128G以及256G的规格,而用惯了win系统基本都是超过512G的硬盘的用户,转手来使用Mac电脑,就不得不接受这一硬伤问题. 用户往往再怎 ...