第1 階段 下載源碼
1)
、
U-boot
×××地址:
ftp://ftp.denx.de/pub/u-boot/
裏邊的
u-boot-1.3.4.tar.bz2
文件,放到你的開發目錄裏;
2)
、解壓文件:
tar -jxvf u-boot-1.3.4.tar.bz2
;
3)
、下載交叉編譯工具
http://www.handhelds.org/download/projects/toolchain/
,使用
3.3.2
,若是使用
3.4.1
的編譯
u-boot
會產生軟件浮點的編譯錯誤,建議使用
3.3.2
編
u-boot
,用
3.4.1
編譯內核。固然你也可使用友善之臂
http://www.arm9.net/download-arm-linux-gcc-4.3.2.asp
的
arm-linux-gcc-4.3.2.tgz
,這個
arm-linux-gcc-4.3.2 with EABI
至關不錯,能夠編譯全部的程序;本人就是使用
4.3.2
。
4)
、創建交叉編譯環境
首先:
#tar xvzf arm-linux-gcc-4.3.2.tgz
–
C /
注意:
C
後面有個空格,而且
C
是大寫的,它是英文單詞「
Change
」的第一個字母,
在此是改變目錄的意思。
執行該命令,將把
arm-linux-gcc
安裝到
/usr/loca/arm/4.3.2
目錄。
而後:把編譯器路徑加入系統環境變量,運行命令
#vi /root/.bashrc
編輯
/root/.bashrc
文件,在最後一行
export PATH=$PATH:/usr/local/arm/4.3.2/bin
,保存退出。
最後:從新登陸系統
(
沒必要重啓機器,開始
->logout
便可
)
,使以上設置生效。
第
2
階段
測試編譯環境是否正確
1
)、在
u-boot-1.3.4/board
下找個與
2410
類似的開發板,這裏
smdk2410
爲例。
2
)、將
u-boot-1.3.4/board/smdk2410
目錄複製到當前目錄下,並更名爲
mini2440
。
3
)、把
smdk2410.c
更名爲
mini2440.c
,修改
Makefile
中的
COBJS := mini2440.o flash.o
,保存。
4
)、將
u-boot-1.3.4/include/configs/smdk2410.h
,複製到當前目錄,並更名爲
mini2440.h
。
6
)、在
u-boot-1.3.4/Makefile
中
,
大概
2490
多行找到
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
在它下邊添加
mini2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0
(注意
@$(MKCONFIG)
前面必須是
TAB
鍵)
7
)特別注意:
在
u-boot1.3.3
及以上版本
Makefile
有必定的變化,使得對於
24x0
處理器從
nand
啓動的遇到問題。也就是網上有人說的:沒法運行過
lowlevel_init
。其實這個問題是因爲編譯器將咱們本身添加的用於
nandboot
的子函數
nand_read_ll
放到了
4K
以後形成的(到這不理解的話,請仔細看看
24x0
處理器
nandboot
原理)。
u-boot
根本沒有完成自我拷貝,你能夠看
uboot
根目錄下的
System.map
文件就可知道緣由。
解決辦法其實很簡單:
將
278
行的
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
改成
__LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS))
8
)、進入
u-boot-1.3.4
目錄,先來個
#make distclean
,
而後
# make mini2440_config
Configuring for mini2440 board...
9
)、以後就能夠
# make
了,如正常編譯經過,代表環境搭建好。
本文出自 51CTO.COM技術博客