pico 动态加载设备树

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