目录
- 1. uboot基本概念
- 1. 1 uboot的编译
- 3. uboot的烧录
- 2. uboot的烧录结果
第一次不进行原理性的探究,也不关注源码内容,只是进行一个直观的了解,对uboot进行初次编译并进烧录到IMX6ULL板卡中
1. uboot基本概念
U-Boot(Universal Boot Loader)是一种广泛使用的引导加载程序,就相当于大型的综合的裸机程序代码,不过这个代码的目的是引导芯片加载操作系统,等操作系统加载完毕后这个uboot程序就会自动关闭,也就是寿终正寝。一般获取它的方式就是从官网获得,或者从对应的而芯片厂商获得对应的uboot,这些芯片厂商会对uboot进行裁剪成适合他们芯片的形式;
- 引导加载:主要负责初始化硬件设备,建立内存空间映射,为操作系统内核准备好运行环境,进而引导操作系统启动。
- 支持多种架构:可以在不同的硬件平台如 ARM、PowerPC 等上运行。
- 可定制性强:能根据具体需求进行配置和修改,添加对特定硬件的支持等。
- 命令行界面:提供了一个简单的命令行操作界面,方便用户进行各种操作和设置。
- 启动选项:可以灵活设置不同的启动方式、参数等。
- 系统初始化:在引导操作系统之前,完成一些必要的硬件初始化工作。
1. 1 uboot的编译
这里拿正点原子的IMX6ULL来讲,对uboot源码进行初次编译,并把生成的bin文件下载进IMX6ULL板卡中,对其编译要用到其源码,这里采用正点原子资料包中的uboot的压缩包:自己创建一个新的文件夹,并把这个压缩包放到新建目录下,对其进行解压缩操作;
并运行命令:
tar -vxjf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2
:tar解压缩
解压完毕如下图:
然后运行下面三条命令对uboot源码进行编译:注意不要打错命令和字母,例如COMPILE打成COMPLIE
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
:这是一条在特定环境下执行的 Make 命令。
ARCH=arm
:指定了目标架构为 ARM。CROSS_COMPILE=arm-linux-gnueabihf-
:表示使用特定的交叉编译工具链前缀,这里是针对 ARM 的arm-linux-gnueabihf-
,用于进行交叉编译。distclean
:是 Makefile 中的一个目标,执行这个目标通常会清理掉所有生成的中间文件、目标文件等,将整个项目恢复到较为干净的初始状态。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf mx6ull_14x14_ddr512_emmc_defconfig
:这是一条在特定环境下执行的 Make 命令。
ARCH=arm
:再次明确目标体系结构为 arm。CROSS_COMPILE=arm-linux-gnueabihf-
:指定交叉编译工具链前缀。mx6ull_14x14_ddr512_emmc_defconfig
:这是一个特定的配置选项,它会根据这个配置文件来对编译过程进行相关设置,比如针对特定的硬件平台(mx6ull)以及其具体的硬件参数(14x14 尺寸、ddr512 内存、emmc 存储等相关特性)进行针对性的编译配置。通过这种方式可以灵活地适应不同的硬件环境和需求。
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j14
:以下是对这条命令的解释:
V=1
:表示显示详细的编译过程信息。ARCH=arm
:指定目标架构是 arm。CROSS_COMPILE=arm-linux-gnueabihf-
:表明使用特定的 arm 交叉编译工具链前缀。-j14
:表示使用 14 个线程来并发执行编译任务,以提高编译速度。
3. uboot的烧录
这里使用USB-OTG进行烧录,因为编译uboot生成的文件本质也是bin文件,因此对其烧录可以采用裸机编程中用到的uu烧录工具,只要在Makefile文件中添加几行命令就行,首先是开发板要使用USB-OTG启动,然后就是把header文件拷贝到工程目录下,然后在makefile最后一行加上如下图的语句,最后就是在命令终端运行make run
的指令,这样就能实现单独的uboot文件的烧录,速度非常的快,几乎一秒下载;相关的烧录工具的安装可以参考这篇文章:链接
2. uboot的烧录结果
·在终端直接运行:make run
命令后,就会实现bin文件的烧录;