版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heyuqian_csdn/article/details/52270634
linux mips内核启动流程
查看根目录Makefile,可知链接脚本为arch/$(SRCARCH)/kernel/vmlinux.lds
打开arch/mips/kernel/vmlinux.lds.S,内核入口点为kernel_entry,kernel_entry位于arch/mips/kernel/head.S
最终跳转到第一个c函数入口start_kernel
最后调用kernel_init (init/main.c)
start_kernel->rest_init->kernel_init
kernel_init_freeable调用do_basic_setup 完成子系统设备的初始化,其中do_initcalls会调用arch_initcall (init.h)等,如下
详细请参考《LINUX内核中的xx_initcall初始化标号》 田海立@CSDN 2011-07-02
以arch/mips/ath79/setup.c为例,arch_initcall中完成了gpio,串口等设备的初始化
kenel_init的最后,启动第一个应用层程序init (首先尝试启动内核参数指定的init程序,如果没有,则尝试其它默认的init程序)