09 uboot的配置編譯主過程分析

2021-08-01 21:59:44 字數 3756 閱讀 4202

在orangepi_sdk目錄下:

///

//////

//////

//////

//////

//////

/////

uboot的配置過程

make config_uboot //配置uboot

1). //當前目錄的makefile

26 phony += config_uboot

27 config_uboot :

28 @echo "+++++config uboot+++++"

29 @$(pwd)/script/config_uboot_source.sh

2). //當前目錄下的script/config_uboot_source.sh

2 source $pwd/script/orangepi.conf //讓orangepi.conf裡的環境變數生效。如交叉編譯器,uboot, kernel目錄路徑

3 source $pwd/script/common.sh //提供功能函式

11 message "entry u-boot source dir " && cd $ //進入uboot原始碼目錄

1213

if [ ! -f .config ] //判斷uboot原始碼根目錄下是否存在".config", ".config"用於指定uboot的編譯配置

14 then //如沒有.config檔案

15 message "clear u-boot " && make distclean //清作編譯生成的檔案及配置檔案

16 message "config u-boot " && make $ // make orangepi_linux_defconfig

17 fi

20 message "config u-boot" && make menuconfig //彈出乙個配置介面

//////

//////

////

總結下uboot的配置過程:

1). script/orangepi.conf裡的環境變數生效, 及進入uboot原始碼目錄

2). make distclean

3). make orangepi_linux_defconfig

4). make menuconfig

uboot編譯是通過命令:

make uboot

1). 當前目錄下的makefile

42 phony += uboot

43 phony += bootloader

44 uboot bootloader :

45 @echo

"+++++build u-boot+++++" | tee $(opi_output_dir)/build_uboot.log

46 @$(pwd)/script/make_uboot.sh 2>&1 | tee -a $(opi_output_dir)/build_uboot.log

2). script/make_uboot.sh裡的主要內容:

2source

$opi_work_dir/script/common.sh

10 message "entry u-boot source dir " && cd

$opi_u_source

20 message "build u-boot , please wait some time." && make -j8

22if [ -f u-boot-sunxi-with-spl.bin ]; then

23# copy u-boot-sunxi-with-spl.bin to output

24 cp u-boot-sunxi-with-spl.bin $opi_uboot_output_dir

25 cp arch/arm/dts/*sun8i-h3* $opi_dtb_output_dir

26fi

// boot.scr檔案的生成, boot.scr是uboot的環境變數存放檔案

30 message "build u-boot boot.scr" && rm $opi_uboot_output_dir/boot.scr

31 mkimage -c none -a arm -t script -d

$opi_source/u-boot-script/orangepi.cmd $opi_uboot_o utput_dir/boot.scr

//由orangepi.fex生成script.bin, 檔案裡用於描述硬體相關的資源

34 message "build sunxi script.bin" && rm $opi_uboot_output_dir/script.bin

35 fex2bin $opi_source/sunxi-script/orangepi.fex $opi_uboot_output_dir/script.bin

總結下編譯主要過程:

1).進入uboot原始碼目錄

2). make -j8

3). 生成boot.src環境變數檔案

4). 生成script.bin檔案

///

//////

//////

//////

//////

//////

//////

//////

///////

最後我們是用"make install_uboot sdcard=/dev/sdb"燒寫到sd卡里

1). 當前目錄裡的makefile:

63 phony += install_uboot

64 install_uboot :

65 @echo "script run sudo , please authorize :"

66 @sudo $(pwd)/script/install_uboot.sh $(sdcard)

2). script/install_uboot.sh的主要內容:

2 source $pwd/script/orangepi.conf

3 source $pwd/script/common.sh

4 sdcard=$1

// sdcard=/dev/sdb

18 echo "mount -t vfat $sdcard"

1" $opi_sdcard_boot"

19 mount -t vfat $sdcard"1" $opi_sdcard_boot //掛載/dev/sdb1到目錄裡, sdb1是fat分割槽

2021 cd $

23 cp boot.scr $/ //複製到掛載目錄裡,也就是存放到sd卡的fat分割槽

25 cp script.bin $/ //複製script.bin到sd卡的fat分割槽

27 cp u-boot-sunxi-with-spl.bin $/ //也複製uboot.bin到分割槽裡

29 dd if=/dev/zero of=$sdcard bs=1k seek=8 count=1015

//從sd卡的第8個扇區(每個扇區512位元組)開始,清零1015k位元組空間

30 dd if=u-boot-sunxi-with-spl.bin of=$sdcard bs=1k seek=8

//把uboot.bin從sd卡的第8個扇區開始燒寫進去

U Boot的配置 編譯 連線過程

u boot,全稱為universal boot loader,即通用bootloader。通用有兩層含義 可以引導多種作業系統 支援多種架構的cpu。根據u boot原始碼資料夾頂層的readme檔案說明,針對使用的開發板 board 執行 1 make config 2 make all 可以生...

u boot的配置過程

1.頂層makefile 這裡我們將以smdk2410為例來介紹,uboot是u boot 2009.03,首先我們應該開啟u boot的頂層makefile,這裡按照人的思維來說,我們應該首先去看看smdk2410的配置項 smdk2410 config 2830 smdk2410 config ...

UBOOT的編譯過程三

繼續上 objs cpudir start.o ifeq cpu i386 objs cpudir start16.o objs cpudir resetvec.o endif ifeq cpu ppc4xx objs cpudir resetvec.o endif ifeq cpu mpc85xx...