设备树的学习与理解

参考书籍: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))

 

 

设备树文件

具体在使用中:

与设备树文件匹配成功后会调用

卸载驱动

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值