全志Uboot fdt修改DTS进行临时调试的方法
最近调试网卡驱动,需要反复调试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)