记录一次错误定位
树莓派开发相机驱动 OF: /soc/i2c0mux/i2c@1/xxx@xx: could not find phandle
问题现象
dmesg -T
显示错误:OF: /soc/i2c0mux/i2c@1/xxx@xx: could not find phandle
该错误说明,在解析设备树的时候,有一个 phandle
找不到对应的节点。
报错代码位置(内核源码)
linux/drivers/of/base.c:1300
排查过程
- 确定 reference 是用
<&label>
形式 - 确定
lable
是存在的 /boot/config.txt
确定添加了dtoverlay=xxx
(xxx是相机芯片的型号)- 若移除
dtoverlay=xxx
,则报错信息消失 - 发现
/boot/config.txt
同时还有dtoverlay=imx219
。这个是我希望用于比较两个驱动,对照着开发驱动所以打开的。 - 移除
dtoverlay=imx219
。仅仅保留我的要开发的芯片dtoverlay=xxx
问题解决!
结论
树莓派 4B 的 overlay 只能同时开启一个相机芯片的驱动,即
/boot/config.txt
添加一条相机芯片的dtoverlay