资讯动态

BSP调试#07:Micro SD卡(全志T527)

发布时间:2026/10/8 22:55:50 来源:尧图企业网站定制
BSP调试#07Micro SD卡全志T527调试前1了解 MMC 子系统Linux 提供了 MMC 子系统来实现对各种 SD/MMC/EMMC/SDIO 设备访问 MMC 子系统由上到下可以分为 用户空间、块设备层 、MMC 核心层 (Core)、主机控制器驱动层 (Host)、硬件层系统框图如下2搞清楚 TF 、Micro SD 以及 SD 卡所以是 TF 卡 Micro SD卡 只不过现在很多工程师口头习惯叫 “TF卡” 而 SD 卡是 更大的、标准尺寸的卡。Micro SD 卡可以通过卡套转换成 SD 卡。Micro SD 卡Micro SD 卡即TF卡与 SD 卡Micro SD 卡即TF卡转 SD 卡3了解 Micro SD 的两种模式Micro SD 卡支持两种可选的通信协议 SDIO 和 SPI总线模式 主机系统可以选择任一模式。SDIO 模式 支持 4 位高性能数据传输。Micro SD 卡工作在SDIO 模式下一共有6根信号线CLK、CMD、DAT0-DAT3总线宽度4bitSDIO 总线允许动态配置从1到4双向数据信号的数据线数量。为了兼容性刚接通电源时默认情况下 Micro SD 卡仅使用 DAT0 进行基本的通信比如确认 Micro SD ID、设置工作模式。完成初始化后主控可以修改总线宽度与 Micro SD 卡进行数据传输。SPI 模式 为 SPI 信道实现轻松、通用的接口。SPI 模式下一共有 4 根信号线CLK、CS、 MOSI、MISO 串行通信半双工。 SPI模式牺牲了性能换来了极大的通用性和简易性。它是一种“兼容模式”或“备选方案”。如何选择模式 主机系统可以根据自身的能力是否有SDIO控制器和性能需求来选择使用哪一种模式与之通信。 上电后主机通过拉低 CS 信号线来强制Micro SD卡进入SPI模式否则Micro SD卡就默认进入SDIO模式。4Micro SD 卡引脚定义硬件设计SOC 内部集成了 SDMMC 控制器因此在设计 Micro SD卡电路时只需将这些接口相应地接到Micro SD卡座即可。需要注意的是不同主控对电路设计可能有所差异具体自行阅读 soc 原厂数据手册。但其接口定义以及通信原理都是一致的、标准的。电路原理DET 主控通过检测 SDC0_DET 引脚的电平状态来判断是否有 Micro SD 卡插入。Micro SD 卡插入时SDC0_DET 引脚的弹片与外壳接触使 C/D 引脚接地为低电平系统判断有 Micro SD 卡插入反之为 Micro SD 卡拔出。DAT[3:0]: 4bit数据总线数据可以与主机进行双向通信CLK: 时钟信号每个时钟周期传输一条指令或数据频率可在0~25MHz之间任意频点工作CMD: 指令信号或指令应答信号命令是由控制器发给Micro SD 卡可以是从控制器到单个Micro SD 卡也可以是到 Micro SD 总线上所有卡响应是存储卡对控制器发送的命令应答应答可以来自单卡或所有卡。软件配置sys_config.fex参数解析 card_ctrl0选择卡量产相关的控制器 card_high_speed速度模式 0 为低速1 为高速 card_line代表卡总线宽度分别有 1,4,8 sdc_d1sdc data1 的 GPIO 配置 sdc_d0sdc data0 的 GPIO 配置 sdc_clksdc clk 的 GPIO 配置 sdc_cmdsdc cmd 的 GPIO 配置 sdc_d3sdc data3 的 GPIO 配置 sdc_d2sdc data2 的 GPIO 配置dts参数解析 bus-width线宽 cd-gpios卡检测的 GPIO 配置 cd-used-24M使用 24M 时钟检测插拔卡中断 non-removable不可移除 broken-cdsd 卡检测方式轮询 cd-inverted卡检测的高电平有效还是低电平有效 data3-detectdata3 线检测卡 cap-sd-highspeedSD 卡的 High speed sd-uhs-sdr50SD 卡的 uhs-sdr50 sd-uhs-ddr50SD 卡的 uhs-ddr50 sd-uhs-sdr104SD 卡的 uhs-sdr104 no-sdio无 sdio no-mmc无 mmc sunxi-power-save-mode发送数据或者命令才有时钟输出 sunxi-dis-signal-vol-sw关闭电压切换 max-frequency最大频率 ctl-spec-caps控制 spec 能力 vmmc-supply供电电压、工作电压需要根据实际 pmu 供电方案修改 vqmmc33sw-supply3.3V 的 IO 电压需要根据实际 pmu 供电方案修改 vdmmc33sw-supply3.3V 的卡检测电压需要根据实际 pmu 供电方案修改 vqmmc18sw-supply1.8V 的 IO 电压需要根据实际 pmu 供电方案修改 vdmmc18sw-supply1.8V 的卡检测电压需要根据实际 pmu 供电方案修改内核配置进入 menuconfig 后选中 “Allwinner SD/MMC Host Controller Support” 即可使能全志平台 MMC 驱动。调试过程拔插Micro SD 卡可查看 log 判断读卡初始化是否正常并通过 fdisk -l 或 df -h 确认卡是否识别成功。如果以上都正常直接进行性能测试。如无法识别Micro SD卡先排查硬件。因为驱动都是芯片原厂经过验证的出现问题的概率极低。功能验证写入测试dd if/dev/zero of/run/media/mmcblk1p1/test bs1M count500 convfsync读取测试dd if/run/media/mmcblk1p1/test of/dev/null bs1M调试总结SoC 的 MMC 接口其实是个标准件。SoC 原厂提供好驱动、电路设计等用户直接套用以及配置下引脚接口对于下游的BSP工程师来说没多少可操作空间有问题就排查硬件。调试思路 参考公版提供的原理图进行设计硬件重点确认供电以及连接情况设计完进行软件配置软件调试重点看SDC0_DET 引脚拔插 Micro SD 卡根据 log 进行问题分析定位。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑