U-Boot 顶层 Makefile 详解

 uboot目录列表

 着重关注以下文件目录

arch文件夹

这个文件夹里面存放着和架构有关的文件

arch/arm/cpu/armv7/u-boot.lds

I.MX6ULL 使用的 Cortex-A7 内核

arch/arm/imx-common

board 文件夹

board 文件夹就是和具体的板子有关的

board /freescale/mx6ullevk

configs文件夹

此文件夹为 uboot 配置文件

configs/mx6ull_14x14_ddr512_emmc_defconfig

使用 “make xxx_defconfig”命令即可配置 uboot

make mx6ull_14x14_ddr512_emmc_defconfig

在编译 uboot 之前一定要使用 defconfig 来配置 uboot!

u-boot.xxx_cmd 文件

.u-boot.xxx_cmd 是一系列的文件,这些文件都是编译生成的,都是一些命令文件

通过.u-boot.bin.cmd中的变量cmd_u-boot.bin := cp u-boot-nodtb.bin u-boot.bin,可知u-boot.bin 的来源是u-boot-nodtb.bin,而u-boot-nodtb.bin中用到了 arm-linux-gnueabihf-objcopy,使用 objcopy 将 ELF 格式的 u-boot 文件转换为二进制的 u-boot-nodtb.bin 文件。

文件 u-boot 是 ELF 格式的文件,文件.u-boot.cmd 用于生成 u-boot,,u-boot.cmd 使用到了 arm-linux-gnueabihf-ld.bfd,也就是链接工具,使用 ld.bfd 将各个 built-in.o 文件链接在一起就形成了 u-boot 文件。uboot 在编译的时候会将同一个目录中的所有.c 文件 都编译在一起,并命名为 built-in.o,相当于将众多的.c 文件对应的.o 文件集合在一起,这个就 是 u-boot 文件的来源。

烧写 uboot使用MFGTools 工具,此时烧写的是 u-boot.imx 文件,,而不是 u-boot.bin 文件。u-boot.imx 是在 u-boot.bin 文件的头部添加了 IVT、DCD 等信息。 这个工作是由文件.u-boot.imx.cmd 来完成的。

cmd_u-boot.imx := ./tools/mkimage -n 
board/freescale/mx6ull_alientek_emmc/imximage.cfg.cfgtmp -T imximage -
e 0x87800000 -d u-boot.bin u-boot.imx

IVT、DCD 等数据保存在了文件 board/freescale/mx6ullevk/imximage-ddr512.cfg.cfgtmp中,工具 mkimage 就是读取文件 imximage-ddr512.cfg.cfgtmp 里面的 信息,然后将其添加到文件 u-boot.bin 的头部,最终生成 u-boot.imx。

文件.u-boot.lds.cmd 就是用于生成 u-boot.lds 链接脚本的。

Makefile 文件

uboot 源码根目录下的 Makefile 是顶层 Makefile,他会调用其它的模块的 Makefile 文件

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 的复制文件。

.config 文件

使用命令“make xxx_defconfig”配置 uboot 以后就会自动生成

.config 文件中都是以“CONFIG_”开始的配置项,这些配置项就是 Makefile 中的 变量,因此后面都跟有相应的值,uboot 的顶层 Makefile 或子 Makefile 会调用这些变量值。

README

README 文件描述了 uboot 的详细信息,包括 uboot 该如何编译、uboot 中各文件夹的含 义、相应的命令等等

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值