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


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦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 WidthCFG1[5]-SDMMC SpeedCFG1[0]-Fast Boot
24KBITCM
396MHz@64bit
2'b01 - 8bit DDR1'b1 - High1'b0 - Regular~39.5ms
240KB~41.5ms
24KBSDRAM
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 WidthCFG1[5]-SDMMC SpeedCFG1[0]-Fast Boot
4MBSDRAM
166MHz@32bit
2'b01 - 8bit SDR1'b0 - Normal1'b0 - Regular~219ms
1'b1 - FastTBD
1'b1 - High1'b0 - Regular~130.6ms
1'b1 - Fast无法启动,DAP不可连接
2'b11 - 8bit DDR1'b0 - Normal1'b0 - Regular无法启动,DAP可连接
1'b1 - FastTBD
1'b1 - High1'b0 - Regular~87.4ms
1'b1 - Fast无法启动,DAP不可连接

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

欢迎订阅

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

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痞子衡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值