U Boot的配置 編譯和鏈結

2021-10-09 03:59:47 字數 2523 閱讀 1657

最近在學習u-boot,關於u-boot的配置、編譯和鏈結,網上找到一篇比較好的博文,mark並推薦一下。

學習總結:

在編譯u-boot之前需根據自己的板子對u-boot進行配置,配置命令為make ***_config(***表示自己的開發板名稱)。那麼這條命令是怎麼對我們的u-boot進行配置的,配置過程中做了哪些操作呢?

make ***_config命令執行u-boot根目錄下的makefile檔案,這個檔案是我們配置和編譯u-boot的總綱。***_config在makefile中是乙個目標,我們在makefile中找到***_config的地方。

mkconfig := $(srctree)/mkconfig

smdk6410_config : unconfig

@$(mkconfig) $(@:_config=) arm s3c64xx smdk6410 samsung s3c6410

我們的目標是smdk6410_config,需要執行的操作是呼叫u-boot根目錄下的mkconfig指令碼,並將命令列中的引數傳給mkconfig。

既執行 ./mkconfig smdk6410 arm s3c64xx smdk6410 samsung s3c6410

那mkconfig指令碼做了哪些操作呢?這裡就不貼**,總結:

1.生成board name

2.建立鏈結檔案

3.建立/include/config.mk檔案

arch     = arm

cpu = s3c64xx

board = smdk6410

vendor = samsung

soc = s3c6410

4.建立開發板相關標頭檔案/include/config.h

/* automatically generated - do not edit */

#include

至此,我們u-boot的配置工作完成。

編譯我們只需輸入make命令,命令根據u-boot根目錄下的makefile進行編譯。makefile會包含我們上面配置生成的檔案指導編譯。

1.包含/include/config.mk,根據配置生成的arch cpu board vendor soc資訊選擇交叉編譯工具

# load arch, board, and cpu configuration

include $(objtree)/include/config.mk

export arch cpu board vendor soc

ifndef cross_compile

ifeq ($(hostarch),ppc)

cross_compile =

else

ifeq ($(arch),ppc)

cross_compile = powerpc-linux-

endif

ifeq ($(arch),arm)

cross_compile = arm-linux-

endif

ifeq ($(arch),i386)

ifeq ($(hostarch),i386)

cross_compile =

else

cross_compile = i386-linux-

endif

endif

2.包含/config.mk,配置交叉編譯選項和結構依賴規則。

#load other configuration

include $(topdir)/config.mk

3.設定objs和libs變數

4.編譯生成目標

all = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)system.map $(u_boot_nand)

all: $(all)

$(obj)u-boot.hex: $(obj)u-boot

$(objcopy) $ -o ihex $< $@

$(obj)u-boot.srec: $(obj)u-boot

$(objcopy) $ -o srec $< $@

$(obj)u-boot.bin: $(obj)u-boot

$(objcopy) $ -o binary $< $@

$(objcopy) -d $< > $<.dis

$(obj)u-boot.image: $(obj)u-boot.bin

......

...$(obj)u-boot.dis: $(obj)u-boot

$(objdump) -d $< > $@

......

...

通過鏈結,我們可以得到我們的目標檔案。

/board/samsung/smdk6410/u-boot.lds

/board/samsung/smdk6410/config.mk

u boot 的配置與編譯

這裡我是u boot mini6410為例 跟著就是要解壓u boot mini6410 20111018.tar.gz,解壓後就會產生乙個u boot mini6410檔案 二 配置編譯支援nand啟動的u boot 注 這裡要看開發板是128m的還是256m的 我這裡以256m為例 1 進入u ...

uboot配置編譯的巨集觀分析

在之前的博文中我從uboot的實際的工作流程方向介紹了uboot,在下面我將以市面上主流的s5pv210這款晶元為例,結合samsung官方為其移植的uboot,從其配置編譯的角度來分析uboot,講述uboot究竟是如何一步步生成最後的可執行映象檔案的。uboot 的配置過程主要涉及四個檔案 1 ...

U Boot的配置 編譯 連線過程

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