如何在Google Coral SOM的Mendel Linux中启用ECSPI2(/dev/spidev1.0)
问题排查与修复方案
针对你在Google Coral SOM的Mendel Linux中启用ECSPI2后未出现/dev/spidev1.0的问题,以下是具体排查点和修复步骤:
1. 设备树spidev兼容属性错误
你当前配置的compatible = "rohm,dh2228fv"是特定传感器的兼容值,内核的spidev驱动不会匹配该值。需将其修改为spidev标准兼容属性:
spidev@0 { #address-cells = <1>; #size-cells = <1>; compatible = "linux,spidev"; // 替换原兼容值 spi-max-frequency = <20000000>; reg = <0>; status = "okay"; };
2. 缺失ECSPI2片选引脚的PIN配置
你定义了pinctrl_ecspi2_cs但未在iomuxc节点中添加对应引脚的复用配置。你的cs-gpios使用的是GPIO5_IO13,需补充如下配置:
&iomuxc { imx8mq-phanbell { // 保留原有配置... pinctrl_ecspi2_cs: ecspi2_cs_grp { fsl,pins = < MX8MQ_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x82 >; }; pinctrl_ecspi2: ecspi2grp { fsl,pins = < MX8MQ_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82 MX8MQ_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82 MX8MQ_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82 >; }; }; };
3. 内核配置验证
确保编译内核时启用了必要的SPI驱动:
- 启用spidev:
CONFIG_SPI_SPIDEV=y(或=m,若编译为模块) - 启用FSL ECSPI驱动:
CONFIG_SPI_FSL_ECSPI=y(或=m) - 确认ECSPI2未被内核配置禁用
4. 编译与刷入验证
- 重新编译设备树和内核,确保修改后的
fsl-imx8mq-phanbell.dts被编译为dtb文件 - 刷入固件后,检查
/boot/fsl-imx8mq-phanbell.dtb的修改时间是否与编译时间一致,确认刷入的是修改后的版本
5. 系统日志与状态检查
刷入后执行以下命令排查:
- 查看ECSPI2初始化日志:
dmesg | grep -i ecspi,确认输出中存在ecspi2相关的初始化成功信息 - 查看SPI主设备节点:
ls /sys/class/spi_master/,正常应出现spi1节点(ECSPI2对应SPI编号1,ECSPI1对应SPI0) - 查看spidev设备:
ls /dev/spidev*,正常应出现/dev/spidev1.0
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

