You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux中解绑mmcblk1驱动禁用SD卡读卡器的方法咨询

禁用Linux嵌入式系统SD卡接口的方法

嗨,我来帮你搞定这个SD卡禁用的问题!你之前用USB驱动解绑的思路没问题,但SD卡属于MMC子系统,路径和玩法跟USB不太一样,我分临时生效和永久禁用两种方法给你讲清楚~

临时禁用(sysfs驱动解绑)

这种方法重启后会恢复,适合临时测试:

  1. 先卸载SD卡挂载点(如果SD卡已经挂载的话,不然直接解绑可能出问题):

    umount /dev/mmcblk1p*  # 把这里的分区换成你实际用的,比如mmcblk1p1
    
  2. 找到SD卡对应的MMC驱动路径:
    SD卡的块设备/sys/block/mmcblk1只是上层节点,我们得找到它对应的底层驱动目录。执行这条命令看关联:

    ls -l /sys/block/mmcblk1/device
    

    输出会指向类似../../devices/platform/soc/xxxx.mmc/mmc_host/mmc1/mmc1:0001的路径,接着进入这个设备的驱动目录:

    cd /sys/block/mmcblk1/device/driver
    

    这个目录一般是/sys/bus/mmc/drivers/mmc_driver,不同平台可能名字略有差异。

  3. 执行解绑操作:
    先看看当前绑定的设备列表,确认你的SD卡设备名:

    cat bind
    

    找到类似mmc1:0001的条目(就是刚才路径里最后那段),然后执行解绑:

    echo -n "mmc1:0001" > unbind
    

    这时候SD卡接口就临时禁用了,要恢复的话,同样在这个目录下执行echo -n "mmc1:0001" > bind就行。

永久禁用(设备树修改)

如果你需要重启后依然保持禁用,修改设备树是最优解(刚好你是设备树新手,顺便上手这部分):

  1. 定位设备树中的SD卡控制器节点:
    打开你的设备树源码,找类似&mmc1、&sdhci或者&esdhc的节点(不同平台命名不同),节点里一般会有bus-width、cd-gpios这类SD卡相关的属性。

  2. 禁用该节点:
    在这个节点里添加或修改status属性为"disabled"就行,比如:

    &mmc1 {
        status = "disabled";
        // 这里保留原来的其他属性,比如bus-width、vmmc-supply之类的
    };
    

    要是你的SD卡是靠单独的GPIO引脚控制使能的,也可以单独禁用那个GPIO配置,但直接关掉整个MMC控制器节点最彻底。

  3. 重新编译烧录设备树:
    按照你平台的流程,重新编译设备树镜像,烧录到系统里,重启后SD卡接口就永久禁用了。

小提示

如果找不到正确的设备名,用udevadm info -a -n /dev/mmcblk1能看到设备的详细信息,顺着找驱动相关的路径就行。

内容的提问来源于stack exchange,提问作者Jason Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:42:36