大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是自识别特性(Auto Probe)可以让i.MXRT1060无需FDCB也能从NOR Flash启动

  接着上篇文章 《了解i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点》 继续聊。对于i.MXRT1050为代表的第一代型号,Flash里必须要放置用户FDCB配置块,存储在这颗Flash里的App才能被正常启动。这个设计在i.MXRT1060为代表的第二代型号里有了改良,BootROM中增加了一个新特性,叫Auto Probe(自动识别),这个特性可以在不放置用户FDCB配置块的情况下App也能被正常启动。今天痞子衡就跟大家好好聊聊这个特性:

  • 备注:本文主角是i.MXRT1060,内容也基本适用i.MXRT1170,仅细节微小差别。

一、自动识别功能意义

  先从整体FlexSPI NOR启动初始化流程图上来看,自动识别(步骤X)被插入了初始化流程中,安排在FlexSPI外设第一次初始化之后,BootROM此时会尽力尝试去识别外接的Flash信息,如果识别成功则会得到一个自识别FDCB配置块,然后直接跳到FlexSPI NOR第二次初始化流程。如果识别失败,则继续按原来方式尝试读取用户FDCB配置块来获取外接Flash信息。

  有了Flash自动识别功能,BootROM可以不必再强制客户在Flash里放置FDCB块,很多时候客户未必特别了解Flash以及这个FDCB块结构,不用提供FDCB可以为客户省去很多耗费在Flash上的研发时间,客户仅需要全心关注App功能设计。

二、开启自动识别功能

  Flash自动识别功能开启位在fuse_0x450[0](或者BT_CFG[0]引脚),默认是不使能的。想要开启这个功能需要拉高相关CFG引脚或者烧写相应Fuse位。

fuse 0x450[0] - FLASH_AUTO_PROBE_EN,Flash自动识别功能开启

三、自动识别依赖的配置

  虽说是Flash自动识别,但其实还是依赖Fuse里一些配置的,一共有如下四处配置,BootROM会根据这四处配置去进入Flash自动识别程序从而得到一个匹配的FDCB配置块,所以其实这个功能更准确的说法应该是FDCB自动生成。

fuse 0x450[10:8] - FLASH_TYPE,决定当前连接的Flash类型
fuse 0x450[3:2] - FLASH_PROBE_TYPE,当FLASH_TYPE=0/1/7时,取代FLASH_TYPE来决定当前连接的Flash类型
fuse 0x6e0[3:1] - xSPI_FLASH_BOOT_FREQUENCY,决定FlexSPI工作频率
fuse 0x6e0[11:8] - xSPI_FLASH_DUMMY_CYCLE,配置Flash读访问时序前需要的Dummy周期

  关于FDCB自动生成,其实就是利用了BootROM里那一套经典的FlexSPI NOR驱动(详见痞子衡之前的文章 《利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP》 里的2.2和2.3节),自动识别就是根据配置值组合出一个匹配的 serial_nor_config_option_t option参数,经由flexSpiNorDriver->get_config()函数运行后便可得到完整的flexspi_nor_config_t config结构体(即FDCB)。

  serial_nor_config_option_t option参数组合规则如下表所示:

FLASH TYPE FLASH PROBE TYPE option值 备注
3'b000

3'b111
2'b00 0xc0000001 可进一步dummy cycle设置
2'b01 0xc0603001
2'b10 0xc0403001
2'b11 0xc0803001
3'b001 2'b00 0xc0100001 可进一步dummy cycle设置
2'b01 0xc0700001
2'b10 0xc0503001
2'b11 0xc0903001
3'b010 N/A 0xc0233001
3'b011 N/A 0xc0333001
3'b100 N/A 0xc0433001
3'b101 N/A 0xc0633001
3'b110 N/A 未定义

四、自动识别功能测试

  了解了这个自动识别功能细节之后,让我们在MIMXRT1060-EVK上测试一下,首先需要将BT_CFG[0]引脚拉高(R325电阻焊上去,默认DNP),这就开启了自动识别功能。

  MIMXRT1060-EVK上默认连接的是IS25WP064AJBLE,这是一颗经典的133MHz QuadSPI NOR Flash,Fuse里的初始自动识别配置(FLASH_TYPE = 000 - Device supports 3B read,FLASH BOOT FREQ = 0 - 100MHz)适合这颗Flash,因此无需再烧录任何Fuse或拉高其他BT_CFG[x]引脚。

  随便选一个例程 \SDK\boards\evkmimxrt1060\demo_apps\led_blinky 。编译这个 led_blinky 工程(可以选择 flexspi_nor_debug build,工程选项里XIP_BOOT_HEADER_ENABLE=1现在可以去掉了),使用 NXP-MCUBootUtility 工具将其一键下载进Flash中,下载完成后注意擦除掉Flash前1KB的数据(即没有FDCB),切换启动模式后复位板子,可以看到LED正常闪烁,说明自动识别功能生效了。

  如果我们将MIMXRT1060-EVK上的Flash改为S26KS512SDPBHI02,这是一颗典型的1.8V HyperFlash,那么还需要将BT_CFG2[2:0]设为 3'b010 - HyperFlash 1V8才能正常自识别。

  至此,自识别特性(Auto Probe)可以让i.MXRT1060无需FDCB也能从NOR Flash启动痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

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

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

痞子衡嵌入式:自识别特性(Auto Probe)可以让i.MXRT1060无需FDCB也能从NOR Flash启动的更多相关文章

  1. 痞子衡嵌入式:其实i.MXRT下改造FlexSPI driver同样支持AHB方式去写入NOR Flash

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下改造FlexSPI driver以AHB方式去写入NOR Flash. 痞子衡前段时间写过一篇 <串行NAND Fl ...

  2. 痞子衡嵌入式:深扒i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合. 在串行 NOR Flash 热启动过程 ...

  3. 痞子衡嵌入式:揭秘i.MXRT1060,1010上串行NOR Flash冗余程序启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业 ...

  4. 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案. 对于以 i.MXRT 这类没有内部 NVM (Non-Volati ...

  5. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的QPI/OPI模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的QPI/OPI模式. 我们知道 Flash 读时序里有五大子序列 CMD + ADDR + MO ...

  6. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(2) - 识别当前i.MXRT型号

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM ...

  7. 痞子衡嵌入式:在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺. 恩智浦 MCU SE 团队近期一直在加班加点赶 SBL 项目 ...

  8. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(2)- RT1052DVL6性能实测

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的性能. 在前面的文章 i.MXRT微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新 ...

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

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

随机推荐

  1. 开发环境管理利器Vagrant

    引言 不知道你是否经历过,开发环境与生产环境不一致.Windows开发和Linux上的包效果不一样.在我这运行时好的啊 等等等问题,那有没有解决方法呢? 答案就是Vagrant.Docker 1.简介 ...

  2. Java JDBC 模糊查询 避免输入_,%返回全部数据

    Java JDBC 模糊查询 避免输入_,%返回全部数据 "SELECT * FROM employees WHERE INSTR(first_name,?)>0 " 仅供参 ...

  3. memcache安装及解决无法远程连接的问题

    Memcached是什么 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fit ...

  4. C++的转换手段并与explicit关键词配合使用

    前言 C中我们会进行各种类型的强制转化,而在C中我们经常可以看到这种转换 memset(OTA_FLAG_ADDRESS,(uint8_t*)&OTA_Flag,sizeof(OTA_Flag ...

  5. linux开发各种I/O操作简析,以及select、poll、epoll机制的对比

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 IO 概念区分 四个相关概念: 同步(Synchronous) 异步( Asynchronous) 阻塞( Blocking ) 非阻塞( ...

  6. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest PART (10/13)

    $$2018-2019 ACM-ICPC Brazil Subregional Programming Contest$$ \(A.Slackline\ Adventure\) \(B.Marbles ...

  7. 2020牛客暑期多校训练营(第八场)Interesting Computer Game

    传送门:Interesting Computer Game 题意 给出n对数,你可以操作n次,每次操作只能在下面三种中选择一种,问最多可以选多少个不同的数字. 什么都不做 如果a[i]以前没选过,那么 ...

  8. 简谈图论重要性&&图论总结

    从外地学习回来,我对图论才有认识(以前就没接触过,非常尴尬),说实话,学好图论的重要性,就像学数学时在进行解析几何时,图极有可能是打开答案的最后秘钥,也就是数形结合,而懂的人永远明白,用图解决绝对比用 ...

  9. Codeforces Round #653 (Div. 3) A. Required Remainder (数学)

    题意:有三个正整数\(x,y,n\),再\(1\)~\(n\)中找一个最大的数\(k\),使得\(k\ mod\ x=y\). 题解:先记\(tmp=n/x\),再判断\(tmp*x+y\)的值是否大 ...

  10. Bone Collector II HDU - 2639 01背包第k最大值

    题意: 01背包,找出第k最优解 题解: 对于01背包最优解我们肯定都很熟悉 第k最优解的话也就是在dp方程上加一个维度来存它的第k最优解(dp[i][j]代表,体积为i能获得的第j最大价值) 对于每 ...