请选择 进入手机版 | 继续访问电脑版
查看: 420|回复: 1

[分享] 一起聊聊i.MX RT1xxx上的神秘力量——SDMMC出厂模式

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3296

    主题

    6541

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31904
    最后登录
    2024-3-28
    发表于 2023-5-30 10:21:49 | 显示全部楼层 |阅读模式
    一起聊聊i.MX RT1xxx上的神秘力量——SDMMC出厂模式


    如果你在i.MX RT1xxx板卡上尝试过从SD/eMMC卡启动,你会发现一个奇怪的现象:通常在BOOT_MODE[1:0]设置为从串行NOR Flash启动,如果在Flash中没有可启动App情况下,芯片会自动转入串行下载模式,但是如果此时SD/eMMC卡槽中插着存有可以正常运行的App程序,此时芯片是可以正常启动的,并且启动是 SD/eMMC里的程序,这是怎么回事?

    今天就跟大家介绍下导致这个现象背后的神秘力量——SDMMC manufacture mode(出厂模式)。

    注:只有i.MX RT四位数的产品支持SDMMC出厂模式。

    回顾i.MX RT的启动设备

    所有i.MX RT系列均没有内部非易失性存储器,需要配置一个外部存储器存放启动代码,这个外部存储器我们也称作启动设备。
    i.MX RT 支持的启动设备类型非常多,并且因为启动设备受板级环境影响可能导致启动代码读取异常,因此i.MX RT上设计了多级启动保障,如下图所示:
    11.png
    芯片上电之后,首先按照BOOT_MODE引脚的配置,执行Primary Boot即第一级启动流程;当第一级流程启动失败后,则进入第二级Recovery Boot启动流程;如果第二级启动仍然失败,则将进入Manufacture Boot启动流程,尝试从SD/eMMC启动。
    以下将具体谈谈这个第三级的,出厂启动模式。

    何为SDMMC出厂模式

    i.MX RT1xxx系列支持的一级启动设备有很多:串行NOR/NAND、并行NOR/NAND、SD/eMMC,当这些一级启动设备中的App未能正常启动时,为了保证系统仍能运行正常,将会自动进入备份启动方案(默认没开启,需要主动运行eFuse 开启),我在之前介绍过一期《从Serial(1-bit SPI) EEPROM/NOR恢复启动》。

    如果这个备份启动方案仍然失败了怎么办?那就需要进入今天的主角,第三级也是最后一级启动方案-SDMMC manufacture方式启动(默认开启,可以启动eFuse关闭。对于RT1050系列,配置在eFuse 0x470[3]-Disable SDMMC Manufacture mode),简单说就是i.MX RT会做最后的努力:尝试从SD/eMMC中启动App。
    需要注意的是这个SDMMC manufacture启动方式和作为《一级启动设备 SD/eMMC 方式》两者区别如下:
    一级启动设备SD/eMMC可以有很多用户配置(由BT_CFG引脚或者eFuse决定),但是SDMMC manufacture启动与用户配置完全无关,其固定从uSDHC1口以1bit bus width,3.3V模式去读取启动 App。

    何时进入SDMMC出厂模式

    在i.MX RT芯片参考手册System Boot章节可以找到如下流程图,图中介绍了两种进 入SDMMC manufacture模式的途径。
    12.png
    第一种途径是在BOOT_MODE[1:0]=2'b10(或者BOOT_MODE[1:0]=2'b00且BT_FUSE_SEL=1'b1)时,主启动设备以及备份启动设备(假设已使能)均失败的情况下自动进入,这种方法属于被动式进入,当然这也是该模式的主要用意。
    第二种途径是在BOOT_MODE[1:0]=2'b00且BT_FUSE_SEL=1'b0时,主动进入 SDMMC manufacture模式,这有点将该模式升级成一级启动设备地位的感觉。

    最后提一下,i.MX RT上的SDMMC manufacture模式特性完全继承自i.MX系列,我们知道在MPU世界里使用SD卡场景非常多,因此使能这个功能很自然,在i.MX RT上如果应用里也有SD卡相关设计,那么不妨也关注下这个特性,可以多一重保障。

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-19 09:37
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    1

    主题

    28

    帖子

    0

    注册会员

    Rank: 2

    积分
    114
    最后登录
    2023-8-2
    发表于 2023-6-5 16:10:40 | 显示全部楼层
    NICE,虽然我没有早点看到这个理论支持,但实践已告知我答案。在插入SD卡启动设备时,即使设置为调试模式,系统上电仍能自动运行SD卡中的程序,此时,如果开启调试,系统初始化中有再次初始化SD卡的代码时,系统会卡死,无法运行,基于此,我推测芯片在指定模式无法合理运行时,会找到适当的启动介质(SD或EMMC)进行启动
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 07:54 , Processed in 0.119300 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表