Uboot启动流程和Kernel启动流程

/**********************Uboot启动流程(分为两部分)**********************/

Uboot启动流程和Kernel启动流程_第1张图片

第一部分(放在start.s中,汇编)

1).定义入口(通过链接器脚本来完成)

2)设置异常向量

3)设置CPU速度、时钟频率和中断控制寄存器

4)初始化内存控制器(MMU)

5)将ROM中的程序复制到RAM中

6)初始化堆栈

7)转到RAM中执行,该工作可使用指令 (ldr pc来完成

第二部分(C语言部分)

1)调用一系列的初始化函数

2)初始化Flash设备

3)初始化系统内存

4)如果目标机有NAND设备,初始化

5)如果目标机有显示设备,初始化

6)初始化相关网络设备,填写IP,MAC地址等

7)进入命令循环(即整个boot的工作环境),接收用户从串口输入的命令,然后进行相应的工作


/***********************kernel启动流程(分为两部分)***************************/

arm Linux 内核启动流程(分为三个阶段)

第一阶段:内核的重定向和内核的自解压

第二阶段:执行没有压缩的内核的汇编代码部分

1)获取CPU信息

2)检查平台设备号

3)创建页表

4)打开内存控制器(MMU)

5)清除BSS段

6)执行内核C语言部分入口函数

第三阶段:

1 )  获取Uboot给内核传递的参数

2)控制台初始化

3)执行init命令

4)挂载文件系统

5)执行用户空间的第一个程序



你可能感兴趣的:(Linux底层)