/**********************Uboot启动流程(分为两部分)**********************/
第一部分(放在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)执行用户空间的第一个程序