一. uboot 简介
有很多现成的 bootloader 软件可以使用,比如uboot、vivi、RedBoot 等等,其中以 U-Boot 使用最为广泛。
bootloader 的最主要的工作就是启动 Linux 内核。
二. uboot
Linux 系统要启动就必须需要一个 bootloader 程序(uboot 就是一个 bootloader),也就说芯片上电以后先运行一段
bootloader 程序。这段 bootloader 程序会先初始化 DDR等外设(因为 Linux是运行在 DDR里面),然后将 Linux内核从flash(NAND, NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。
(一般Linux镜像zImage(uImage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI FLASH等等外置存储区域。)
uboot的作用
Uboot的主要目的就是为系统的启动做准备。
Uboot不仅仅能启动Linux,也可以启动其他系统,比如vxworks。
Linux不仅仅能通过uboot启动。
Uboot是个通用的bootloader,他支持多种架构。
Uboot获取
uboot有三种来源:
种类 | 描述 |
uboot
官方的
uboot
代码
|
由
uboot
官方维护开发的
uboot
版本,版本更新快,基本包含所有常用的芯片。
|
半导体厂商的
uboot
代码
|
半导体厂商维护的一个
uboot
,专门针对自家的芯片,在对自家芯片支持上要比
uboot
官方的好。
|
开发板厂商的
uboot
代码
|
开发板厂商在半导体厂商提供的
uboot
基础上加入了对自家开发
板的支持。
|
所以,uboot的获取有三种来源:
1. 首先就是uboot官网。缺点就是支持少,比如某一款具体芯片驱动等不完善。
2. SOC厂商会从uboot官网下载某一个版本的uboot,然后在这个版本的uboot上加入相应的SOC以及驱动。这就是SOC厂商定制版的uboot。NXP官方的I.MX6ULL EVK板子,
3. 做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样。因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。