树莓派3(Yocto Kirkstone分支)MPU6050驱动加载后无IIO设备文件问题
问题分析与解决步骤
这种情况不正常,驱动加载成功但未生成IIO设备节点,说明内核没探测到MPU6050硬件设备,按以下步骤排查:
第一步:确认树莓派I2C总线已启用
树莓派默认I2C总线可能未开启,在Yocto的local.conf中添加:ENABLE_I2C = "1"或者通过设备树参数启用:
RPI_EXTRA_CONFIG += "dtparam=i2c_arm=on"第二步:检查硬件连接与设备存在性
烧录修改后的镜像启动后,扫描I2C总线(树莓派3默认I2C总线编号是1):i2cdetect -y 1查看输出中是否有
0x68或0x69(MPU6050默认I2C地址):- 如果没有,检查硬件接线:SDA接GPIO2、SCL接GPIO3,电源接3.3V(禁止接5V),GND接地。
- 如果有,说明硬件连接正常,继续下一步。
第三步:添加MPU6050设备树节点
内核需要通过设备树识别MPU6050设备,创建设备树overlay文件mpu6050-overlay.dts:/dts-v1/; /plugin/; &i2c1 { #address-cells = <1>; #size-cells = <0>; status = "okay"; mpu6050@68 { compatible = "invensense,mpu6050"; reg = <0x68>; status = "okay"; }; };在你之前创建的Linux bbappend文件中添加:
SRC_URI += "file://mpu6050-overlay.dts;subdir=git/arch/arm/boot/dts/overlays"第四步:补全内核IIO子系统配置
在MPU6050配置片段中添加IIO基础配置:CONFIG_IIO=y CONFIG_IIO_BUFFER=y CONFIG_IIO_TRIGGER=y这些是生成IIO设备节点的必要前提。
第五步:重新构建并验证
执行bitbake core-image-base(或你使用的镜像名称)重新构建,烧录后启动:- 加载驱动(若未自动加载,执行
modprobe inv_mpu6050_i2c) - 查看内核日志:
dmesg | grep mpu6050,若出现invensense,mpu6050 1-0068: mpu6050 Probed类信息,说明设备被成功探测 - 此时再查看
/sys/bus/iio/devices/,就能看到iio:deviceX格式的设备节点
- 加载驱动(若未自动加载,执行
内容的提问来源于stack exchange,提问作者isch
相关产品推荐
相关产品推荐

