ARM Linux系统启动流程
Bootloader阶段
1、总体流程:
Bootloader是系统上电后运行的第一段程序,主要完成一些初始化任务。
将Flash中的Linux内核拷贝到RAM中,然后跳转到内核的第一条指令处继续执行。
2、具体步骤:
初始化RAM
初始化串口
检测处理器类型
设置Linux启动参数
调用Linux内核映像
Linux内核阶段
1、总体流程:
查找处理器内核类型和处理器类型
建立页表
跳转到start_kernel()
函数开始内核的初始化工作
调用rest_init()
函数创建系统的init进程
挂载根文件系统
使系统处于闲置(idle)状态并等待用户程序的执行
2、具体流程:
入口位于文件/arch/arm/kernel/head-armv.S
中的stext
段。
通过查找处理器内核类型和处理器类型调用相应的初始化函数。
映射所有的物理内存和IO空间。
创建异常向量表和初始化中断处理函数。
初始化系统核心进程调度器和时钟中断处理机制。
初始化串口控制台。
创建和初始化系统cache。
初始化内存管理。
初始化系统的进程间通信机制(IPC)。
调用rest_init()
函数创建系统的init进程。
3、Init进程:
Init进程进行一系列的硬件初始化。
通过命令行传递过来的参数挂载根文件系统。
init进程会执行用户传递过来的“init=”启动参数执行用户指定的命令。
4、Idle状态:
调用cpu_idle()
函数来使系统处于闲置(idle)状态并等待用户程序的执行。
对于运行Linux的ARM架构的SOC来说,典型的启动流程通常经过以下步骤:
1、上电复位
2、Boot模式选择
3、Boot ROM加载
4、Boot Flash加载
5、Bootloader加载
6、Linux内核加载
7、Linux内核启动
8、用户空间初始化
9、用户空间运行
详细准确地描述了ARM Linux系统的开机启动流程。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/60589.html