1.linux启动简谈
Linux 系统要启动就必须需要一个
bootloader
程序,也就说芯片上电以后先运行一段
bootloader
程序(如I.MX6U用U-Boot)。这段
bootloader
程序会先初始化
DDR
等外设,然后将
Linux
内核从
flash(NAND, NOR FLASH
,
SD
,
MMC
等
)
拷贝到
DDR
中,最后启动
Linux
内核。
2.bootloader简谈
bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux
内核,
bootloader
和
Linux 内核的关系就跟
PC
上的
BIOS
和
Windows
的关系一样,
bootloader
就相当于
BIOS。所以我们要先搞定bootloader
,很庆幸,有很多现成的
bootloader
软件可以使用,比如
U-Boot
、
vivi
、
RedBoot 等等,其中以
U-Boot
使用最为广泛
。
3.U-Boot介绍
U-Boot 的全称是
Universal Boot Loader
,
是一个遵循
GPL
协议的开源软件,是一个裸机代码,可以看作是一个裸机综合例程。现在的 U-Boot
已经支持液晶屏、网络、
USB
等高级功能。uboot
官网为
http://www.denx.de/wiki/U-Boot/.
为便于介绍,将U-Boot写为uboot。
uboot 官方的
uboot 源码是给半导体厂商准备的,半导体厂商会下载
uboot
官方的
uboot 源码,然后将自家相应的芯片移植进去。也就是说半导体厂商会自己维护一个版本的
uboot
,这个版本的
uboot
相当于是他们定制的。我们编译好的uboot.bin是二级制文件。
tips:关于linux启动更详细且便于理解的总结可看:
谈谈Linux系统启动流程 - Aspirant-GQ - 博客园