一、配置介绍

1.1 常用命令  

  当前 uboot 的配置已经完全变成Linux 内核的配置形式了,完全可以按照Linux 内核的分析方是区分析 uboot。

  uboot 和 Linux的代码配置项由 Kconfig 来完成的,关于 Kconfig 语法,可参见:linux/Documentation/kbuild/kconfig-language.txt

  在编译时,先进行配置,目的是根据需求选择功能以及编译生成方式类型(模式或包含在内核中).

  配置项操作可以由如下命令中的其中一条来完成:

   make config, make menuconfig, make oldconfig, make xx_defconfig

  • make config:这个要求用户手动选择所有配置项,配置完成后生成 .config 文件。
  • make menuconfig:显示以curses的图形配置菜单,当已有.config文件存在时,它会根据 .config 文件设定默认项。若不存在 .config 文件,则根据各级 Kconfig 文件来设定菜单项。完成配置后,生成.config文件。
  • make oldconfig:与 make menuconfig 相同,区别在于这个没有图形界面,当已有 .config 文件存在时,它根据.config文件设定默认项,若kconfig有新配置项时,会提示你进行选择;若不存在 .config 文件,则根据各级 Kconfig 文件来设定菜单项。完成配置后,生成 .config 文件。

  若已存在 .config 文件,make menuconfig 及 make oldconfig 都会把原 .config 另存为 .config.old。

  • make xx_defconfig: 一般源码中都有不同硬件平台的默认配置文件,你也可以制做自己的默认配置文件,当这个命令执行时,它会根据 kconfig 及 xx_defconfig 来生成 .config 文件。

  在执行完其中一条 config 命令后,会生成 .config 及 autoconf 文件,autoconf 是根据配置项生成的相应宏定义,供 makefile 使用,当执行 make 命令时,就会根据 autoconf 定义的宏及 makefile 去编译源码。

  u-boot的编译跟kernel编译一样,分两步执行: 
  - 第一步:配置,执行make xxx_defconfig进行各项配置,生成.config文件 
  - 第二部:编译,执行make进行编译,生成可执行的二进制文件u-boot.bin或u-boot.elf

1.2 make xxx_defconfig 命令执行分析

  由于 2008.03 的 uboot 版本中已经遗弃了 2440 所以我们选择一块其他开发板进行分析。

  执行命令:make smdkc100_defconfig V=1

  V = 1 的意思是打开编译过程

  过程如下:

 1 make -f ./scripts/Makefile.build obj=scripts/basic
 2   cc -Wp,-MD,scripts/basic/.fixdep.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer      -o scripts/basic/fixdep scripts/basic/fixdep.c  
 3 rm -f .tmp_quiet_recordmcount
 4 make -f ./scripts/Makefile.build obj=scripts/kconfig smdkc100_defconfig
 5   cc -Wp,-MD,scripts/kconfig/.conf.o.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer    -D_GNU_SOURCE -DCURSES_LOC="<ncurses.h>" -DLOCALE   -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c
 6   cat scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
 7   cat scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
 8   cat scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
 9   cc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer    -D_GNU_SOURCE -DCURSES_LOC="<ncurses.h>" -DLOCALE  -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
10   cc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
11 scripts/kconfig/conf  --defconfig=arch/../configs/smdkc100_defconfig Kconfig
12 #
13 # configuration written to .config
14 #

  

  这一项是生成了 scripts/basic/fixdep 工具

  

  这一项是生成了 scripts/kconfig/conf 工具

  

  最后执行 scripts/kconfig/conf 工具 生成.config

   可以知道 make xxx_defconfig 的执行主要分成三个部分:

  1. 执行 make -f ./scripts/Makefile.build obj=scripts/basic,编译生成 scripts/basic/fixdep 工具
  2. 执行 make -f ./scripts/Makefile.build obj=scripts/kconfig rpi_3_32b_defconfig 编译生成 scripts/kconfig/conf 工具
  3. 执行 scripts/kconfig/conf --defconfig=arch/../configs/xxx_defconfig Kconfig生成最终的 .config 配置文件 

     

猜你喜欢

转载自www.cnblogs.com/kele-dad/p/8969174.html
今日推荐