Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在arm板的android linux内核中,如何控制DT_MACHINE_START_Android_Linux Kernel_Arm_Boot - Fatal编程技术网

在arm板的android linux内核中,如何控制DT_MACHINE_START

在arm板的android linux内核中,如何控制DT_MACHINE_START,android,linux-kernel,arm,boot,Android,Linux Kernel,Arm,Boot,高通芯片组8974的一个板文件中有一个DT_MACHINE_START宏。 我的问题是,该控件如何到达这台机器的START as“.init_MACHINE”正在被调用。Linux内核使用section magic和链接器脚本创建一个数组,引导加载程序必须将密钥MSM8974_DT传递给Linux。LinuxInit代码查找机器结构,并在初始化期间的适当时间调用这些函数指针。有关呼叫位置,请参阅 请参见类似内容:。当前文件具有定义,并具有链接器部分.init.arch.info 如何将控制权交给

高通芯片组8974的一个板文件中有一个DT_MACHINE_START宏。
我的问题是,该控件如何到达这台机器的START as“.init_MACHINE”正在被调用。

Linux内核使用section magic和链接器脚本创建一个数组,引导加载程序必须将密钥MSM8974_DT传递给Linux。LinuxInit代码查找机器结构,并在初始化期间的适当时间调用这些函数指针。有关呼叫位置,请参阅

请参见类似内容:。当前文件具有定义,并具有链接器部分
.init.arch.info

如何将控制权交给机器启动的“.init_机器”

此调用来自当前Linux源代码中的

`DT_MACHINE_START(MSM8974_DT, "Qualcomm MSM 8974 (Flattened Device Tree)")
 .map_io = msm8974_map_io,
 .init_irq = msm_dt_init_irq,
 .init_machine = msm8974_init,
 .handle_irq = gic_handle_irq,
 .timer = &msm_dt_timer,
 .dt_compat = msm8974_dt_match,
 .reserve = msm_8974_reserve,
 .init_very_early = msm8974_init_very_early,
 .restart = msm_restart,
 .smp = &msm8974_smp_ops,
MACHINE_END`
结构指针
machine_desc
在前面的init代码中匹配,如上所述

static int __init customize_machine(void)
{
    /*
     * customizes platform devices, or adds new ones
     * On DT based machines, we fall back to populating the
     * machine from the device tree, if no callback is provided,
     * otherwise we would always need an init_machine callback.
     */
    of_iommu_init();
    if (machine_desc->init_machine)
        machine_desc->init_machine(); /** HERE - calls your routine **/
#ifdef CONFIG_OF
    else
        of_platform_populate(NULL, of_default_bus_match_table,
                    NULL, NULL);
#endif
    return 0;
}