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>;
};

Re: pico 动态加载设备树

Posted: 2026-03-31 5:56
by Neil
我这边使用的是rk3506,同样没有/proc/device-tree/__symbols__,为什么不能用标签呢,能否在sdk编译dtb时添加-@参数以支持symbols

Re: pico 动态加载设备树

Posted: 2026-03-31 12:40
by Crocodile
RV1106 最新的SDK 已经加上了CONFIG_DTC_SYMBOLS 可以使用标签了,但是 RK3506 还不行,Rockchip 给 RK3506的默认配置会使能预初始化,可以实现在最短的时间内点亮屏幕并运行GUI应用,其他初始化在之后才进行,这样的配置导致如果使能了CONFIG_DTC_SYMBOLS和设备树相关的驱动都会提示延时probe,但是驱动后续并没有加载上。
该问题我们已经记录在待处理列表中。不过由于目前尚未影响到大多数用户,短期内暂不会提高其优先级进行处理。如果您后续找到了合适的配置方式或解决方案,欢迎随时与我们分享,非常感谢您的支持与反馈。