先進行配置命令:
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...