03.uboot简介
约 1092 字大约 4 分钟
下载源码
已发布的版本可用作使用以下命名方案的标签:
v<year>.<month>
候选版本名称如下:
v<year>.<month>-rc<number>
使用 GCC 进行构建
sudo apt-get install gcc gcc-aarch64-linux-gnu -y
sudo apt-get install bc bison build-essential coccinelle \
device-tree-compiler dfu-util efitools flex gdisk graphviz imagemagick \
liblz4-tool libgnutls28-dev libguestfs-tools libncurses-dev \
libpython3-dev libsdl2-dev libssl-dev lz4 lzma lzma-alone openssl \
pkg-config python3 python3-asteval python3-coverage python3-filelock \
python3-pkg-resources python3-pycryptodome python3-pyelftools \
python3-pytest python3-pytest-xdist python3-sphinxcontrib.apidoc \
python3-sphinx-rtd-theme python3-subunit python3-testtools \
python3-virtualenv swig uuid-dev -y
sudo apt-get install gcc-arm-linux-gnueabihf
uboot 目录结构
arch 包含与处理器架构相关的代码。arm/、x86/、powerpc/ 等
board 存放不同硬件平台(开发板、系统模块等)的初始化代码
cmd 包含 U-Boot 命令行接口(CLI)的命令实现。
common 包含 U-Boot 的通用代码,例如启动顺序、主循环、环境变量处理等核心功能的实现。
configs 包含不同硬件平台的配置文件(.config) 每个配置文件定义了对应平台的编译选项和启动设置。
doc U-Boot 的文档目录,包含了项目的文档文件、开发指南和其他相关说明文档。
drivers 包含 U-Boot 的设备驱动程序,如串口、网卡、I2C、SPI、USB 等。
dts 存放设备树(Device Tree Source,DTS)文件,这些文件描述了硬件的配置和连接关系 DTS 文件用于配置和初始化硬件设备
env 处理 U-Boot 环境变量的代码,包括环境变量的存储、加载、保存等操作。
fs 文件系统支持代码,U-Boot 支持多种文件系统,如 FAT、EXT、UBIFS 等。
include 头文件目录,包含 U-Boot 项目中的所有公共头文件。
lib 各架构的通用库代码,不同架构有对应的子目录(如 lib_arm/、lib_generic/)
net 网络相关代码,包括网络协议栈、TFTP、DHCP 等实现。支持的网络设备驱动也在此目录中实现
scripts 存放编译过程中使用的脚本和工具,包括 Makefile 脚本、配置脚本等。
tools 包含了一些工具程序,这些工具用于生成 U-Boot 镜像、处理二进制文件、环境变量工具等
Kconfig 配置选项文件,使用 menuconfig 工具来配置 U-Boot 的编译选项。
Makefile U-Boot 的顶层 Makefile,定义了编译规则和流程。
api 包含 U-Boot 提供给外部应用程序或操作系统的 API 接口。
boot 包含与系统引导(booting)相关的代码。 管理引导加载过程中的不同阶段,包括加载内核、初始化硬件、以及启动操作系统等。
disk 处理与磁盘(disk)相关的操作,包括分区管理、磁盘格式化、以及文件系统操作等。提供对物理磁盘和分区表的支持。
test
examples
Kbuild
MAINTAINERS
post
config.mk
U-BOOT 编译
## 清除已经编译文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
## 生成配置文件 orangepi_pc_defconfig配置文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_pc_defconfig
## 编译
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
## 编译后的文件
u-boot*
u-boot.bin
.u-boot.bin.cmd
u-boot.cfg
.u-boot.cmd
u-boot.dtb
u-boot-dtb.bin
.u-boot-dtb.bin.cmd
u-boot-dtb.img
.u-boot-dtb.img.cmd
u-boot.dtb.out
u-boot.img
.u-boot.img.cmd
u-boot.lds
.u-boot.lds.cmd
u-boot.map
u-boot-nodtb.bin*
.u-boot-nodtb.bin.cmd
u-boot.srec*
.u-boot.srec.cmd
u-boot-sunxi-with-spl.bin
u-boot-sunxi-with-spl.map
u-boot.sym
.u-boot.sym.cmd
## 烧录到开发板
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
U-BOOT 命令
## 帮助信息
help
## 查看命令帮助信息
? 命令名
# 打印板子信息
print
bdinfo
# 设置环境变量
setenv
# 保存环境变量
saveenv
# 显示内存值
md [.b,.w,.l] address [length]
# 指定数据填充一段内存
mw [.b,.w,.l] address value [count]
# 复制一段内存一到另一段内存
cp [.b,.w,.l] source target count
# cmp 比较两段内存的数据是否相等
cmp [.b, .w, .l] address address count
# ping 命令
ping 192.168.0.1
# 设置网络
setenv ipaddr 192.168.0.100
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.250
saveenv
# nfs
nfs 80800000 192.168.101:/home/why/linux/fns/zImage
# tftp
# emc sd
mmc list
# 查看版本
version
# 查看分区信息
fatinfo mmc 0:1
# 查看分区格式
fstype mmc 0:1
# 将指定的文件读取到DRAM
fatload mmc 1:1 8080000 zImage
# 将DRAM中的数据写入到MMC设备中
fatwrite