操作系統:YLMF OS 3.0
交叉編譯器:crosstools_3.4.5
準備工作:
首先到UBOOT的官網FTP服務器上去下載了U-BOOT-2009.08.tar.bz2
複製到用戶目錄下
tar jxvf u-boot-2009.08.tar.bz2解壓后會出現一個/u-boot-2009.08-rc3
目錄,先大致看一下都有些什麼呢?
相對於老版本的UBOOT明顯多了一個API目錄,其他的大致一樣。
打開根目錄下Makefile指定交叉編譯器
vi Makefile
在163行,修改如下:
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?= /home/wxz/ARM-TOOLS/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-
endif
話說我找smdk2410目錄發現找不到,原來在這版本中,將每種目標板,放在了芯片的目錄下,
我們用的S3C2440 顯然在對應三星/samsung/目錄下,果斷找到了目標板配置文件smdk2410.c
現在試一下交叉編譯器是否能編譯這個版本的uboot
根目錄下執行:
make distclean
make smdk2410_config
make all
果斷生成了u-boot.bin
成功編譯,說明我們的交叉編譯器給力。
現在可以大膽的刪除文件了,/board/目錄下只留下samsung/smdk2410 ,/include
目錄下刪除不要的asm-xxx,根目錄下也刪除不相關的目錄,結果一番裁剪,是不是感覺
文件沒那麼龐大了,
留下文件如下:
api COPYING examples MAINTAINERS onenand_ipl
board cpu fs MAKEALL post
CHANGELOG CREDITS include Makefile README
CHANGELOG-before-U-Boot-1.1.5 disk lib_arm mkconfig rules.mk
common doc libfdt nand_spl tools
config.mk drivers lib_generic net
現在修改目標板目錄,改正我們自己的,嘿嘿!
cd board/samsung
mkdir CM2440
mv smdk2410/ CM2440/
cd CM2440
mv smdk2410.c CM2440.c
然後在修改include/configs/smdk2410.h 修改為CM2440.h
最後修改頂層Makefile 文件大概第2990行,
添加如下:
CM2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t CM2440 samsung s3c24x0
第二行前面必須是一個TAB
修改CM2440/目錄下Makefile文件,第28行改為COBJS := CM2440.o flash.o
現在再次編譯
root@Like-ccm:/home/wxz/u-boot-2009.08-rc3# make distclean
mroot@Like-ccm:/home/wxz/u-boot-2009.08-rc3# make CM2440_config
Configuring for CM2440 board...
root@Like-ccm:/home/wxz/u-boot-2009.08-rc3# make all
沒錯誤,準備工作就好了。
下面開始正式移植!