STM32MP157CAA SPI6测试:/dev无SPI节点的排查求助
STM32MP157 SPI6 spidev节点不生成问题排查
1. 修正设备树compatible属性
STM32MP157的SPI控制器节点兼容属性应为"st,stm32mp15-spi",而非你当前使用的"st,stm32h7-spi"。错误的兼容属性会导致驱动匹配异常,内核日志显示的spi1.0注册大概率是误匹配到了SPI1控制器,而非目标SPI6。
修改设备树spi6节点的示例如下:
&spi6 { pinctrl-names = "default"; pinctrl-0 = <&spi6_pins_a>; status = "okay"; spidev@0 { compatible = "linux,spidev"; reg = <0>; spi-max-frequency = <1000000>; }; };
2. 验证SPI6驱动匹配状态
重新编译设备树并烧录后,通过内核日志确认SPI6驱动是否正确绑定:
dmesg | grep -i spi6
正常输出应包含spi spi6: stm32mp15-spi probed这类信息,而非之前的spi1.0相关内容。
3. 检查spidev模块与节点
- 确认spidev模块已加载:
lsmod | grep spidev
若未加载,手动执行modprobe spidev加载模块。
- 查看/dev目录下的SPI节点:
ls /dev/spidev*
正常情况下应出现/dev/spidev6.0。
4. 排查设备树其他配置问题
- 确保spi6节点的
status属性设置为"okay",且pinctrl-0指向正确的引脚配置组(如spi6_pins_a)。 - 检查spidev子节点的
reg属性对应正确的片选(CS0对应<0>,若硬件用其他片选需调整数值)。 - 确认内核配置
CONFIG_SPI_SPIDEV已开启:执行grep CONFIG_SPI_SPIDEV .config,结果应为=y(内置)或=m(模块)。
5. 验证SPI控制器硬件状态
若以上步骤均无问题,通过sysfs查看SPI6控制器状态:
cat /sys/class/spi_master/spi6/device/uevent
确认设备绑定状态正常,若仍无节点,可能需要联系硬件团队排查硬件连接问题。
内容的提问来源于stack exchange,提问作者thecdoctor
相关产品推荐
相关产品推荐

