??前段时间,在博文 U-Boot 之三 移植过程详解、 STM32F769I-EVAL 开发板适配 中处理了 SD 卡不能正常识别的问题,现在 SD 卡可以正常读取,今天就学习一下 SD 卡相关的命令及初始化流程。目前网上绝大多数都是针对旧版 U-Boot 的说明,我这里使用的是 U-Boot-v2022.10
这个版本。
??与 Linux kernel 一样,U-Boot 也是使用 MMC subsystem 统一管理 eMMC、SD 等存储设备,这些设备统称为 MMC 设备。要启用 MMC 子系统,必须配置如下所示的配置项:
CONFIG_MMC
:全局开关CONFIG_DM_MMC
:MMC 的 DM 驱动,从源码来看,MMC 驱动中还支持非 DM 驱动,但是我没有用过。我这里使用的 U-Boot 中的 MMC 驱动使用了 2014 年 4 月引入的 Driver Model(DM) 这个驱动架构。CONFIG_ARM_PL180_MMC
:我这里的 STM32F769I-EVAL 开发板实际使用的 MMC 驱动 ./drivers/mmc/arm_pl180_mmci.c
,根据自己的开发板来选择的。