痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10.A)- FlexSPI NAND启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NAND启动时间。
本篇是 i.MXRT1170 启动时间评测第四弹,前三篇分别给大家评测了 Raw NAND 启动时间(基于 MIMXRT1170-EVK_Rev.B)、Serial NOR 启动时间(基于 MIMXRT1170-EVB_Rev.A2)、1bit SPI NOR 恢复启动时间(基于 MIMXRT1170-EVK_Rev.C)。最近痞子衡刚写了篇 《i.MXRT从Serial NAND启动》,趁热打铁,索性在新板卡 MIMXRT1170-EVKB_Rev.B 上再测一下 Serial NAND 的启动时间(这里指在 ITCM 执行,暂不考虑在 SDRAM 执行)。
一、准备工作
1.1 知识储备
除了依赖的底层外设类型不同之外,Serial NAND 启动流程与 Raw NAND 启动流程几乎是一致的,因为存储介质角度而言两者都是 NAND。我们知道 NAND 中仅能放置 Non-XIP Application,其不支持原地执行,所以需要 BootROM 来完成 Application 拷贝工作(从 NAND 到 ITCM),为了辅助 BootROM 完成工作,我们需要在 NAND 中放一些特殊数据(即下面的 FCB, DBBT, IVT)。
BootROM 首先从 NAND 中读取 FCB(此时是利用 eFuse 0x940 和 0xC80 里的简化时序配置选项),FCB 中含有三类信息:用户设置的完整时序配置数据(可选的)、DBBT 位置,IVT 位置。BootROM 首先会检查是否存在完整时序配置数据,如果有,则使用这个数据重新配置 NAND 访问时序。然后 BootROM 会继续获取 DBBT 数据,获知当前 NAND 的坏块信息,接下来便是根据 IVT 信息获取 Application 数据完成拷贝(拷贝过程中需要避开坏块)。
1.2 时间界定
关于时间起点和终点,参考《FlexSPI NOR启动时间》 里的1.2节,方法保持一致。EVKB_Rev.B 上时间起点位置 POR 直接引到了 J92-2,无需额外飞线了,不过这个点位有很多电容,会导致电压上升时间缓慢,影响起点选择,后面会特别备注。
1.3 制作应用程序
关于应用程序制作,参考《SEMC NAND启动时间》 里的1.3节。这次测试对长度方面做一些优化,代码改动后的测试工程编出来大小是 21516 bytes,我们可以用二进制编辑器打开 .bin 文件在后面直接插入一些数据将其凑整成 24KB,按此方法可以多做几个不同长度的 image。
1.4 下载应用程序
应用程序的下载需借助痞子衡开发的 NXP-MCUBootUtility 工具(v5.2.1版本及以上),我们需要对 EVKB 板卡做一些改动,将原 U23 - NOR Flash 改为 GigaDevice GD5F1GQ5UEYIG。
翻看 GD5F1GQ5UEYIG 的数据手册,它的总容量是 1Gb,Page Size 是 2KB,最高速度可达 133MHz,因此使用 NXP-MCUBootUtility 下载时做如下配置(不同测试,我们仅需调整 Max Frequency 选项即可):
1.5 示波器抓取信号
一切准备就绪,可以用示波器抓 NAND 启动时间了。这次痞子衡偷了个懒,就测量两路信号,通道一监测主芯片 POR 信号,通道二监测 LED GPIO 信号。
二、开始测试
2.1 测试结果
在公布结果之前,痞子衡先带大家分析一下示波器抓取的启动时间波形,方便大家理解后续表格里的各项组成。POR 信号电压上升时间比较缓慢,其供电来自于 VDD_1V8,我们时间起点暂取其标准有效值 70% - 1.2V 处。
现在让我们看结果吧,痞子衡基于 Flash 速度和 App 长度组合做了很多测试,结果如下表所示(注:表中结果都是在 50M 次/秒的采样率下所得):
Flash型号 | App长度 | Flash Timing模式 | 测量启动时间 | 修正启动时间 |
---|---|---|---|---|
GD5F1GQ5UEYIG | 24KB | 30MHz | 11.66 ms | 10.88 ms |
50MHz | 10.26 ms | 9.48 ms | ||
60MHz | 9.86 ms | 9.08 ms | ||
72MHz | 9.46 ms | 8.68 ms | ||
80MHz | 9.32 ms | 8.54 ms | ||
100MHz | 9.1 ms | 8.32 ms | ||
133MHz | 8.86 ms | 8.08 ms | ||
240KB | 30MHz | 48.06 ms | 47.28 ms | |
50MHz | 34.66 ms | 33.88 ms | ||
60MHz | 29.46 ms | 28.68 ms | ||
72MHz | 26.66 ms | 25.88 ms | ||
80MHz | 24.26 ms | 23.48 ms | ||
100MHz | 22.46 ms | 21.68 ms | ||
133MHz | 21.76 ms | 20.98 ms |
2.2 结果修正
启动时间包含 BootROM 和 BootFlash 时间,因为这次测试痞子衡没有拉出 NAND CS# 信号,所以无法直接测量出 BootROM 时间,但是可以根据结果推算,选取 24KB 和 240KB 在 30MHz 下测试的两组结果:
BootROM_time + 24KB_60MHz_BootFlash_time = 9.86ms
BootROM_time + 240KB_60MHz_BootFlash_time = 29.46ms
24KB_60MHz_BootFlash_time * 10 = 240KB_60MHz_BootFlash_time(假定)
得出 BootROM_time = 7.68ms
前几篇测试痞子衡得到的 BootROM 时间都是 6.9ms,看来时间起点 POR 按 70% VDD_1V8 的选择偏早,应该要往后再移一些,如果修正结果的话,那上表里的所有结果全部要再减去 (7.68-6.9)ms 才是更精确的启动时间结果。
至此,恩智浦 i.MX RT1170 FlexSPI NAND 启动时间痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。
痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10.A)- FlexSPI NAND启动时间(RT1170)的更多相关文章
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间. 本篇是i.MXRT1170启动时间评测第三弹了,前两篇分别给大家评 ...
- 痞子衡嵌入式:恩智浦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 ...
随机推荐
- 数据结构(DataStructure)-02
数据结构-02 **数据结构-01回顾** **数据结构-02笔记** **作业讲解** **链表作业题一** **链表作业题二** **链表作业题三** **线性表 - 栈(LIFO)** **线性 ...
- [OpenCV-Python] 15 图像阈值
文章目录 OpenCV-Python:IV OpenCV中的图像处理 15 图像阈值 15.1 简单阈值 15.2 自适应阈值 15.3 Otsu' 's 二值化 15.4 Otsu' 's 二值化是 ...
- NC19469 01串
题目链接 题目 题目描述 I used to believe We were burning on the edge of something beautiful Something beautifu ...
- Three.js 进阶之旅:页面平滑滚动-王国之泪 💧
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 浏览网页时,常被一些基于鼠标滚轮控制的页面动画所惊艳到,比如greenso ...
- mac 如何快捷键打开当前文件夹对应的终端窗口
- 2022-10-17:特殊的二进制序列是具有以下两个性质的二进制序列: 0 的数量与 1 的数量相等。 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。 给定一个特殊的二进制序列 S,以
2022-10-17:特殊的二进制序列是具有以下两个性质的二进制序列: 0 的数量与 1 的数量相等. 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量. 给定一个特殊的二进制序列 S,以 ...
- 2022-09-25:给定一个二维数组matrix,数组中的每个元素代表一棵树的高度。 你可以选定连续的若干行组成防风带,防风带每一列的防风高度为这一列的最大值 防风带整体的防风高度为,所有列防风高度
2022-09-25:给定一个二维数组matrix,数组中的每个元素代表一棵树的高度. 你可以选定连续的若干行组成防风带,防风带每一列的防风高度为这一列的最大值 防风带整体的防风高度为,所有列防风高度 ...
- 2021-05-07:给定一个数组arr,你可以在每个数字之前决定+或者-,但是必须所有数字都参与 ,再给定一个数target,请问最后算出target的方法数是多少?
2021-05-07:给定一个数组arr,你可以在每个数字之前决定+或者-,但是必须所有数字都参与 ,再给定一个数target,请问最后算出target的方法数是多少? 福大大 答案2021-05-0 ...
- 2021-05-13:数组中所有数都异或起来的结果,叫做异或和。给定一个数组arr,返回arr的最大子数组异或和。
2021-05-13:数组中所有数都异或起来的结果,叫做异或和.给定一个数组arr,返回arr的最大子数组异或和. 前缀树.一个数,用二进制表示,0走左边分支,1走右边分支. 时间复杂度:O(N). ...
- .join()字符串操作函数
join函数是一个字符串操作函数 str.join(item)str表示字符串(字符),item表示一个成员,注意括号里必须只能有一个成员,比如','.join('a','b')这种写法是行不通的 举 ...