大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦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. #矩阵乘法#洛谷 5343 【XR-1】分块

    题目 分析 考虑dp,\(dp[i]=\sum dp[i-j]\) 既然\(j\)很小,那么这显然可以用矩阵乘法优化 代码 #include <cstdio> #include <c ...

  2. 【直播回顾】OpenHarmony知识赋能五期第四课——子系统音频解读

    5月12日晚上19点,知识赋能第五期第四节课<OpenHarmony标准系统多媒体子系统之音频解读>,在OpenHarmony开发者成长计划社群内成功举行. 本期课程,由深开鸿资深技术专家 ...

  3. Makefile 常用命令详解

    在软件开发中,Makefile是一种非常常用的自动化工具.Makefile文件包含了一系列规则,用于编译.打包.测试等操作,可以帮助我们自动化这些操作,提高项目的管理和编译效率.本文将介绍Makefi ...

  4. 详讲openGauss 5.0 单点企业版如何部署_Centos7_x86

    本文分享自华为云社区<openGauss 5.0 单点企业版部署_Centos7_x86>,本文作者:董小姐 本文档环境:CentOS7.9 x86_64 4G1C40G python2. ...

  5. Maven 读取pom.xml

    方法一 1.编写配置文件,要读取的内容用@@包裹. spring: application: # @变量名@ 读取pom.xml中的值 version: @project.version@ 2.pom ...

  6. openGauss/MOGDB时间消耗相关视图

    openGauss/MOGDB 时间消耗相关视图 本文出处:https://www.modb.pro/db/388212 数据库版本 openGauss/MOGDB-2.1.1 一.显示当前用户在各个 ...

  7. Harbor仓库高可用

    一.搭建两台Harbor 搭建方法参考:https://www.cnblogs.com/hanfuming/p/15750031.html 二.两台新建相同项目 三.第二台harbor上仓库管理中新建 ...

  8. spring boot 手动value和自动注入配置的区别[五]

    前言 前面两篇中,写道我们注入配置的方式,是通过是注解的方式完成,如下: @ConfigurationProperties(prefix ="person") 这意味着: 我们写一 ...

  9. jenkins 持续集成和交付 —— 邮箱服务器配置(九)

    前言 简介邮箱服务器的配置,让jenkins在构建完成后,能有一个邮箱结果通知到我们,这样就不用每次盯着jenkins 看是否完成了. 正文 1.安装插件 安装下面这个插件. Email Extens ...

  10. WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中

    实现的效果 如果你对此感兴趣,可以接着往下阅读. 实现过程 绘制矩形 比如说我想绘制一个3行4列的表格: private void Button_Click_DrawRect(object sende ...