大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦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)的更多相关文章

  1. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间. 本篇是i.MXRT1170启动时间评测第三弹了,前两篇分别给大家评 ...

  2. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1010的FlexSPI NOR启动的连接方式. 在写完 <FlexSPI NOR启动连接方式(RT1015/ ...

  3. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NOR启动时间. 痞子衡刚刚拿到i.MXRT1170 B0版本的芯片,迫不及待地在上面跑了 ...

  4. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.B)- FlexSPI NOR连接方式大全(RT1160/1170)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1160/1170两款MCU的FlexSPI NOR启动的连接方式. 这个 i.MXRT FlexSPI NOR 启动 ...

  5. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT架构. Bootloader是嵌入式MCU开发里很常见的一种专用的应用程序,在一个没有Boo ...

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

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

  7. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(2)- KBOOT形态(ROM/Bootloader/Flashloader)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT形态. 痞子衡在前一篇文章里简介了 KBOOT架构,我们知道KBOOT是一个完善的Bootl ...

  8. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...

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

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之ROM API特性. KBOOT的ROM API特性主要存在于ROM Bootloader ...

  10. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(10)- KBOOT特性(可靠升级)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之可靠升级(Reliable Update)特性. 所谓可靠升级机制,即在更新Applica ...

随机推荐

  1. 从原理聊JVM(三):详解现代垃圾回收器Shenandoah和ZGC

    作者:京东科技 康志兴 Shenandoah Shenandoah一词来自于印第安语,十九世纪四十年代有一首著名的航海歌曲在水手中广为流传,讲述一位年轻富商爱上印第安酋长Shenandoah的女儿的故 ...

  2. Linux grep命令详细教程

    [本文出自天外归云的博客园] 简介 Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行.grep是全称"global search r ...

  3. P7603 [THUPC2021] 鬼街(减半警报器模板)

    P7603 [THUPC2021] 鬼街(减半警报器模板) 前言 这是一个由 lxl 大佬提出的神奇 trick,第一次省选集训的时候有点颓,听完了没写.刚好明天又要讲这个不如写篇题解. 还是,我太弱 ...

  4. Win10系统Anaconda下tensorflow的GPU环境搭建

    我的环境:Win10 + Anaconda + tensorflow-gpu1.14 + CUDA10.0 + cuDNN7.6 + python3.6 注意:tensorflow版本.CUDA版本. ...

  5. 2020-09-23:TCP头部信息有哪些?

    福哥答案2020-09-23:#福大大架构师每日一题# 福哥口诀法:T源目序缺首保 紧确推和复同终 窗校紧选数(TCP格式:源端口,目的端口,序号,确认号,首部长度,保留,紧急位URG,确认位ACK, ...

  6. 2020-12-15:mysql的回滚机制是怎么实现的?

    福哥答案2020-12-15:[答案来自此链接:](https://www.cnblogs.com/ld-swust/p/5607983.html)在 MySQL 中,恢复机制是通过回滚日志(undo ...

  7. Netty自定义协议要素

    魔数:用来判断是否是无效数据包 协议版本号:可以支持协议的升级 序列化算法:消息正文使用哪种序列化方式,可以扩展.例如:protobuf,json,hessian等 指令类型:跟业务相关,例如:登录, ...

  8. 【Java】Eclipse常用快捷键整理

    前言 还是最近在上Java课,由于疫情原因,看的网课,那里的老师比较实战派,很多时候不知道按了什么快捷键就立马出现了很骚的操作.网上查询后发现了一些快捷键对于我这个eclipse小白还是挺常用的,整理 ...

  9. 2015年蓝桥杯C/C++大学B组省赛真题(加法变乘法)

    题目描述: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28+2 ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (26)-- 算法导论5.1 1题

    一.证明:假设在过程 HIRE-ASSISTANT 的第 4 行中,我们总能决定哪一个应聘者最佳.则意味着我们知道应聘者排名的全部次序. 文心一言: 证明: 假设在过程 HIRE-ASSISTANT ...