什么是U-Boot以及如何下载U-Boot源码
Posted 行稳方能走远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是U-Boot以及如何下载U-Boot源码相关的知识,希望对你有一定的参考价值。
参考:什么是U-Boot以及如何下载U-Boot源码?
作者:一只青木呀
发布时间: 2020-10-20 11:05:59
网址:https://blog.csdn.net/weixin_45309916/article/details/109176510
前言
在上一篇中我们学习了如何进行I.MX6U 的裸机开发,通过21 个裸机例程我们掌握了I.MX6U 的常用外设。通过裸机的学习我们掌握了外设的底层原理,这样在以后进行Linux 驱动开发的时候就只需要将精力放到Linux 驱动框架上,在进行Linux 驱动开发之前肯定需要先将Linux 系统移植到开发板上去。如果学习过UCOS/FreeRTOS 应该知道,UCOS/FreeRTOS 移植就是在官方的SDK 包里面找一个和自己所使用的芯片一样的工程编译一下,然后下载到开发板就可以了。那么Linux 的移植是不是也是这样的,下载Linux 源码,然后找个和我们所使用的芯片一样的工程编译一下就可以了?很明显不是的!Linux 的移植要复杂的多,在移植Linux之前我们需要先移植一个bootloader 代码,这个bootloader 代码用于启动Linux 内核,bootloader有很多,常用的就是U-Boot。
移植好U-Boot 以后再移植Linux 内核,移植完Linux 内核以后Linux 还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。所以U-Boot、Linux kernel 和rootfs 这三者一起构成了一个完整的Linux 系统,一个可以正常使用、功能完善的Linux 系统。在本篇我们就来讲解 U-Boot、Linux Kernel 和rootfs 的移植,与其说是“移植”,倒不如说是“适配”,因为大部分的移植工作都由NXP 完成了,我们这里所谓的“移植”主要是使其能够在I.MX6U-ALPHA 开发板上跑起来。
在移植U-Boot 之前,我们肯定要先使用一下U-Boot,得先体验一下U-Boot 是个什么东西。I.MX6U-ALPHA 开发板光盘资料里面已经提供了一个正点原子团队已经移植好的U-Boot,本章我们就直接编译这个移植好的U-Boot,然后烧写到SD 卡里面启动,启动U-Boot 以后就可以学习使用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简介
类似于我们电脑X86的BIOS
uboot 的全称是 Universal Boot Loader, uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、 USB 等高级功能。 uboot 官网为 http://www.denx.de/wiki/U-Boot/, 如图所示:
uboot源码下载
我们可以在 uboot 官网下载 uboot 源码,点击上图中的“Source Code”,打开如下图所示界面:
选择下载方式(我这里以FTP为例)
选择下载版本
上图就是 uboot 原汁原味的源码文件,目前最新的版本是 2020.10。但是我们一般不会直接用 uboot 官方的 U-Boot 源码的。 uboot 官方的 uboot 源码是给半导体厂商准备的,半导体厂商会下载 uboot 官方的 uboot 源码,然后将自家相应的芯片移植进去。也就是说半导体厂商会自己维护一个版本的 uboot,这个版本的 uboot 相当于是他们定制的。既然是定制的,那么肯定对自家的芯片支持会很全,虽然 uboot 官网的源码中一般也会支持他们的芯片,但是绝对是没有半导体厂商自己维护的 uboot 全面。
SecureCRT启动显示
以上是关于什么是U-Boot以及如何下载U-Boot源码的主要内容,如果未能解决你的问题,请参考以下文章
LinkIt Smart 7688 从源码构建 bootloader (U-Boot)