如果在设备树中直接注释掉 sdmmc1 节点,就会导致系统启动时识别不到真正的 eMMC 设备,进而挂载失败,爆出 /dev/mmcblk1p5 not found 的问题。
正点原子STM32MP135开发板Linux核心板嵌入式ARM双千兆以太网CAN
正确操作是“放空”而不是“删光”
你可以释放引脚,但不能直接注释掉 sdmmc1,而应该让内核知道它还在,只是我们暂时不想用它的引脚。
修改设备树路径:
codes/linux-5.15.24/arch/arm/boot/dts/stm32mp135d-atk.dts
推荐做法:
// pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_clk_pins_a>;
// pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_clk_pins_a>;
// pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
// cd-gpios = <&gpiof 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
pinctrl-0 = <>;
pinctrl-1 = <>;
pinctrl-2 = <>;
cd-gpios = <>;
这样系统不会去初始化那些引脚,但不会误以为整个 SDMMC 控制器都“死了”,eMMC 依旧能被正确识别为 /dev/mmcblk1。