uboot阶段修改dts使用分析

前言

为方便调试某些设备树中配置的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保存修改的设备树,这样的话即使重启之前的修改也保留着

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值