一,U-Boot 工程目录分析
1
、
arch
文件夹
这个文件夹里面存放着和架构有关的文件比如 arm、avr32、m68k 等。我们现在用的是 ARM 芯片,所以只需要关心 arm 文件夹即可。
在arm 文件夹中,“cpu”这个文件夹也是和 cpu 架 构有关的。
mach-xxx
的文件夹,
mach
开头的文件夹是跟具的设备有关的,比如“mach-exynos
”就是跟三星的
exyons
系列
CPU
有关的文件。我们使用的 是 I.MX6ULL
,所以要关注“
imx-common
”这个文件夹。
2
、
board
文件夹
board 文件夹就是和具体的板子有关的,打开此文件夹,里面全是不同的板子。borad 文件夹里面有个名为
“freescale”的文件夹,在里面找到和 mx6u(I.MX6UL/ULL)有关的文件夹。
3
、
configs
文件夹
此文件夹为 uboot
配置文件,
uboot 是可配置的。配置文件统一命名为“xxx_defconfig”,xxx 表示开发板名字,这些 defconfig 文件都存放在 configs文件夹。
使用 “make xxx_defconfig”命令即可配置 uboot。
make mx6ull_14x14_ddr512_emmc_defconfig
上述命令就是配置正点原子的 I.MX6ULL EMMC 核心板所使用的 uboot
4
、
.u-boot.xxx_cmd
文件
.u-boot.xxx_cmd 是一系列的文件,这些文件都是编译生成的,都是一些命令文件,比如文
件
.u-boot.bin.cmd
,看名字应该是和
u-boot.bin
有关的。
cmd_u-boot.bin := cp u-boot-nodtb.bin u-boot.bin
.u-boot.bin.cmd 里面定义了一个变量:cmd_u-boot.bin
,此变量的值为“
cp u-boot-nodtb.bin
u-boot.bin
”,也就是拷贝一份
u-boot-nodtb.bin
文件,并且重命名为
u-boot.bin
,这个就是
u-boot.bin 的来源,来自于文件 u-boot-nodtb.bin
。
文件 .u-boot-nodtb.bin.cmd
就是用于生成
uboot.nodtb.bin 的。
cmd_u-boot-nodtb.bin := arm-linux-gnueabihf-objcopy --gap-fill=0xff -
j .text -j .secure_text -j .rodata -j .hash -j .data -j .got -
j .got.plt -j .u_boot_list -j .rel.dyn -O binary u-boot u-bootnodtb.bin
5
、
Makefile
文件
uboot 源码根目录下的
Makefile
是顶层
Makefile
,他会调用其它的模块的
Makefile
文件,
比如
drivers/adc/Makefile
。
6
、
u-boot.xxx
文件
u-boot.xxx 同样也是一系列文件,包括
u-boot
、
u-boot.bin
、
u-boot.cfg
、u-boot.imx、u
-boot.lds
、
u-boot.map、
u-boot.srec
、
u-boot.sym
和
u-boot-nodtb.bin
,这些文件的含义如下:
u-boot:编译出来的
ELF
格式的
uboot
镜像文件。
u-boot.bin:编译出来的二进制格式的
uboot
可执行镜像文件。
u-boot.cfg:
uboot
的另外一种配置文件。
u-boot.imx:
u-boot.bin
添加头部信息以后的文件,
NXP
的
CPU
专用文件。
u-boot.lds:链接脚本。
u-boot.map:
uboot
映射文件,通过查看此文件可以知道某个函数被链接到了哪个地址上。
u-boot.srec:
S-Record
格式的镜像文件。
u-boot.sym:
uboot
符号文件。
u-boot-nodtb.bin:和
u-boot.bin
一样,
u-boot.bin
就是
u-boot-nodtb.bin
的复制文件。
7
、
.config
文件
uboot 配置文件,使用命令“
make xxx_defconfig
”配置
uboot 以后就会自动生成看出.
config 文件中都是以“CONFIG_”开始的配置项,这些配置项就是 Makefile 中的变量,因此后面都跟有相应的值,uboot 的顶层 Makefile 或子 Makefile 会调用这些变量值。在.config 中会有大量的变量值为‘y’,这些为‘y’的变量一般用于控制某项功能是否使能,为‘y’的话就表示功能使能。
8
、
README
README 文件描述了
uboot
的详细信息,包括
uboot
该如何编译、
uboot
中各文件夹的含
义、相应的命令等等。建议大家详细的阅读此文件,可以进一步增加对
uboot
的认识。