依linux community的要求,从linux-3.5后,新提交的code必须对devicetree进行支持。下面介绍如何使u-boot支持devicetree,以及fdt命令的使用。
1.u-boot对fdt(flattened device tree)的支持。
实现:只要加入
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命令
把devicetreeblob (dtb)文件下载到内存里。
—————————————–
U-Boot tftpboot 0x71000000 bshen/test-ek.dtb
—————————————–
设置fdt的地址
—————————————–
U-Boot fdt addr 0x71000000
—————————————–
然后就可以使用其余的命令参数了
—————————————–
U-Bootfdt 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-Bootfdt print /memory
memory {
device_type = “memory”;
reg = 0x70000000 0x4000000;
};
—————————————–