大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT1170 uSDHC eMMC启动时间

  本篇是 i.MXRT1170 启动时间评测第五弹,前四篇分别给大家评测了 Raw NAND 启动时间(基于 MIMXRT1170-EVK_Rev.B)、Serial NOR 启动时间(基于 MIMXRT1170-EVB_Rev.A2)、1bit SPI NOR 恢复启动时间(基于 MIMXRT1170-EVK_Rev.C)、Serial NAND 启动时间(基于 MIMXRT1170-EVKB_Rev.B)。

  关于 i.MXRT 系列从 SD/eMMC 启动使能方法,痞子衡写过两篇文章,分别是 《RT600从eMMC启动》《RT1050从SD启动》,文章里的方法其实是通用整个 i.MXRT 系列的(仅一些细微差异)。最近痞子衡在支持一个 RT1170 客户,他们使用了 eMMC 启动,并且将板子寄给了痞子衡帮助调试问题,趁此机会,痞子衡就在客户板卡上详细测试一下 eMMC 启动时间:

一、准备工作

1.1 知识储备

  除了依赖的底层数据传输接口外设类型不同之外,SD/eMMC 启动流程和 Serial NAND/Raw NAND 启动流程几乎是一致的,因为存储介质角度而言两者都是 NAND,这里就不过多展开了,参考痞子衡前面测评文章 1.1 节。

  不过这里需要特别注意的是,前面测评的启动设备(串并行NOR/NAND)读写数据率性能接近于接口速率(当然 NAND 有额外 ECC 校验时间),但是 SD/eMMC 因为涉及坏块管理/磨损平衡处理等,设备内部处理会产生更多时间开销,所以实际数据读写率跟数据接口速率之间存在一定差异,这个差异因厂商产品里的处理算法而异,需要翻看设备芯片数据手册。

  本次测试客户板卡上用了一颗来自江波龙的兼容 eMMC5.1 标准的 8GB 容量芯片 FEMDME008G-A8A39,在其数据手册上接口最高速率是 400MBps(HS400模式),但是实际数据读写率分别是 290MBps、115MBps。

eMMC 5.1 specification compatibility
- Backward compatible to eMMC 4.41/4.5/5.0 Bus mode
- Data bus width: 1 bit (default), 4 bits, 8 bits
- Data transfer rate: up to 400 MB/s (HS 400)
- MMC I/F Clock frequency: 0~ 200 MHz

1.2 时间界定

  关于时间起点和终点,参考《FlexSPI NOR启动时间》 里的1.2节,虽然此次测试用得是客户板卡,但是时间起点我们只需要选好 POR_B 测量点即可。

1.3 制作应用程序

  关于应用程序制作,参考《Serial NAND启动时间》 里的1.3节。其实 Non-XIP 程序制作一直有一个小限制,之前的测评文章里都没有特别强调,前段时间痞子衡终于专门写了篇文章 《Non-XIP App一般链接限制》,大家可以了解一下。

1.4 下载应用程序

  应用程序的下载需借助痞子衡开发的 NXP-MCUBootUtility 工具。由于 8bit eMMC 仅 uSDHC2 支持,客户一般都将 eMMC 挂在 uSDHC2 引脚上,工具下载配置 eMMC 的时候,主要保证 instance 正确即可,至于其他速度模式方面的选择,仅跟程序下载速度有关,并不影响 eMMC 启动时间。

  对 eMMC 启动时间产生影响得主要是 RT1170 芯片 fuse 里的如下配置,其中红框选项是根据硬件情况必设的,篮圈选项是用户可按自己要求选择的(这里也是下一节测试启动时间的影响因子)。紫框里决定了 BootROM 运行时的内核主频,CM7 做主核时默认是 400MHz,可高配到 700MHz,这里我们不改 BootROM 默认内核频率配置。

1.5 示波器抓取信号

  一切准备就绪,可以用示波器抓 eMMC 启动时间了。这次痞子衡偷了个懒,就测量两路信号,一个通道监测主芯片 POR 信号,另一个通道监测 GPIO 信号(App 里会拉低这个 GPIO)。与以往不同的是,这次 GPIO 选得是复用 BOOT_CFG 功能的 pin,这个 pin 加了外部强上拉,下一节测试结果小节里会有额外有趣发现。

二、开始测试

  在公布结果之前,痞子衡先带大家分析一下示波器抓取的启动时间波形,方便大家理解后续表格里的各项组成。POR 信号电压上升时间比较缓慢,其供电来自于 VDD_1V8,我们时间起点暂取其标准有效值 70% - 1.2V 处。

  此外我们可以看到 GPIO 在 POR 拉高之前早就被拉高,说明 GPIO 上电早于 POR,这样的硬件设计是符合 i.MXRT 上电采样时序规范的,痞子衡有一篇文章 《RT离线无法启动,请先查看SRC_SBMRx寄存器》 就和这点有关。

2.1 不同App长度测试

  首先做的是不同 App 类型及长度相关的测试,App 分为链接在 ITCM 和 SDRAM 两种(后者需要使能 BootROM DCD 初始化)。此外由于 SDRAM 空间大,因此测试多种 App 长度。所有的测试均在同一种 Boot Config 配置下,即痞子衡 《NAND型启动设备时可用两级设计缩短启动时间》 一文里的配置,这也是该客户使用的启动配置。

  从测试结果来看,eMMC 启动时间在 1MB 以内 App 情况下相差无几,跟 App 长度不成明显正比关系。即使是 4MB 以内,也是看不出明显关系,但是以 4MB 为单位来看,倒是有一定正比关系。

App长度 拷贝App目标区域 Boot Config配置 测量启动时间
CFG2[2:1]-Bus Width CFG1[5]-SDMMC Speed CFG1[0]-Fast Boot
24KB ITCM

396MHz@64bit
2'b01 - 8bit DDR 1'b1 - High 1'b0 - Regular ~39.5ms
240KB ~41.5ms
24KB SDRAM

166MHz@32bit
~41.1ms
240KB ~46.7ms
1MB ~53.1ms
2MB ~63.3ms
4MB ~87.4ms
8MB ~133.3ms
16MB ~225.8ms

2.2 不同速度模式测试

  因为 4MB 在 SDRAM 执行 App 有一定代表性,痞子衡就以这个为基础测试了不同的 Boot Config 配置组合,在 BOOT_CFG1[0] 为 Fast Boot 情况下普遍无法启动(可能需要更多展开配置)。在 BOOT_CFG1[0] 为 Regular Boot 情况下,High Speed 比 Normal Speed 快近一倍,8-Bit DDR 比 8-Bit SDR 也快近一倍。

App长度 拷贝App目标区域 Boot Config配置 测量启动时间
CFG2[2:1]-Bus Width CFG1[5]-SDMMC Speed CFG1[0]-Fast Boot
4MB SDRAM

166MHz@32bit
2'b01 - 8bit SDR 1'b0 - Normal 1'b0 - Regular ~219ms
1'b1 - Fast TBD
1'b1 - High 1'b0 - Regular ~130.6ms
1'b1 - Fast 无法启动,DAP不可连接
2'b11 - 8bit DDR 1'b0 - Normal 1'b0 - Regular 无法启动,DAP可连接
1'b1 - Fast TBD
1'b1 - High 1'b0 - Regular ~87.4ms
1'b1 - Fast 无法启动,DAP不可连接

  至此,恩智浦i.MX RT1170 uSDHC eMMC启动时间痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

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

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

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(12.A)- uSDHC eMMC启动时间(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. #ST表#CF1879F Last Man Standing

    洛谷题面 CF1879F 分析 当 \(x\) 大于最大值时一定可以被约化为等于的情况,考虑枚举 \(x\), 通过枚举倍数的方式可以知道存在若干段区间消耗同一精神状态的次数是相同的,那么区别就是其精 ...

  2. #第一类斯特林数,NTT#CF960G Bandit Blues

    题目 给你三个正整数 \(n\),\(a\),\(b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数, 定义 \(B\) 为一个排列中是后缀最大值的数的个数,求长度为 \(n\) 的排列中满 ...

  3. #斐波那契#洛谷 3424 [POI2005] SUM-Fibonacci Sums

    题目 已知\(x,y\)的斐波那契表示,求\(x+y\)的斐波那契表示 分析 显然得到两条性质: \(f_{i+1}=f_{i-1}+f_i\) \(2f_i=f_{i+1}+f_{i-2}\) 那么 ...

  4. #矩阵树定理,高斯消元,容斥定理#洛谷 4336 [SHOI2016]黑暗前的幻想乡

    题目 分析 这很明显是矩阵树定理,但是每个建筑公司都恰好修建一条边非常难做, 考虑如果一个建筑公司在某个方案中并没有恰好修建一条边, 那么这种方案一定能在不选其它任意一个公司的方案中被减掉, 那就可以 ...

  5. Ascend C 自定义算子 Kernel Launch调用入门

    本文分享自华为云社区<Ascend C 自定义算子 Kernel Launch调用入门>,作者: jackwangcumt. 1 Kernel Launch概述 根据官方说明文档的介绍,A ...

  6. FreeMarker 去除循环末尾的符号

    在使用 FreeMarker 模板引擎来生成文件时,经常会使用到 list 标签用于循环生成. 有时会遇到需要处理末尾符号的情况,比如 Json 文件,循环生成的标签中末尾是不需要 , 的,例如: & ...

  7. 使用 Grafana 统一监控展示-对接 Zabbix

    概述 在某些情况下,Metrics 监控的 2 大顶流: Zabbix: 用于非容器的虚拟机环境 Prometheus: 用于容器的云原生环境 是共存的.但是在这种情况下,统一监控展示就不太方便,本文 ...

  8. 为你推荐一款高效的IO组件——okio

    原文:https://mp.weixin.qq.com/s/XnNhSq8ESoslb2DQEzMbCQ,点击链接查看更多技术内容.   前不久,三方组件库上新了一批JS/eTS组件,其中就包括oki ...

  9. k8s集群安装(kubeadm方式)

    一.准备三台虚拟机,系统CentOS7.9: 192.168.1.221 master1 192.168.1.189  node1 192.168.1.60  node2 二..对三台虚拟机初始化 1 ...

  10. AI数字人克隆人直播源码独立部署的应用!

    AI虚拟数字人正在从概念性试验品逐步落地到实际应用场景,特别是在电商直播领域,AI数字人虚拟主播应用可以说是大放异彩,目前,以真人形象为基础的数字人主播,不受场地.真人.布景.灯光.直播设备的限制,相 ...