SD NAND无法挂载问题(CD已接地、主控为T113、TF卡可正常使用),结合搜索结果中的典型案例和技术分析,以下是系统化的排查方案:
电源与滤波电路
SD NAND对电源波动敏感(典型需求:3.3V±10%),检查供电电压是否稳定,并在VCC与GND间并联 10μF电解电容+0.1μF陶瓷电容 抑制噪声。
若使用LDO供电,确认电流输出能力≥200mA(突发读写时峰值电流较高)。
写保护(WP)引脚处理
SD NAND的WP引脚必须接地,否则会被识别为写保护状态(表现为只读或无法挂载)。
测量WP引脚对地电阻,应接近0Ω(虚焊或悬空会导致永久写保护)。
信号完整性
CLK、CMD、DAT0等高频信号线长度≤50mm,且需等长走线(偏差<5mm)。
在数据线(DAT0/CMD)上加 10kΩ上拉电阻(部分SD NAND内部已集成,需确认规格书)。
CD引脚的正确连接
CD(Card Detect)接地表示"卡始终存在",但部分主控要求上拉电阻+CD接地触发检测。
验证T113的CD引脚电平:用万用表测量CD引脚电压,插入SD NAND时应为低电平(<0.4V),否则检查线路阻抗。
设备树(DTS)配置
确认T113的SMHC控制器已启用且指向正确引脚(例如SMHC1需在设备树中激活)
&smhc1 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&sdc1_pins>; // 确认引脚组与硬件匹配 bus-width = <1>; // 1线模式,若支持4线可改为<4> };
检查CD信号映射:部分驱动要求cd-gpios
属性显式声明接地(如cd-gpios = <&pio 1 2 GPIO_ACTIVE_LOW>
)
驱动与文件系统兼容性
SD NAND需格式化为FAT32(512MB容量建议用mkfs.fat -F 32 /dev/mmcblkX
格式化)。
在内核中启用以下配置:
CONFIG_MMC=y CONFIG_MMC_SUNXI=y # 全志SD/MMC驱动 CONFIG_MMC_BLOCK_MINORS=8 # 支持多分区
排查只读模式问题
若系统挂载为只读,检查:
内核是否检测到写保护(dmesg | grep "write protect"
)。
驱动是否忽略WP(临时方案:在SDHCI驱动中注释写保护检测代码)
内核日志分析
是否识别到卡(mmc0: new high-speed SD card...
)。
容量识别是否正确(512MB应显示488.0 MiB
)。
错误代码(如-110
表示超时,-6
表示未找到设备)
上电后执行dmesg | grep -i mmc
,关注以下关键信息:
手动触发SD卡初始化
echo 1 > /sys/class/mmc_host/mmc0/rescan # 强制重新检测卡cat /proc/partitions # 查看是否出现mmcblk0
示波器诊断信号
CLK信号:上电后应有400kHz初始化时钟(后升至25MHz)。
CMD信号:复位命令(CMD0)应有0x40前缀脉冲1。
若CLK无输出,检查T113的SMHC时钟配置(需在设备树启用时钟控制器)。
启用SDIO调试模式
在内核启动参数添加mmc.debug=1
,输出详细通信日志(分析CMD8/CMD55等关键命令响应)。
硬件飞线验证
将SD NAND通过杜邦线直连T113的SD0引脚(避开当前PCB可能存在的阻抗问题)
若以上步骤无效,可尝试在uboot阶段执行mmc list
和mmc dev 1
强制初始化,若uboot能识别则问题在Linux驱动。
下一篇:SDNAND手工焊接问题分析
电话:176-6539-0767
Q Q:135-0379-986
邮箱:1350379986@qq.com
地址:深圳市南山区后海大道1021号C座