全志Uboot fdt修改DTS进行临时调试的方法

发布时间 2023-04-21 16:49:26作者: 大龄小凡

最近调试网卡驱动,需要反复调试rx-delay和tx-delay参数。

按正常流程反复烧写系统镜像,非常麻烦。于是找了这个用uboot 的fdt 临时修改设备树的方法:

*注:这种修改是一次性的,不可以保存的,只限这次启动的时候生效,断电或者重启就不生效了

1.设备上电过程中串口按住电脑键盘的"s"按键,让设备进入boot:

[03.777]update bootcmd
[03.780]change working_fdt 0x43e75e70 to 0x43e55e70
[03.785][mmc]: no mmc-hs400-1_8v!
[03.788][mmc]: delete mmc-hs200-1_8v from dtb
[03.792][mmc]: get max-frequency ok 50000000 Hz
[03.809]update dts
Hit any key to stop autoboot:  0
=> ssssssssssssssssssssssssssssssssssssssssssssssssssss
Unknown command 'ssssssssssssssssssssssssssssssssssssssssssssssssssss' - try 'help'

2、进入uboot后就可以就输入 fdt list +节点名称 查看设备树的信息。
比如查看整个/soc/的DTS:=> fdt list /soc/

比如查看网卡配置:

=> fdt print /soc/eth@4500000
eth@4500000 {
        compatible = "allwinner,sunxi-gmac";
        reg = <0x00000000 0x04500000 0x00000000 0x00010000 0x00000000 0x03000030 0x00000000 0x00000004>;
        interrupts = <0x00000000 0x0000002e 0x00000004>;
        interrupt-names = "gmacirq";
        clocks = <0x00000002 0x00000050 0x00000002 0x0000004f>;
        clock-names = "gmac", "ephy";
        resets = <0x00000002 0x00000020>;
        device_type = "gmac0";
        pinctrl-0 = <0x0000001c>;
        pinctrl-1 = <0x0000001d>;
        status = "okay";
        pinctrl-names = "default", "sleep";
        phy-mode = "rgmii";
        use_ephy25m = <0x00000001>;
        tx-delay = <0x00000002>;
        rx-delay = <0x00000000>;
        fixed-link {
                speed = <0x000003e8>;
                full-duplex;
        };
};

3、修改fdt set  节点  修改的项目  新值。如:

=> fdt set /soc/eth@4500000 rx-delay <0x0000001f>   修改tx-delay 就是 fdt set /soc/eth@4500000 tx-delay <0x00000007>

 

4、输入boot 进行系统启动。

=> boot

参考资料

【骚操作】启动阶段改设备DTS的方法 | 全志在线开发者论坛 (aw-ol.com)

【FAQ】全志R329如何通过uboot修改设备树属性? | 全志在线开发者论坛 (aw-ol.com)