嵌入式Linux--U-Boot(一)简介

 Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了,bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核,bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Windows 的关系一样,bootloader 就相当于 BIOS。所以我们要先搞定bootloader,很庆幸,有很多现成的 bootloader 软件可以使用,比如 U-Boot、vivi、RedBoot 等等,其中以 U-Boot 使用最为广泛,为了方便书写,本书会将 U-Boot 写为 uboot。

 uboot 的全称是 Universal Boot Loader,uboot 是一个遵循 GPL 协议的开源软件,uboot 是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、USB 等高级功能。uboot 官网为 http://www.denx.de/wiki/U-Boot/,如下图所示:

在这里插入图片描述
 可以在 uboot 官网下载 uboot 源码,点击图 30.1.1 中左侧 Topics 中的“Source Code”,打开如下图 所示界面:
在这里插入图片描述
进入其 FTP 服务器即可看到 uboot 源码:
FTP服务器

在这里插入图片描述

 上图中就是 uboot 原汁原味的源码文件,目前最新的版本是 2019.04。但是我们一般不会直接用 uboot 官方的 U-Boot 源码的。uboot 官方的 uboot 源码是给半导体厂商准备的,半导体厂商会下载 uboot 官方的 uboot 源码,然后将自家相应的芯片移植进去。也就是说半导体厂商会自己维护一个版本的 uboot,这个版本的 uboot 相当于是他们定制的。既然是定制的,那么肯定对自家的芯片支持会很全,虽然 uboot 官网的源码中一般也会支持他们的芯片,但是绝对是没有半导体厂商自己维护的 uboot 全面。

 NXP 就 维 护 的 2016.03 这 个 版 本 的 uboot , 下 载 地 址 为 :http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tag/?h=imx_v2016.03_4.1.15_2.0.0_ga&id=rel_imx_4.1.15_2.1.0_ga,下载界面如图 30.1.4 所示:

uboot-imx_rel_imx4.1.15_2.1.0_ga.xx(xx 为 zip、tar.gz 或 tar.bz2)就是 NXP 官方维护的 uboot,后面我们学习 uboot 移植的时候就是使用的图 30.1.4 中的 uboot,下载 uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2。我们已经放到了开发板光盘中,路径为:开发板光盘->1、程序源码->4、NXP 官方原版 Uboot 和 Linux->uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2。NXP官方的 uboot 基本支持了 NXP 当前所有可以跑 Linux 的芯片,而且支持各种启动方式,比如 EMMC、NAND、NOR FLASH 等等,这些都是 uboot 官方所不支持的。但是图 30.1.4 中的 uboot 是针对NXP 自家评估板的,如果是我们自己做的板子就需要修改 NXP 官方的 uboot,使其支持我们自己做的板子,正点原子的 I.MX6U 开发板就是自己做的板子,虽然大部分都参考了 NXP 官方的I.MX6ULL EVK 开发板,但是还是有很多不同的地方,所以需要修改 NXP 官方的 uboot,使其适配正点原子的 I.MX6U 开发板。

 所以当我们拿到开发板以后,是有三种 uboot 的,这三种 uboot的区别如表:

种类描述
uboot 官方的 uboot 代码由 uboot 官方维护开发的 uboot 版本,版本更新快,基本包含所有常用的芯片。
半导体厂商的 uboot 代码半导体厂商维护的一个 uboot,专门针对自家的芯片,在对自家芯片支持上要比 uboot 官方的好。
开发板厂商的 uboot 代码开发板厂商在半导体厂商提供的 uboot 基础上加入了对自家开发板的支持。

 那么这三种 uboot 该如何选择呢?首先 uboot 官方的基本是不会用的,因为支持太弱了。最常用的就是半导体厂商或者开发板厂商的 uboot,如果你用的半导体厂商的评估板,那么就使用半导体厂商的 uboot如果你是购买的第三方开发板,比如正点原子的 I.MX6ULL 开发板,那么就使用正点原子提供的 uboot 源码(也是在半导体厂商的 uboot 上修改的)

 当然了,你也可以在购买了第三方开发板以后使用半导体厂商提供的 uboot,只不过有些外设驱动可能不支持,需要自己移植,这个就是我们常说的 uboot 移植

 本节是 uboot 的使用,所以就直接使用正点原子已经移植好的 uboot,这个已经放到了开发板光盘中了,路径为:开发板光盘->1、程序源码->3、正点原子 Uboot 和 Linux 出厂源码->uboot-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2

NXP修改并维护
正点原子修改NXP官方U-Boot
uboot4.1.15_2.1.0.tar.bz2
uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2

注意:

  • NXP官方Uboot:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
  • 正点原子已经修改好的Uboot:uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2
  • 未修改的Uboot(有学习价值):uboot-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2

初次编译U-Boot

https://liefyuan.blog.csdn.net/article/details/111059230

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页