uboot 的配置和编译过程

uboot 的配置和编译过程

目录

一、uboot 配置过程

二、uboot 编译过程

一、uboot 配置过程

顶层Makefile会包含2个配置文件:include/config/auto.conf、include/autoconf.mk。

u-boot中有非常多的配置文件:

1、.config:来自单板的默认配置、Kconfig;

2、include/config/auto.conf:来自.config,去掉了很多注释;

3、u-boot.cfg:它的内容跟头文件类似,来自:

(1) .config

(2) 头文件include/common.h,又包含了"#include ";

4、include/autoconf.mk:来自u-boot.cfg,但是移除include/config/auto.conf的内容以免重复。

配置过程分为两个阶段,如下图所示:

二、uboot 编译过程

执行 make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 指令编译之后,结果如下图所示:

1、各类u-boot文件都依赖于u-boot,先编译得到u-boot,它由u-boot-init、u-boot-main两部分链接而成:

(1) u-boot-init为:arch/arm/cpu/armv7/start.o

在 arch/arm/Makefile文件中:

(2) u-boot-main为:lib/built-in.o fs/built-in.o net/built-in.o 等,以下图片均是顶层 Makefile 中的:

/* 顶层 Makefile */

include config.mk # 里面会包含arch/arm/config.mk(含有ALL-y += u-boot-dtb.imx)

include arch/$(ARCH)/Makefile # arch/arm/Makefile, 里面含有head-y

libs-ylibs-y += lib/

libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/

libs-$(CONFIG_OF_EMBED) += dts/

libs-y += fs/

libs-y += net/

libs-y += disk/

libs-y += drivers/

libs-y += drivers/dma/

libs-y += drivers/gpio/

libs-y += drivers/i2c/

libs-y += drivers/mmc/

libs-y += drivers/mtd/

libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/

libs-y += drivers/mtd/onenand/

libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/

libs-y += drivers/mtd/spi/

libs-y += drivers/net/

libs-y += drivers/net/phy/

libs-y += drivers/pci/

libs-y += drivers/power/ \

drivers/power/fuel_gauge/ \

drivers/power/mfd/ \

drivers/power/pmic/ \

drivers/power/battery/ \

drivers/power/regulator/

libs-y += drivers/spi/

libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/

libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/

libs-$(CONFIG_ALTERA_SDRAM) += drivers/ddr/altera/

libs-y += drivers/serial/

libs-y += drivers/usb/dwc3/

libs-y += drivers/usb/emul/

libs-y += drivers/usb/eth/

libs-y += drivers/usb/gadget/

libs-y += drivers/usb/gadget/udc/

libs-y += drivers/usb/host/

libs-y += drivers/usb/musb/

libs-y += drivers/usb/musb-new/

libs-y += drivers/usb/phy/

libs-y += drivers/usb/ulpi/

libs-y += cmd/

libs-y += common/

libs-$(CONFIG_API) += api/

libs-$(CONFIG_HAS_POST) += post/

libs-y += test/

libs-y += test/dm/

libs-$(CONFIG_UT_ENV) += test/env/

libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)

libs-y := $(sort $(libs-y))

u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples

u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))

libs-y := $(patsubst %/, %/built-in.o, $(libs-y))

u-boot-init := $(head-y) # arch/arm/Makefile, 里面含有head-y

u-boot-main := $(libs-y)

2、由 u-boot 生成 u-boot-nodtb.bin

3、由 u-boot-nodtb.bin 生成 u-boot.bin

4、制作生成 u-boot.imx

5、顶层 Makefile 生成目标文件核心:

相关推荐

2025年30个副业路子,助你轻松赚外快

2025年30个副业路子,助你轻松赚外快

365bet官网体育投注 08-04
阅读更多
华测CHCNAV

华测CHCNAV

365日博体育备用 08-09
阅读更多
徐闻最好的酒店排名,徐闻住宿攻略

徐闻最好的酒店排名,徐闻住宿攻略

bei365官网 07-31
阅读更多