PC 机的启动过程:
(1) 部署:典型的 PC 机的 BIOS 程序部署在 PC 机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU 在掉电时不工作。 (2) 启动过程:PC 上电后先执行 BIOS 程序(实际上 PC 的 BIOS 就是 NorFlash),BIOS 程序负责初始化 DDR 内存,负责初始化硬盘,然后从硬盘上将 OS 镜像读取到 DDR 中,然后跳转到 DDR 中去执行 OS 直到启动(OS 启动后 BIOS 就无用了)。
嵌入式 linux 系统启动过程: (1) 典型嵌入式系统的部署:uboot 程序部署在 Flash(能作为启动设备的 Flash)上、OS 部署在 FLash(嵌入式系统中用 Flash 代替了硬盘)上、内存在掉电时无作用,CPU 在掉电时不工作。 (2) **启动过程:**嵌入式系统上电后先执行 uboot、然后 uboot 负责初始化 DDR,初始化 Flash,然后将 OS 从 Flash 中读取到 DDR 中,然后启动 OS(OS 启动后 uboot 就无用了) 总结:嵌入式系统和 PC 机的启动过程几乎没有两样,只是 BIOS 成了 uboot,硬盘成了 Flash。
android 系统启动过程: (1) Android 系统的启动和 Linux 系统(前面讲的典型的嵌入式系统启动)几乎一样。几乎一样意思就是前面完全一样,只是在内核启动后加载根文件系统后不同了。 (2) 可以认为启动分为 2 个阶段:第一个阶段是 uboot 到 OS 启动;第二个阶段是 OS 启动后到 rootfs 加载到命令行执行;现在我们主要研究第一个阶段,android 的启动和 linux 的差别在第二阶段。