u boot啟動之Makefile結構分析

2021-08-31 18:32:53 字數 3616 閱讀 4933

先進行配置命令:

make	smdk2410_config
在makefile檔案中:

smdk2410_config	:	unconfig

@$(mkconfig) $(@:_config=

) arm arm920t smdk2410 null s3c24x0

因此mkconfig檔案中會傳入如下引數:

#parameters:  	target  	architecture 	 cpu     	 board        [vendor]    	 [soc]

mkconfig smdk2410 arm arm920t smdk2410 null s3c24x0

$0 $1 $2 $3 $4 $5 $6

arch   = arm

cpu = arm920t

board = smdk2410

soc = s3c24x0

/* automatically generated - do not edit */

#include

"

編譯命令:

make
分析頂層makefile:

# load arch, board, and cpu configuration

include $(objtree)

/include/config.mk

export arch cpu board vendor soc..

.ifeq ($(arch)

,arm)

/* arch = arm */

cross_compile = arm-linux-

endif..

.objs = cpu/$(cpu)

/start.o /* cpu = arm920t */..

.libs = lib_generic/libgeneric.a

libs +

= board/$(boarddir)

/lib$(board)

.a /* board = smdk2410 */

libs +

= cpu/$(cpu)

/lib$(cpu)

.a /* cpu = arm920t */..

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

all: $(all)..

.$(obj)u-boot.bin: $(obj)u-boot /* 該u-boot為elf格式,u-boot.bin是二進位制格式 */

$(objcopy) $

-o binary $< $@..

.$(obj)u-boot: depend version $(subdirs) $(objs) $(libs) $(ldscript)

undef_sym=`$(objdump)

-x $(libs)

|sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'

|sort|uniq`;\

cd $(lndir)

&& $(ld) $(ldflags) $$undef_sym $(__objs) \

--start-group $(__libs)

--end-group $(platform_libs) \

-map u-boot.map -o u-boot

執行make命令,得到:

undef_sym=`arm-linux-objdump -x lib_generic/libgeneric.a board/

100ask24x0/lib100ask24x0.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a rtc/librtc.a dtt/libdtt.a drivers/libdrivers.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/usb/libusb.a drivers/sk98lin/libsk98lin.a common/libcommon.a |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'

|sort|uniq`;\

cd /work/system/u-boot-

1.1.6

&& arm-linux-ld -bstatic -t /work/system/u-boot-

1.1.6

/board/

100ask24x0/u-boot.lds -ttext 0x33f80000 $undef_sym cpu/arm920t/start.o \

--start-group lib_generic/libgeneric.a board/

100ask24x0/lib100ask24x0.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a rtc/librtc.a dtt/libdtt.a drivers/libdrivers.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/usb/libusb.a drivers/sk98lin/libsk98lin.a common/libcommon.a --end-group -l /usr/local/arm/

4.3.2

/bin/..

/lib/gcc/arm-none-linux-gnueabi/

4.3.2

/armv4t -lgcc \

-map u-boot.map -o u-boot

text_base =

0x33f80000

/* 若要改變u-boot放的位置,可以改這個位址 */

而該ldflags在頂層目錄的config.mk中定義:

config.mk:

189:ldflags +

=-bstatic -t $(ldscript)

-ttext $(text_base) $(platform_ldflags)

uboot分析之 usb啟動

繼上篇文章uboot分析之loopback介面,我們接著看下關於uboot下usb初始化方面的知識,經過這幾天對zturn開發板uboot的分析,結合網上查閱的資料,大概弄懂了其基本流程,其在uboot階段 主要是加入usb host端驅動和相應裝置端驅動來支援儲存裝置,這樣就 可以將kernel以...

Bootloader 之U boot啟動流程

一 u boot的儲存位置 u boot 一般是放在硬體 本地 電路板 的flash內,也有可能放在sd卡上,但是肯定不會放在記憶體或網路上。二 u boot的意義 u boot是嵌入式linux作業系統中執行的第乙個程式 可將u boot和核心看做是兩個不同的程式 其終極目的是引導載入核心進而使l...

uboot啟動流程概述 uboot啟動流程

u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...