痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间。
本篇是i.MXRT1170启动时间评测第三弹了,前两篇分别给大家评测了Raw NAND启动时间(基于A0芯片的EVK)、Serial NOR启动时间(基于B0芯片和EVB),今天痞子衡拿到了B0芯片配套的EVK (Rev.C),其实i.MXRT1170系列EVK还有个区别于i.MXRT10xx系列EVK的地方就是首次放了Secondary Boot Flash(挂在LPSPI接口上),老规矩,痞子衡继续为大家测一测从LPSPI Flash的恢复启动时间(这里指在ITCM执行,暂不考虑在SDRAM执行)。
一、准备工作
1.1 知识储备
在开始测试之前,你需要认真读一下痞子衡的旧文 《恩智浦i.MX RT1xxx系列MCU启动那些事(13)- 从Serial(1-bit SPI) EEPROM/NOR恢复启动》,对i.MXRT从1bit NOR恢复启动的原理有一个充分认识。
无论是Raw NAND还是Serial NOR,都属于Primary Flash,它们是一级启动设备。仅当选中的一级启动设备中没有可启动的App时(比如Flash被误擦除,比如Flash信号线有干扰,比如开启了签名但验签失败等),1bit SPI NOR才会发挥作用,BootROM会从1bit SPI NOR起始地址处加载initial image数据(4KB),再根据initial image里的IVT,Boot Data获取Application起始地址以及总长度,然后再将Application全部拷贝到相应SRAM里去启动,其过程如下图所示:
1.2 时间界定
关于时间终点,参考《FlexSPI NOR启动时间》 里的1.2节,方法保持一致。
1.3 制作应用程序
关于应用程序制作,参考《SEMC NAND启动时间》 里的1.3节。
1.4 下载应用程序
应用程序的下载需借助痞子衡开发的 NXP-MCUBootUtility 工具(v2.4版本及以上),EVK上的Flash型号是MX25L4006,并且连接的是主芯片的LPSPI1引脚(注意并不是任意Pinmux的LPSPI1都可以的,具体请查看芯片参考手册里System Boot章节的第一段)。
翻看MX25L4006的数据手册,它的总容量是512KB,Page Size是256bytes,两种Sector Size(4KB/64KB),在1bit模式下最高速度可达86MHz,因此使用 NXP-MCUBootUtility 下载时做如下配置(Spi Speed最高仅能设20MHz,这主要受限于LPSPI外设):
i.MXRT1170中关于1bit SPI NOR恢复启动的eFuse配置与之前i.MXRT10xx型号有所不同(精简了SPI Address选项),我们在下载App时会顺便烧录eFuse。
1.5 示波器抓取信号
一切准备就绪,可以用示波器抓1bit SPI NOR启动时间了。通道一监测主芯片POR信号,通道三监测Secondary Flash片选信号(LPSPI1_PCS0),通道四监测LED GPIO信号。为了更直观地看从Primary Flash启动失败进入Secondary Flash恢复启动的过程,痞子衡特地加了通道二监测Primary Flash片选信号(FlexSPI_A_SS0)。

二、开始测试
2.1 测试结果
在公布结果之前,痞子衡先带大家分析一下示波器抓取的启动时间波形,方便大家理解后续表格里的各项组成。
通道一连接POR引脚,电平拉高是启动计时的开始,启动后会先经历BootROM时间(CM7内核先执行ROM代码,做一些常规系统初始化,读取用户启动配置(假设启动设备选的FlexSPI NOR),然后配置好FlexSPI模块),底下经历Primary Device时间,即先尝试读一下挂在FlexSPI接口上的Flash(先读FDCB,如果没有FDCB则启动失败),通道二(FlexSPI Flash的片选)信号有短暂的拉低,底下才经历BootFlash时间(此时开始访问挂在LPSPI接口上的Flash,从Flash里读取IVT、BootData以及搬移App,所以你会看到通道三(LPSPI Flash的片选)信号持续拉低了,搬移完成之后便跳转到App里执行),最后你会看到通道四电平拉高了(App在执行)。

分析完了启动时间组成,让我们看结果吧。痞子衡基于App长度一共做了2个测试,结果如下表所示(注:表中结果都是在2.5M次/秒的采样率下所得):
| Flash型号 Timing模式 |
App长度 (bytes) |
App执行位置 | BootROM时间 | PrimaryDevice时间 | BootFlash时间 | 总启动时间 |
|---|---|---|---|---|---|---|
| MX25L4006 1bit, SDR, 20MHz |
18066 | ITCM | 6.940 ms | 0.916 ms | 13.88 ms | 21.735 ms |
| 253586 | ITCM | 6.952 ms | 0.920 ms | 146.928 ms | 154.8 ms |
2.2 结果分析
根据原理和测试结果,我们有三个结论:
- 结论1:BootROM时间差不多是固定的,大概在6.9ms
- 结论2:Primary Device时间需根据实际情况而定,不同的一级启动设备以及不同的非完整App都可能影响最终时间
- 结论3:BootFlash时间跟App长度成正比,跟Flash工作模式(SPI速率)也是正比(虽然没有实测)
至此,恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)的更多相关文章
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1010的FlexSPI NOR启动的连接方式. 在写完 <FlexSPI NOR启动连接方式(RT1015/ ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NOR启动时间. 痞子衡刚刚拿到i.MXRT1170 B0版本的芯片,迫不及待地在上面跑了 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.B)- FlexSPI NOR连接方式大全(RT1160/1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1160/1170两款MCU的FlexSPI NOR启动的连接方式. 这个 i.MXRT FlexSPI NOR 启动 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT架构. Bootloader是嵌入式MCU开发里很常见的一种专用的应用程序,在一个没有Boo ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(9)- KBOOT特性(IntegrityCheck)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之完整性检测(Integrity Check)特性. Application完整性检测是非常 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(2)- KBOOT形态(ROM/Bootloader/Flashloader)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT形态. 痞子衡在前一篇文章里简介了 KBOOT架构,我们知道KBOOT是一个完善的Bootl ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(11)- KBOOT特性(ROM API)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之ROM API特性. KBOOT的ROM API特性主要存在于ROM Bootloader ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(10)- KBOOT特性(可靠升级)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之可靠升级(Reliable Update)特性. 所谓可靠升级机制,即在更新Applica ...
随机推荐
- 矩阵的基本性质 之 对称矩阵,Hermite矩阵,正交矩阵,酉矩阵
1.对称矩阵 2.Hermite矩阵 3.正交矩阵 4.酉矩阵
- Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览
当大潮退去,才知道谁在裸泳..关注公众号[BAT的乌托邦]开启专栏式学习,拒绝浅尝辄止.本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈.MyBatis. ...
- 最短路——Floyd算法
Folyd算法求最短路 介绍: Folyd算法是用来求带权图中每两点之间的最短路的动态规划算法,(它每次求得的值都可以在后面使用).该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学 ...
- nginx: command not found
nginx 正常启动,可以访问服务器地址:welcome to nginx 使用nginx -t 等命令时 报错:nginx: command not found 这是环境变量未配置 配置环境变量 v ...
- 详解UDP协议
运输层位于网络层之上,网络层提供了主机之间的逻辑通信:而运输层为运行在不同主机上的应用进程之间提供了逻辑通信.从应用程序角度看,通过逻辑通信,运行不同进程的主机好像直接相连一样.应用进程使用运输层提供 ...
- 因为mac不支持移动硬盘的NTFS格式,mac电脑无法写入移动硬盘的终极解决办法
相信很多实用mac的同学,都有磁盘容量问题,所以才使用移动硬盘 当移动硬盘在windows电脑上使用过之后,会被格式化为NTFS格式 而mac电脑不支持NTFS格式 这里有两种方法 第一种是把移动硬盘 ...
- 题解 洛谷 P6351 【[PA2011]Hard Choice】
删边操作不好处理,所以先将操作倒序,将删边转化为加边. 考虑对于两个点的询问,若这两点不连通或这两个点分别处于两个不同的边双连通分量中(两点间存在桥)时,是不满足题目要求的. 可以用\(LCT\)来维 ...
- 深入理解 EF Core:使用查询过滤器实现数据软删除
原文:https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织 ...
- Python 什么时候会被取代?
以下是译文: Python经过了几十年的努力才得到了编程社区的赏识.自2010年以来,Python得到了蓬勃发展,并最终超越了C.C#.Java和JavaScript. 但是,这种趋势将持续到什么 ...
- windows docker xshell 默认登录密码
boot2docker用户和密码 用户 密码 进入方式 docker tcuser ssh root command:sudo -i (docker用户下执行)