歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

移植U-Boot.1.2.0到友善之臂SBC2440V4(S3C2440AL)

首先,U-Boot1.2.0還沒有支持s3c2440,這次移植是用2410的文件稍作修改而成的。其實2440和2410的區別主要是2440的主頻更高,增加了攝像頭接口和AC‘97音頻接口;寄存器方面,除了新增模塊的寄存器外,移植所要注意的是NAND FlASH控制器的寄存器有較大的變化、芯片的時鐘頻率控制寄存器(芯片PLL的寄存器)有一定的變化。其他寄存器基本是兼容的。

U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

一、在U-Boot中建立自己的開發板類型,並測試編譯。
我為開發板取名叫: tekkaman2440


0 在工作目錄下解壓U-Boot。
$tar zxvf u-boot.git.tar.gz


1 進入U-Boot目錄,修改Makefile
$cd u-boot.git/
$vi Makefile
#為tekkaman2440建立編譯項

sbc2410x_config: unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0

tekkaman2440_config    :    unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t tekkaman2440 tekkaman s3c24x0
各項的意思如下:
arm: CPU的架構(ARCH)
arm920t: CPU的類型(CPU),其對應於cpu/arm920t子目錄。
tekkaman2440: 開發板的型號(BOARD),對應於board/tekkaman/tekkaman2440目錄。
tekkaman: 開發者/或經銷商(vender)。
s3c24x0: 片上系統(SOC)。

同時在
“ifndef CROSS_COMPILE ”之前  加上自己交叉編譯器的路徑,比如我使用crosstool-0.43制作的基於2.6.22.2內核和gcc-4.1.0-glibc-2.3.2的ARM9TDMI交叉編譯器,則:

CROSS_COMPILE=/home/tekkaman/working/crosstool-gcc410-k26222/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-


2 在/board子目錄中建立自己的開發板tekkaman2440目錄

由於我在上一步板子的
開發者/或經銷商(vender)中填了 tekkaman ,所以開發板tekkaman2440目錄一定要建在/board子目錄中的tekkaman目錄下 ,否則編譯會出錯。

$cd board
$mkdir tekkaman tekkaman/tekkaman2440
$cp -arf sbc2410x/*   tekkaman/tekkaman2440/
$cd tekkaman/tekkaman2440
$mv sbc2410x.c tekkaman2440.c

   還要記得修改自己的開發板tekkaman2440目錄下的Makefile文件,不然編譯時會出錯:
COBJS    := tekkaman2440.o flash.o
$vi Makefile



3 在include/configs/中建立配置頭文件
$cd ../../..
$cp include/configs/sbc2410x.h include/configs/tekkaman2440.h



4 測試編譯能否成功
$make tekkaman2440_config
Configuring for tekkaman2440 board...
(如果出現:
$ make tekkaman2440_config
Makefile:1927: *** 遺漏分隔符 。 停止。
請在U-boot的根目錄下的Makefile的
        @$(MKCONFIG) $(@:_config=) arm arm920t tekkaman2440 tekkaman)
前加上“Tab”鍵)
$make

    我到這一步測試交叉編譯成功!!

Copyright © Linux教程網 All Rights Reserved