MMC
概述
MMC(MultiMediaCard)是一种存储卡标准,涵盖多种产品形态:
- eMMC:嵌入式存储,直接焊接在电路板上,常用于手机、平板等设备,具有集成控制器和闪存。
- SD 卡:可移动存储卡,广泛应用于数码相机、笔记本等,分为标准、mini、micro 等尺寸。
- SDIO:基于 SD 卡接口扩展的设备,不仅用于存储,还能实现无线网卡、蓝牙模块等功能。
关键特性
MTT E300 板级支持 MMC(MultiMediaCard)存储卡标准。
- 支持两路 mmc 控制器
- mmc0 支持 emmc,电压为 1.8V
- mmc1 支持 sd 卡和 sdio 设备,默认电压为 3.3V,可以切换为 1.8V
- 支持 emmc legacy speed、high speed、ddr、hs200、hs400、hs400es 速度模式
- 支持 sd 卡和 sdio legacy speed、high speed、uhs sdr50、sdr104、ddr50 等速度模式
- 支持 amda 传输方式
- 寄存器接口兼容 SDHCI 6.00 标准
- 兼容 SD Specifications - Part 1 Physical Layer Specification 6.10 标准
- 兼容 SD Specifications - Part E1 SDIO Specification 4.10 标准
- 兼容 Embedded Multi-Media Card (eMMC) Electrical Standard 5.1 标准
配置流程
步骤 1:配置 U-Boot 设备树
MTT E300 的设备树文件路径为:arch/arm/dts/。下面以 MTT E300 配置作为板级设备树文件示例。
- 打开
mthreads-m1000-aimodule.dts,找到emmc节点。 mmc-hs400-enhanced-strobe;表示支持 hs400es 速度模式mmc-hs400-1_8v;表示支持 hs400 速度模式mmc-hs200-1_8v;表示支持 hs200 速度模式mmc-ddr-1_8v;表示支持 ddr 速度模式sdhci-caps = <0x0 0x40000>;表示支持 8 线模式。如果使用 4 线或 1 线模式,可以屏蔽掉这一行。- 默认使用 8 线模式。若使用 4 线模式,配置
bus-width = <4>;若使用 1 线模式,配置bus-width = <1>。 - 在同一文件中找到
sd节点:sd;表示 sd 卡或 sdio。- 默认使用 4 线模式,如果想使用 1 线模式,配置
bus-width = <1>;
步骤 2:配置 Linux 设备树
linux 中 MTT E300 的设备树文件路径为:arch/arm64/boot/dts/m1000/。下面以 t021 配置作为板级设备树文件示例。
打开 m1000-t021.dtsi 文件:
-
找到
mmc0节点,mmc0支持emmc。-
no-sdio;表示不支持sdio。 -
no-sd;表示不支持sd卡。 -
bus-width = <8>;表示使用 8 线模式。 如果想使用 4 线模式,配置bus-width = <4>;如果想使用 1 线模式,配置bus-width = <1>; -
cap-mmc-highspeed;表示支持high speed速度模式。 -
mmc-ddr-1_8v;表示支持ddr速度模式。 -
mmc-hs200-1_8v;表示支持hs200速度模式。 -
mmc-hs400-1_8v;表示支持hs400速度模式。 -
mmc-hs400-enhanced-strobe;表示支持hs400es速度模式。
-
-
找到
mmc1节点,mmc1支持sd卡和sdio。sd-uhs-sdr12;表示支持uhs sdr12速度模式。sd-uhs-sdr25;表示支持uhs sdr25速度模式。sd-uhs-sdr50;表示支持uhs sdr50速度模式。sd-uhs-ddr50;表示支持uhs ddr50速度模式。sd-uhs-sdr104;表示支持uhs sdr104速度模式。disable-wp;表示禁止写保护功能。bus-width = <4>;表示支持 4 线模式。 如果想使用 1 线模式,配置bus-width = <1>;sdhci-caps-mask = <0x0 0x0>;表示不禁止sd的多种速度模式。power-gpios用于配置sd卡和sdio的电源使能管脚。vol-switch-gpios用于配置sd卡和sdio的电压切换管脚。
打开 m1000-t021.dts 文件,找到 mmc0 和 mmc1 节点,如下图所示:

以上管脚分别是 mmc0 和 mmc1 所用管脚,保持默认配置即可正常使用。
步骤 3:配置内核
在 Linux 内核的配置菜单中要选中 MTT E300 mmc 的驱动,路径如下:

在 MMC/SD/SDIO card support 菜单中,需要选中以下多个选项:
- HW reset support for eMMC:支持 eMMC 复位。
- MMC block device driver:支持 MMC 驱动模型。
- Secure Digital Host Controller Interface support:支持兼容 SDHCI 标准的 MMC。
- SDHCI support for ACPI enumerated SDHCI controllers:支持使用 ACPI 的 MMC 驱动。
- SDHCI platform and OF driver helper:支持使用设备树的 MMC 驱动。
- SDHCI support for the Cadence SD/SDIO/eMMC controller:支持 MTT E300 的 MMC 驱动。
调试方法说明
MMC 常用调试工具包括 dd,fio 等。
-
dd是 Linux 系统中一个功能强大且低级别的命令行工具,主要用于复制和转换文件数据(尤其是块设备或原始数据)。基本用法:dd if=输入文件 of=输出文件 [