Yocto环境下Raspberry Pi Sense HAT摇杆驱动无法触发probe()问题排查
Raspberry Pi Sense HAT摇杆驱动probe未触发的排查与解决
1. 修正设备树compatible字符串
驱动代码中定义的兼容字符串为raspberrypi,sense-hat-joystick,你当前的设备树条目存在大小写、空格和连字符错误,需修改为:
sensehat-joystick@46 { compatible = "raspberrypi,sense-hat-joystick"; reg = <0x46>; status = "okay"; };
2. 将设备节点挂载到对应I2C总线
I2C设备节点必须作为目标I2C总线(i2c18或i2c19)的子节点存在,不能独立定义。示例结构如下:
&i2c18 { status = "okay"; clock-frequency = <100000>; sensehat-joystick@46 { compatible = "raspberrypi,sense-hat-joystick"; reg = <0x46>; status = "okay"; }; };
3. 确认Yocto中驱动的正确配置
仅通过make menuconfig修改内核配置可能不会被Yocto构建流程保留,需通过以下方式确保驱动被启用:
- 在
local.conf中添加:CONFIG_RPI_SENSE_HAT_JOYSTICK=y(编译进内核)或CONFIG_RPI_SENSE_HAT_JOYSTICK=m(编译为模块) - 若使用自定义内核recipe,需在对应的
.bbappend文件中添加上述配置 - 构建完成后,检查内核配置文件(如
/boot/config-$(uname -r))确认CONFIG_RPI_SENSE_HAT_JOYSTICK已启用
4. 验证I2C总线与硬件连接
- 确认目标I2C总线(i2c18/i2c19)的设备树节点已设置
status = "okay",且引脚复用配置正确 - 使用
i2cdetect -y 18(或19)命令检测总线,确认0x46地址存在设备 - 检查硬件连接,确保Sense HAT与Raspberry Pi的引脚连接无误
5. 确认设备树已正确部署
Yocto构建时需确保修改后的设备树被包含到镜像中:
- 在machine配置文件或
local.conf中指定自定义设备树文件,例如:KERNEL_DEVICETREE = "your-custom-dtb.dtb" - 重新构建镜像并烧录,避免使用未更新的旧设备树
内容的提问来源于stack exchange,提问作者Prashanth
相关产品推荐
相关产品推荐

