參考連接:http://wenku.baidu.com/view/ae78a00390c69ec3d5bb75ce.html?st=1
鏈接上已經指明了我之前一直2013.01版本uboot產生錯誤的原因,2010.3版本到2010.6版本是uboot的一個分界,而2010.3版本的uboot是最接近samsung定制的s3c-u-boot-1.1.6版本uboot的一個版本號,所以在此選擇版本2010.3
1、download the uboot from ftp
http://ftp.denx.de/pub/u-boot/ download u-boot-2010.03.tar.bz2
2、為了方便、先再win系統下將uboot解壓然后精簡解壓包(這步可以省略的)
1)精簡板級文件目錄/uboot/board,僅保留samsung文件夾(內部包含smdk6400.c)
2)精簡處理器文件目錄/uboot/cpu,僅保留arm1176文件夾(6410的cpu類型)
3)精簡頭文件目錄/uboot/include,刪除asm-*文件夾,僅保留asm-arm與asm-generic
4)精簡config文件目錄uboot/include/configs,僅保留smdk6410.h
5)精簡lib目錄/uboot,將lib_*刪除,僅保留lib_arm與lib_generic
3、開始進行初次編譯,將目錄文件移動到linux系統下(必須是已經配置好arm-linux-gcc的系統)
1)修改Makefile,更改交叉編譯器為
CROSS_COMPILE ?= arm-linx-
2)編譯
make smdk6400_config make
3)檢查,編譯完成后uboot根目錄下應該有u-boot.bin文件
4)此時編譯的uboot無實際使用意義,僅為測試能否正常編譯,接下來修改后的編譯才是我們需要編譯使用的uboot,進行下一步工作前,可以
make distclean
4、步奏和之前編譯的uboot2013一樣
1)創建板級文件/uboot/board/samsung目錄下
mkdir smdk6410 cp smdk6400/* smdk6410/
2)修改板級文件目錄下的文件
cd smdk6410 mv smdk6400.c smdk6410.c
3)修改板級文件內容
vim smdk6410.c :%s/6400/6410/g :wq vim Makefile :%s/smdk6400/smdk6410/g :wq
4)添加smdk6410頭文件
進入目錄/uboot/include/configs
cp smdk6400.h smdk6410.h
將smdk6410.h中的6400全部替換成6410。
5)修改cpu目錄的Makefile
進入目錄/cpu/arm1176/s3c64xx
vim Makefile :%s/6400/6410/g :wq
6)修改根目錄Makefile
找到smdk6400配置項,復制一段修改為smdk6410配置項
######################################################################### smdk6410_noUSB_config \ smdk6410_config : unconfig @mkdir -p $(obj)include $(obj)board/samsung/smdk6410 @mkdir -p $(obj)nand_spl/board/samsung/smdk6410 @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h @if [ -z "$(findstring smdk6410_noUSB_config,$@)" ]; then \ echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\ $(MKCONFIG) $(@:_config=) arm arm1176 smdk6410 samsung s3c64xx; \ else \ echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\ $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6410 samsung s3c64xx; \ fi @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk #========================================================================
7)添加/asm/arch/s3c6410.h文件
cp s3c6400.h s3c6410.h
vim s3c6410.h
:%s/6400/6410/g
:wq
8)添加nand_spl板級Makefile
/uboot/nand_spl/board/samsung/smdk6410/目錄下是空的
拷貝6400目錄下的文件過來
cd /uboot/nand_spl_board/samsung cp smdk6400/* smdk6410/ vim smdk6410/Makefile :%s/6400/6410/g :wq
9)然后可以進行smdk6410的初次編譯了,在根目錄下
make smdk6410_config make
10)如果在之前make smdk6400_config && make之后沒有執行make clean的相關操作,一般是不會提示錯誤地。
但是如果clean了,很可能會提示
arm-linux-ld: cannot find cpu/arm1176/s3c64xx/cpu_init.o make: *** [u-boot] 錯誤 1
提示這個的話,修改兩處地方
//cpu/arm1176/s3c64xx/cpu_init.S //cpu/arm1176/s3c64xx/Makefile //把之中的6400換成6410就好
11)若成功編譯可以進行進一步的功能添加,下一篇詳述功能添加