• 内核对设备树的处理__对设备树中平台信息的处理(选择machine_desc)


     a. 设备树根节点的compatible属性列出了一系列的字符串,表示它兼容的单板名,从"最兼容"到次之,内核就是根据这一系列字符串找到最合适的machine_desc。

     b. 内核中有多个machine_desc,
       其中有dt_compat成员, 它指向一个字符串数组, 里面表示该machine_desc支持哪些单板

     c. 使用compatile属性的值, 
       跟
       每一个machine_desc.dt_compat
       比较,
       成绩为"吻合的compatile属性值的位置",
       成绩越低越匹配, 对应的machine_desc即被选中
       
       函数调用过程:
    start_kernel // init/main.c
        setup_arch(&command_line);  // arch/arm/kernel/setup.c
            mdesc = setup_machine_fdt(__atags_pointer);  // arch/arm/kernel/devtree.c
                        early_init_dt_verify(phys_to_virt(dt_phys)  // 判断是否有效的dtb, drivers/of/ftd.c
                                        initial_boot_params = params;
                        mdesc = of_flat_dt_match_machine(mdesc_best, arch_get_next_mach);  // 找到最匹配的machine_desc, drivers/of/ftd.c
                                        while ((data = get_next_compat(&compat))) {
                                            score = of_flat_dt_match(dt_root, compat);
                                            if (score > 0 && score < best_score) {
                                                best_data = data;
                                                best_score = score;
                                            }
                                        }
                        
            machine_desc = mdesc;

  • 相关阅读:
    eBPF Talk: 比 kprobe 更好的 trampoline
    高数中值定理总结
    抖音小店无货源蓝海选品分享,月销十万+的玩法,强烈推荐
    V3Det大规模词汇视觉检测数据集与LaRS海上全景障碍物检测数据集
    Soft Actor-Critic(SAC算法)
    记一次 .NET 某自动化采集软件 崩溃分析
    【目标跟踪】|数据集汇总
    C# 多态性
    人大金仓助力国家电网调度中心培养国产数据库专家人才
    2021 XV6 3:页表
  • 原文地址:https://blog.csdn.net/u013171226/article/details/127793064