mkconfig腳本分析

聲明:本文由個人學習過程中整理而成,轉載請註明出處。


1、uboot/mkconfig

(1)uboot是一個多CPU多架構的統一bootloader,

爲了完成針對的特定目標板,目標架構的編譯,需要給Makefile指明哪些文件需要編譯,相當與從整體上控制  

需要編譯的cpu,單板等。


2、主Makefile傳遞的6個參數

$1:x210_sd

$2:arm

$3: s5pc11x

$4:x210

$5: samsumg

$6:s5pc110

解析傳遞的參數


while [ $# -gt 0 ] ; do

case "$1" in

--) shift ; break ;;

-a) shift ; APPEND=yes ;;

-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;

*)  break ;;

esac

done


[ "${BOARD_NAME}" ] || BOARD_NAME="$1"


[ $# -lt 4 ] && exit 1

[ $# -gt 6 ] && exit 1


echo "Configuring for ${BOARD_NAME} board..."


3、創建相應文件夾的符號鏈接

在uboot/include文件夾下建立相應的文件夾軟連接

第一個:include目錄下創建asm文件,指向asm-arm。

第二個:include目錄下創建regs.h文件,指向include/s5pc110.h

第三個:inlcude/asm-arm下創建一個arch文件,指向include/asm-arm/arch-s5pc11x

第四個:include/asm-arm下創建一個proc文件,指向include/asm-arm/proc-armv

一共創建了4個符號鏈接。這4個符號鏈接在uboot源代碼中頭文件包含時用到。

創建符號鏈接的目的是讓uboot具有可移植性。


4、創建include/config.mk文件

echo "ARCH   = $2" >  config.mk

echo "CPU    = $3" >> config.mk

echo "BOARD  = $4" >> config.mk


[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk


[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC    = $6" >> config.mk


5、創建include/config.h文件

config.h文件裏面的內容就一行#include<configs/x210_sd.h>,這個頭文件是我們移植x210開發板時,對開發板的宏定義配置文件。是我們移植x210時最主要的文件。


if [ "$APPEND" = "yes" ]# Append to existing config file

then

echo >> config.h

else

> config.h# Create new config file

fi

echo "/* Automatically generated - do not edit */" >>config.h

echo "#include <configs/$1.h>" >>config.h


exit 0


參考資料:《uboot和系統移植---朱有鵬老師》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章