最近这一段时间,一直有一些问题在耳边萦绕,就是关于linux嵌入式系统启动的问题,也让我下定决心研究以下这个东西,本文章算是我研究过程的学习笔记,现在发布出来.
(一) linux嵌入式系统启动过程简述

从上图我们看出,嵌入式系统linux的启动和windows的启动流程上没有多大的区别,如果你了解windows,那么理解起来也不难.
从另外一个角度来将,看着步骤也不多,实际上每个步骤都比较复杂,我用文字将上面的启动过程稍微详细一点在说.我们的主题仅到2boot loader部分,后面的内容单独做一个主题.
(二) 启动过程描述
我们先来看看网上的描述.
- 硬件上电,CPU boot rom 开始启动,根据cpu熔丝和cpu的gpio的配置,确定从哪个启动介质启动,
- 对应启动地址,从启动介质上搬一部分代码到ram中,运行这段代码,初始化DDR内存,从启动设备搬第二段代码到RAM,开始加载uboot,系统管理权移交到uboot
- 从启动介质上读取,分析环境变量,获得kernel和rootfs的存储位置,以及kernel command line ,检测系统内存和存储.
- 设置网络,加载kernel,并启动,将控制权转移到kernel.
- kernel初始化linux,挂载r