参考书籍:devicetree-specification-v0.2
链接:https://pan.baidu.com/s/1R3XFN8cqfnab3CI9Y8xXWg
提取码:g82i
DTB Devicetree blob。devicetree的紧凑二进制表示。
DTC Devicetree compiler。一个开源工具,用于从DTS文件创建DTB文件。
DTS Devicetree syntax。DTC使用的设备树的文本表示。
内核启动时会加载dtb文件,加载流程:
void __init start_kernel(void)
void __init setup_arch(char **cmdline_p) //kernel/arch/arm/kernel/setup.c
void __init unflatten_device_tree(void) //kernel/drivers/of/fdt.c
__unflatten_device_tree(initial_boot_params, &of_allnodes,
early_init_dt_alloc_memory_arch);
unflatten_dt_node(blob, 0, &start, NULL, NULL, 0); //解析设备树
of_alias_scan(early_init_dt_alloc_memory_arch);
/*创建一个设备树,创建struct device_node的树。它还填充节点的“name”和“type”指针,这样就可以使用普
通的设备树遍历函数。
@blob:要展开的blob
@mynodes:调用创建的device_node树
@dt_alloc:提供内存虚拟地址的分配器
*/
__unflatten_device_tree(struct boot_param_header *blob,struct device_node **mynodes,
void * (*dt_alloc)(u64 size, u64 align))
/* of_alias_scan -扫描“aliases”节点的所有属性。该函数扫描“aliases”节点的所有属性,并用这些属性填充全局查找表。它返回找到的alias_prop的数量,或者在错误情况下返回错误代码
* @dt_alloc:一个分配器,它为生成的树提供一个到内存的虚拟地址
*/
void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align))
设备树文件
具体在使用中:
与设备树文件匹配成功后会调用
卸载驱动