一、移植環境
- 主 機:ubuntu
- 開發板:友善之臂mini2440
- 編譯器:arm-linux-gcc-4.3.2
- u-boot:u-boot-2009.03.tar.bz2
二、移植步驟
目前u-boot對很多CPU直接支援,可以查看board目錄的一些子目錄,如:board/samsung/目錄下就是對三星一些ARM處理器的支援,有smdk2400、smdk2410和smdk6400,但沒有2440,所以我們就在這裡建立自己的開發板項目。 1)因2440和2410的資源差不多,主頻和外設有點差別,所以我們就在board/samsung/下建立自己開發板的項目,取名叫mini2440
#tar -jxvf u-boot-2009.08.tar.bz2 //解壓源碼 #cd u-boot-2009.08/board/samsung/ //進入目錄 #mkdir mini2440 //建立mini2440檔案夾
|
2)因2440和2410的資源差不多,所以就以2410項目的代碼作為模板,以後再修改
#cp -rf smdk2410/* mini2440 / //將2410下所有的代碼複製到2440下
#cd mini2440 //進入mini2440目錄
#mv smdk2410.c mini2440.c //將mini2440下的smdk2410.c改名為mini2440.c
#cd //回到u-boot根目錄 #cp include/configs/smdk2410.h include/configs/mini2440.h //建立2440標頭檔 #gedit board/samsung/mini2440/Makefile //修改my2440下Makefile的編譯項,如下:
|
COBJS := mini2440.o flash.o //因在my2440下我們將smdk2410.c改名為my2440.c
|
3)修改u-boot跟目錄下的Makefile檔案。尋找到smdk2410_config的地方,在他下面按照smdk2410_config的格式建立mini2440_config的編譯選項,另外還要指定交叉編譯器
CROSS_COMPILE ?= arm-linux- //指定交叉編譯器為arm-linux-gcc
smdk2410_config : unconfig //2410編譯選項格式 @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
mini2440_config : unconfig //2440編譯選項格式 @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 samsung s3c24x0
*說明:arm :CPU的架構(ARCH)
arm920t:CPU的類型
mini2440:對應在board目錄下建立新的開發板項目的目錄
samsung:新開發板項目目錄的上級目錄,如直接在board下建立新的開發板項目的目錄,則這裡就為NULL
s3c24x0:CPU型號
*注意:編譯選項格式的第二行要用Tab鍵開始,否則編譯會出錯
|
4)測試編譯建立的mini2440開發板項目
#make mini2440_config //如果出現Configuring formini2440board...則表示設定正確
#make//編譯後在根目錄下會出現u-boot.bin檔案,則u-boot移植的第一步就算完成了
|
到此為止,u-boot對自己的mini2440開發板還沒有任何用處,以上的移植只是搭建了一個mini2440開發板u-boot的架構,要使其功能實現,還要根據mini2440開發板的具體資源情況來對u-boot源碼進行修改。