前言
为方便调试某些设备树中配置的timing而不需要重新烧录固件,故做此记录
uboot的fdt命令
移植参考说明简略参考:
https://blog.csdn.net/u013165704/article/details/80374702
fdt help
t7_an400_lpddr4x# fdt
fdt - flattened device tree utility commands
Usage:
fdt addr [-c] <addr> [<length>] - Set the [control] fdt location to <addr>
fdt boardsetup - Do board-specific set up
fdt move <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active
fdt resize [<extrasize>] - Resize fdt to size + padding to 4k addr + some optional <extrasize> if needed
fdt print <path> [<prop>] - Recursive print starting at <path>
fdt list <path> [<prop>] - Print one level starting at <path>
fdt get value <var> <path> <prop> - Get <property> and store in <var>
fdt get name <var> <path> <index> - Get name of node <index> and store in <var>
fdt get addr <var> <path> <prop> - Get start address of <property> and store in <var>
fdt get size <var> <path> [<prop>] - Get size of [<property>] or num nodes and store in <var>
fdt set <path> <prop> [<val>] - Set <property> [to <val>]
fdt mknode <path> <node> - Create a new node after <path>
fdt rm <path> [<prop>] - Delete the node or <property>
fdt header [get <var> <member>] - Display header info
get - get header member <member> and store it in <var>
fdt bootcpu <id> - Set boot cpuid
fdt memory <addr> <size> - Add/Update memory node
fdt rsvmem print - Show current mem reserves
fdt rsvmem add <addr> <size> - Add a mem reserve
fdt rsvmem delete <index> - Delete a mem reserves
fdt chosen [<start> <end>] - Add/update the /chosen branch in the tree
<start>/<end> - initrd start/end addr
NOTE: Dereference aliases by omitting the leading '/', e.g. fdt print ethernet0.
查看某节点命令
直接使用fdt list xx,注意这里的设备节点的路径要带上绝对路径 即 /xx/xx
这样
t7_an400_lpddr4x# fdt list /lcd1/vbyone_1
vbyone_1 {
model_name = "public_1region";
interface = "vbyone";
basic_setting = <0x00000f00 0x00000870 0x00001130 0x000008ca 0x0000000a 0x00000010 0x00000009>;
range_setting = <0x00001090 0x000012c0 0x00000898 0x00000ae6 0x20e6da00 0x25ab8e00>;
lcd_timing = <0x00000021 0x000001dd 0x00000000 0x00000006 0x00000041 0x00000000>;
clk_attr = <0x00000002 0x00000000 0x00000001 0x00000000>;
vbyone_attr = <0x00000008 0x00000001 0x00000004 0x00000004>;
vbyone_intr_enable = <0x00000001 0x00000003>;
phy_attr = <0x00000007 0x00000001>;
hw_filter = <0x00000000 0x00000000>;
power_on_step = <0x00000000 0x00000000 0x00000001 0x000000c8 0x00000002 0x00000000 0x00000000 0x0000000a 0x000000ff 0x00000000 0x00000000 0x00000000>;
power_off_step = <0x00000002 0x00000000 0x00000000 0x0000000a 0x00000000 0x00000000 0x00000000 0x000001f4 0x000000ff 0x00000000 0x00000000 0x00000000>;
backlight_index = <0x000000ff>;
};
修改某节点命令
使用 fdt set path prop
,注意这里的设备节点的路径也要带上绝对路径
- 修改整数数组
*需要注意的是不能增大原数组大小,只能减少或者修改某数组成员
如修改power_on_step 某type的delay值
将原来的0x000000c8 修改成0x000001f4
fdt set /lcd1/vbyone_1 power_on_step <0x00000000 0x00000000 0x00000001 0x000001f4 0x00000002 0x00000000 0x00000000 0x0000000a 0x000000ff 0x00000000 0x00000000 0x00000000>
修改后再获取确认
t7_an400_lpddr4x# fdt list /lcd1/vbyone_1
vbyone_1 {
model_name = "public_1region";
interface = "vbyone";
basic_setting = <0x00000f00 0x00000870 0x00001130 0x000008ca 0x0000000a 0x00000010 0x00000009>;
range_setting = <0x00001090 0x000012c0 0x00000898 0x00000ae6 0x20e6da00 0x25ab8e00>;
lcd_timing = <0x00000021 0x000001dd 0x00000000 0x00000006 0x00000041 0x00000000>;
clk_attr = <0x00000002 0x00000000 0x00000001 0x00000000>;
vbyone_attr = <0x00000008 0x00000001 0x00000004 0x00000004>;
vbyone_intr_enable = <0x00000001 0x00000003>;
phy_attr = <0x00000007 0x00000001>;
hw_filter = <0x00000000 0x00000000>;
power_on_step = <0x00000000 0x00000000 0x00000001 0x000001f4 0x00000002 0x00000000 0x00000000 0x0000000a 0x000000ff 0x00000000 0x00000000 0x00000000>;
power_off_step = <0x00000002 0x00000000 0x00000000 0x0000000a 0x00000000 0x00000000 0x00000000 0x000001f4 0x000000ff 0x00000000 0x00000000 0x00000000>;
backlight_index = <0x000000ff>;
};
修改字符串
如关闭某设备节点
t7_an400_lpddr4x# fdt set /backlight1/ status "disable"
t7_an400_lpddr4x# fdt list /backlight1
backlight1 {
compatible = "amlogic, backlight-t7";
status = "disable";
}
平台版本若支持保存修改,可使用 fdt save
保存修改的设备树,这样的话即使重启之前的修改也保留着