Page 1 of 1

pico 动态加载设备树

Posted: 2024-10-28 15:17
by zg002
我希望
使用脚本
修改i2c的速度
我的dtb文件如下:

Code: Select all

                                                         
/dts-v1/;
/plugin/;

&i2c3{
        status = "okay";
        clock-frequency = <500000>;
        pinctrl-0 = <&i2c3m1_xfer>;
};
我的脚本如下:

Code: Select all

nano i2c3_speed_overlay.dts 
dtc -I dts -O dtb i2c3_speed_overlay.dts -o i2c3_speed_overlay.dtb
cat i2c3_speed_overlay.dtb > /sys/kernel/config/device-tree/overlays/i2c3m1/dtbo
echo 1 >/sys/kernel/config/device-tree/overlays/i2c3m1/status
但是报如下错误:

Code: Select all

[147101.564062] OF: resolver: no symbols in root of device tree.
[147101.564123] OF: resolver: overlay phandle fixup failed: -22
[147101.564160] dtbocfg_overlay_item_create: Failed to apply overlay (ret_val=-22)
原设备树如下:

Code: Select all


/**********I2C**********/
/* I2C3_M1 */
&i2c3 {
	status = "disabled";
	clock-frequency = <100000>;
};
我不知道哪里出现错误,尝试将i2c3更换成i2c3m1也不行

Re: pico 动态加载设备树

Posted: 2024-10-29 2:02
by Alenwowo
zg002 wrote: 2024-10-28 15:17 我希望
使用脚本
修改i2c的速度
我的dtb文件如下:

Code: Select all

                                                         
/dts-v1/;
/plugin/;

&i2c3{
        status = "okay";
        clock-frequency = <500000>;
        pinctrl-0 = <&i2c3m1_xfer>;
};
我的脚本如下:

Code: Select all

nano i2c3_speed_overlay.dts 
dtc -I dts -O dtb i2c3_speed_overlay.dts -o i2c3_speed_overlay.dtb
cat i2c3_speed_overlay.dtb > /sys/kernel/config/device-tree/overlays/i2c3m1/dtbo
echo 1 >/sys/kernel/config/device-tree/overlays/i2c3m1/status
但是报如下错误:

Code: Select all

[147101.564062] OF: resolver: no symbols in root of device tree.
[147101.564123] OF: resolver: overlay phandle fixup failed: -22
[147101.564160] dtbocfg_overlay_item_create: Failed to apply overlay (ret_val=-22)
原设备树如下:

Code: Select all


/**********I2C**********/
/* I2C3_M1 */
&i2c3 {
	status = "disabled";
	clock-frequency = <100000>;
};
我不知道哪里出现错误,尝试将i2c3更换成i2c3m1也不行
您好,您不能直接使用别名,您需要参考/tmp/.fdt_dump.txt中的节点名称。例如i2c3,您应该取成这样:

Code: Select all

/dts-v1/;
/plugin/;
&{/i2c@ff460000}{
        status="okay";
        clock-frequency = <100000>;
};