一. uboot 源码分析前提
由于 uboot 会使用到一些经过编译才会生成的文件,因此,我们在分析 uboot的时候,需要先编译一下 uboot 源码工程。
这里所用的开发板是 nand-flash 版本。
本文学习续上一篇文章,如下:
IMX6ULL移植篇-uboot源码主要目录说明_凌肖战的博客-CSDN博客
二. uboot 源码主要文件说明
1. .config 文件
当我们执行make xxx_defconfig以后就会生成 .config文件,此文件保存了详细的 uboot 配置信息。
可以看出
.config
文件中都是以 “
CONFIG_
” 开始的配置项,这些配置项就是
Makefile
中的
变量,因此后面都跟有相应的值,
uboot
的顶层
Makefile
或子
Makefile
会调用这些变量值。
在
.config文件
中会有大量的变量值为‘y
’,这些为‘y
’的变量一般用于控制某项功能是否使能,为
‘
y
’的话就表示功能使能。
2. .u-boot.xxx_cmd 文件
u-boot.xxx_cmd 是一系列的文件,这些文件都是编译生成的,都是一些命令文件。
都是一些命令文件,比如文件
.u-boot.bin.cmd
,看名字应该是和
u-boot.bin
有关的。
例如,.u-boot.bin.cmd文件内容如下:
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.bin
。也就是说
u-boot.bin 来源于文件
u-boot-nodtb.bin
。
文 件
.u-boot-nodtb.bin.cmd
就 是 用 于 生 成
uboot.nodtb.bin 。而
.u-boot-nodtb.bin.cmd文件内如下:
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-boot-nodtb.bin
这里用到了
arm-linux-gnueabihf-objcopy
,使用
objcopy
将
ELF
格式的
u-boot
文件转换为二
进制的
u-boot-nodtb.bin
文件。 以此类推。
3. Makefile 文件
uboot
源码根目录下的
Makefile
是顶层
Makefile。
Makefile
是支持嵌套的,也就是顶层
Makefile
可以调用子目录
中的
Makefile
文件。如下就是 顶层 Makefile 文件:
4. 顶层 README 文件
顶层README,非常重要。建议大家阅读!!!
README 文件描述了 uboot 的详细信息,包括 uboot 该如何编译、uboot 中各文件夹的含义、相应的命令等等。建议大家详细的阅读此文件,可以进一步增加对 uboot 的认识。
5. u-boot.xxx 文件
u-boot.xxx
同样也是一系列文件,是 uboot 编译后生成的一系列文件。
这些文件的含义如下:
u-boot
:编译出来的
ELF
格式的
uboot
镜像文件。
u-boot.bin
:编译出来的二进制格式的
uboot 可执行镜像文件,即编译出来带ELF信息的 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
的复制文件。
6. System.map 文件
System.map 文件是内存映射表。编译 uboot后生成的文件。
7. Kconfig 文件
Kconfig 文件 与图形界面有关的。uboot可以通过图形界面来配置。
8. imx6ull_alientek_nand.sh
imx6ull_alientek_nand.sh文件,是之前我们编译 uboot 创建的配置脚本文件。