赞
踩
BootLoader 是系统上电时运行的一段初始化代码,用于引导完整的操作系统,然后将控制器交给操作系统。 这段 BootLoader 程序会先初始化 DDR 等外设,然后将 Linux 内核从 Flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。
另外,某些 BootLoader 可能含有一些高级特性,如校验操作系统镜像,从多个操作系统镜像中选择引导合适的操作系统, 或者添加网络功能,让系统自主从网上寻找合适的镜像并且进行引导等等。
U-Boot(Universal Boot Loader) 是一个主要用于嵌入式系统的引导加载程序。可以支持多种不同的计算机系统结构,包括 PPC、ARM、AVR32、MIPS、x86、68k、Nios 与 MicroBlaze。这也是一套在 GNU 通用公共许可证之下发布的自由软件。U-Boot 的主要作用是用来启动操作系统内核,它分为两个阶段,即 boot + loader, boot 阶段启动系统,初始化硬件设备,建立内存空间映射图,将系统的软硬件带到一个合适的状态, loader 阶段将操作系统内核文件加载至内存,之后跳转到内核所在地址运行。U-Boot 发展至今,已经可以实现非常多的功能,比如支持液晶屏、网络、USB 等高级功能。
sudo apt install make git gcc-arm-none-eabi gcc bison flex libssl-dev dpkg-dev lzop libncurses5-dev
【不推荐,仅列出】
【新手推荐使用以下开发板商提供uboot】
目录/文件 | 说明 |
---|---|
api | 通用的API函数相关目录 |
arch | 与芯片架构相关目录 |
board | 板级相关信息目录 |
cmd | uboot命令相关目录 |
common | 通用代码目录 |
configs | boot配置文件目录 |
disk | 磁盘相关内容目录 |
doc | 说明文档 |
drivers | 驱动代码相关目录 |
dtoverlay | |
dts | 设备树相关目录 |
env | uboot环境相关 |
examples | 示例代码目录 |
fs | 文件系统相关目录 |
include | 头文件相关目录 |
lib | lib库文件目录 |
Licenses | 许可证相关目录 |
net | 网络相关代码目录 |
post | 上电自检相关目录 |
scripts | 相关脚本目录 |
test | 测试代码目录 |
tools | uboot构建工具相关目录 |
Kconfig | 图形配置界面相关文件 |
Makefile | Makefile文件 |
获取野火提供U-Boot源码
git clone -b ebf_v2020_10_imx https://gitee.com/Embedfire/ebf_linux_uboot
进入工程目录
cd ebf_linux_uboot
清除工程
清除上次生成的编译环境,避免之前的环境干扰影响编译结果
sudo make distclean
配置工程
加载板级配置文件,具体的板级配置文件在uboot根目录下的configs目录下。
野火提供的imx6ull uboot分为nand版本和emmc版本,以编译emmc版本为例
sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- mx6ull_fire_mmc_defconfig
若想编译nand版本的uboot需要将 mx6ull_fire_mmc_defconfig
改为 mx6ull_fire_nand_defconfig
编译工程
sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi-
生成文件
编译完成以后多了一些文件:
就是我们最终要烧写到开发板中的 uboot 镜像文件
。是 u-boot.bin 添加了3KB头部信息和尾部信息(结尾添加了1298字节的00,00实际没什么作用)组成的镜像。新建编译脚本文件
每次编译 uboot 都要输入一长串命令,为了简单起见,我们可以新建一个 shell 脚本文件,将这些命令写到 shell 脚本文件里面,然后每次只需要执行 shell 脚本即可完成编译工作。
新建名为 imx6ull_uboot.sh 的 shell 脚本文件:
vim imx6ull_uboot.sh
然后在里面输入如下内容:
建议还是使用 arm-none-eabi- 编译器编译uboot,编译出来的镜像文件会小点,否则编译的uboot可能无法运行。
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_fire_nand_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
增加可执行权限
chmod 777 imx6ull_uboot.sh.sh
执行脚本文件
./imx6ull_uboot.sh.sh
• 由 Leung 写于 2022 年 9 月 3 日
• 参考:3. Uboot的编译
IMX6ULL - 移植uboot-imx_v2020.04_5.4.70_2.3.0
【Linux系统移植】U-Boot编译、烧写与使用
【Linux系统移植】NXP 官方开发板 uboot 编译与烧录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。