1. 程式人生 > >一、配置介紹

一、配置介紹

AR 自己 SM -- 分享圖片 poi hash script 手動

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 配置文件

  

一、配置介紹