最近调试网卡驱动,需要反复调试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 dtsHit any key to stop autoboot: 0=> ssssssssssssssssssssssssssssssssssssssssssssssssssssUnknown command "ssssssssssssssssssssssssssssssssssssssssssssssssssss" - try "help"
2、进入uboot后就可以就输入fdt list +节点名称查看设备树的信息。比如查看整个/soc/的DTS:=> fdt list /soc/
比如查看网卡配置:
=> fdt print /soc/eth@4500000eth@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)
关键词: