u-boot中fdt命令的使用

本文介绍了U-Boot中对Flattened Device Tree (FDT)的支持方式及fdt命令的使用方法。通过配置宏CONFIG_OF_LIBFDT,可以启用U-Boot对设备树的支持。此外,还详细展示了fdt命令的各个子命令及其用途,包括设置FDT位置、复制FDT、调整大小、打印节点等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[u-boot: v2012.10]

[Author: Bo Shen <voice.shen@gmail.com>]


依linux community的要求,从linux-3.5后,新提交的code必须对device tree进行支持。下面介绍如何使u-boot支持device tree,以及fdt命令的使用。

1. u-boot对fdt(flattened device tree)的支持。

实现:只要加入

# define CONFIG_OF_LIBFDT               /* Device Tree support */
重新编译u-boot,就可以实现对device tree的支持。

2. u-boot下的fdt命令使用
2.1 首先查看fdt的帮助信息。
------------------------------------------------
U-Boot> fdt
fdt - flattened device tree utility commands

Usage:
fdt addr <addr> [<length>] - Set the fdt location to <addr>
fdt move <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active
fdt resize - Resize fdt to size + padding to 4k addr
fdt print <path> [<prop>] - Recursive print starting at <path>
fdt list <path> [<prop>] - Print one level starting at <path>
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 - Display header info
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 omiting the leading '/', e.g. fdt print ethernet0.
U-Boot>
------------------------------------------------
2.2 使用fdt命令

把device tree blob (dtb)文件下载到内存里

-----------------------------------------

U-Boot> tftpboot 0x71000000 bshen/test-ek.dtb

-----------------------------------------

设置fdt的地址

-----------------------------------------

U-Boot> fdt addr 0x71000000

-----------------------------------------

然后就可以使用其余的命令参数了

-----------------------------------------

U-Boot> fdt header
magic: 0xd00dfeed
totalsize: 0x1887 (6279)
off_dt_struct: 0x38
off_dt_strings: 0x1648
off_mem_rsvmap: 0x28
version: 17
last_comp_version: 16
boot_cpuid_phys: 0x0
size_dt_strings: 0x23f
size_dt_struct: 0x1610
number mem_rsv: 0x0

-----------------------------------------

fdt print 不跟参数时,打印出整颗树

fdt print加path参数,则打path内容,如下(其中/memory是path):

-----------------------------------------

U-Boot> fdt print /memory
memory {
device_type = "memory";
reg = <0x70000000 0x4000000>;
};

-----------------------------------------

在进行全志T507平台的U-Boot开发时,正确地编译和烧写固件,以及配置和使用U-Boot环境变量和命令是项目成功的关键步骤。首先,确保你已经阅读了《全志T507 Android U-Boot开发指南》,这是由成都启划信息科技有限公司发布的,提供了详细的开发指导。 参考资源链接:[全志T507 Android U-Boot开发指南](https://wenku.csdn.net/doc/2p80w6tgbx?spm=1055.2569.3001.10343) 编译和烧写固件的过程涉及到了解如何设置交叉编译环境,并使用适当的方法来编译U-Boot及其相关组件。例如,通过使用make命令配合不同目标(如boot0、fes、sboot)来编译出所需的二进制文件。文档中的“编译方法”部分会指导你完成这一过程,并且还提供了快速编译的技巧,以帮助你节省开发时间。 在配置U-Boot时,defconfig方式提供了一种基础且快速的配置方法,而menuconfig方式则允许你进行更为详细的自定义配置,适合对功能有特殊需求的场景。这些配置信息存储在环境变量中,使用env命令可以查看和修改这些变量,这在调试和优化设备行为时非常有用。 使用U-Boot提供的命令,如sunxi_flashread命令,可以帮助你读取和验证烧写到设备上的固件。而fastboot命令则是Android开发中常用的工具,用于设备的启动加载和调试。熟悉这些命令及其使用方法对于开发过程中快速定位问题和进行系统维护至关重要。 最后,不要忽视了U-Boot提供的其他命令,如fat、md和FDT命令,它们分别用于文件系统操作、内存管理和设备树解析,这些都是日常开发和调试中不可或缺的工具。 总之,系统地阅读《全志T507 Android U-Boot开发指南》,并跟随其指导进行实践操作,将帮助你更深入地理解和掌握U-Boot的编译、烧写、配置和命令使用等开发技能。在掌握了这些基础和进阶知识后,你可以更灵活地应对项目中的各种挑战,实现高效而专业的嵌入式系统开发。 参考资源链接:[全志T507 Android U-Boot开发指南](https://wenku.csdn.net/doc/2p80w6tgbx?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值