首页 > 系统服务 > 详细

init_machine 在Kernel中被调用的过程

时间:2014-12-30 22:05:57      阅读:498      评论:0      收藏:0      [点我收藏+]

以tiny4412为例:

arch/arm/mach-exynos/mach-tiny4412.c

MACHINE_START(TINY4412, "TINY4412")
    /* Maintainer: FriendlyARM (www.arm9.net) */
    .boot_params    = S5P_PA_SDRAM + 0x100,
    .init_irq    = exynos4_init_irq,
    .map_io        = smdk4x12_map_io,
    .init_machine    = smdk4x12_machine_init,
    .timer        = &exynos4_timer,
    .reserve    = &exynos4_reserve,
MACHINE_END

其中:

#define MACHINE_START(_type,_name)            static const struct machine_desc __mach_desc_##_type     __used                             __attribute__((__section__(".arch.info.init"))) = {        .nr        = MACH_TYPE_##_type,            .name        = _name,

#define MACHINE_END                \
};

 

启动时:

start_kernel  ----- init/main.c

      ---->  setup_arch ---- arch/arm/kernel/setup.c

                      ---->  mdesc = setup_machine_tags(machine_arch_type);   到这里,根据machine_arch_type就找到上面这个结构体了。

                      ---->  machine_desc = mdesc;

                      ---->  paging_init(mdesc)   (arch/arm/mm/mmu.c)

                                      ----> devicemaps_init(mdesc)

                                                        ----> mdesc->map_io()   调用了函数 smdk4x12_map_io
       

 

 

init_machine 在Kernel中被调用的过程

原文:http://www.cnblogs.com/pengdonglin137/p/4194582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!