u-boot 2010.03移植編(一)---コンパイル目標の確立

6334 ワード

しばらくの分析編を経て、次は移植編を始めます.これらの話は特に多くありません.主にs 3 c 6410コンパイルボードの構築をサポートしています.自分のimageをコンパイルすることができます.移植編が始まる前に、分析編を見たほうがいいです.ubootのコンパイル目標の選択を見てください.そしてコンパイル先のプロセスに大まかな理解があります..手がつけられないほどではありません....u-boot 2010.03 Makefile分析http://blog.csdn.net/yyttiao/article/details/7899530 u-boot 2010.03コンパイルターゲット分析の構成http://blog.csdn.net/yyttiao/article/details/7899008
次に移植編(一)----Makefileを修正し、コンパイルターゲットを生成する-----S 3 C 6410を開始する
-----------------------------
-----------------------------
使用環境
PC:     ubuntu 11.04
kernel: 2.6.32-28-generic
corss:  arm-linux-gcc 4.3.2
arm:    s3c6410
uboot:  uboot-2010-03
-----------------------------
-----------------------------
作成者:   LvApp
連絡先:[email protected]
すべての著作権はすべて作者の所有があって、転載を歓迎して、出典を明らかにしてください、どのように修正して本人と連絡してください、ありがとうございます
教程を始める前に.あなたはソースコードをダウンロードしなければならなくて、解凍します....ここは千万行を少し过ぎます~~ソースコードはuboot 2010.03これです..间违いを正さないでください.间违っても大丈夫で、すべて悪くありません~
ここでMakefileを直接開いてsmdk 6400_を見つけますconfigは、6400に従って6410のターゲットを追加します.
#########################################################################
## ARM1176 Systems
#########################################################################
smdk6400_noUSB_config \
smdk6400_config : unconfig
        @mkdir -p $(obj)include $(obj)board/samsung/smdk6400
        @mkdir -p $(obj)nand_spl/board/samsung/smdk6400
        @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
        @if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then \
            echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
            $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx; \
        else \
            echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
            $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6400 samsung s3c64xx; \
        fi
        @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

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 smdk6400_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

次に、クロスコンパイラを変更します.
# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
    CROSS_COMPILE ?= arm-linux-
endif

次はまずコンパイルしてみます...きっとたくさんの間違いがありますよ~~~
じゃあバカなことをしよう
Make
まず、あなたは
Make smdk6410_config
私の最初の間違いは次のとおりです.
fatal error: configs/smdk6410.h: No such file or directory
どうしてですか.どうしてこのファイルが現れたのですか?いったいどの書類の中に預言者がいないのか、私たちが追加することを知っています.
smdk6410.h
どうですか.
自問自答しましょう...分析編を見てください.
mkconfig
の最後に書き込みがあります
config.h
という言葉があります.
#include
$1間違いなく、私たちのボード級の名前です.
smdk6410
このようにubootは預言者を知らない能力があります...具体的に分析編を見ます
コピーします
smdk6400.h cp include/configs/smdk6400.h include/configs/smdk6410.h
はい、makeを続けます.それから私の2番目の間違いです.smdk 6410というディレクトリはありません.ああ、ここではなぜ出てきたのか分析しません.
smdk6410
このディレクトリです..分析編を見てください
make-C board/samsung/smdk 6410/make[1]:ディレクトリ`/home/LinuxProject/u-boot/u-boot-2010.03/board/samsung/smdk 6410'makeに入っています[1]:***ターゲットが指定されておらずmakefileが見つかりません.停止します.make[1]:ディレクトリ`/home/LinuxProject/u-boot/u-boot-2010.03/board/samsung/smdk 6410'make:***[board/samsung/smdk 6410/libsmdk 6410 a]エラー2
smdk 6400をコピーしていますが、中のファイルを少し修正しなければなりませんよ~~smdk 6400をsmdk 6410に変更します
cd board/samsung/cp smdk6400 smdk6410 -rf cd smdk6410/
変更
smdk6400.c
を選択します.
smdk6410.c
開く
smdk6410.c
ヘッダーファイルの変更
#include
を選択します.
#include
そう、このヘッダファイルはありません.後で自分でコピーします.相変わらずコピーです.
s3c6400.h cp include/asm-arm/arch-s3c64xx/s3c6400.h include/asm-arm/arch-s3c64xx/s3c6410.h
ここでなぜコピーしたパスがasm/archではないのか分析編を見てくださいmake smdk 6410_configの場合.パラメータに基づいてソフト接続が確立されますが,最後にこのディレクトリです
このディレクトリの下の他のファイルもこのヘッダファイルがあるかどうかを見なければなりません.修正する必要がありますよ~~~
よし.最后にMakefileを修正する必要があります.コンパイルエラーではlibsmdk 6410.aこれは...対滴..Makefileのsmdk 6400.oをsmkd 6410.oに変更する必要があります
ソースファイルの名前が変わったので...
Makeのコンパイルを続けましょう~~~
やれやれ..また间违って...これは何ですか?cpuがありませんinit.oライブラリ?
このカタログに直接入ってみましょう
arm-linux-ld: cannot find cpu/arm1176/s3c64xx/cpu_init.o
Makefileを直接開いて何を見つけた?COBJS-$(CONFIG_S3C6400) += cpu_init.o speed.o
条件コンパイルしてくれるなんて~~~でも違うよ...CONFIG_S 3 C 6400は定義されていますね.include/configs/smdk 6410.hにあります.なぜコンパイルされていませんか.
ハハ~~実はボードレベルmake smdk 6410を再選択すればconfig config.mkの再生成
コンパイルを続けます....やはり间违いがあります~~~気が狂っていませんか?焦らないで、早くしろよ~~~
make -C nand_spl/board/samsung/smdk 6410 all make[1]:ディレクトリ`/home/LinuxProject/u-boot/u-boot-2010.03/nand_spl/board/samsung/smdk 6410'make[1]:***ターゲット「all」を作成するルールはありません.停止します.make[1]:ディレクトリを離れている`/home/LinuxProject/u-boot/u-boot-2010.03/nand_spl/board/samsung/smdk 6410'make:***[nand_spl]エラー2
この问题は简単でしょう....もちろんこのディレクトリがありません...やはりコピーしましょう
cp nand_spl/board/samsung/smdk6400 nand_spl/board/samsung/smdk6410 -rf cd nand_spl/board/samsung/smdk6410/
ヘッダーファイルの修正を続け、Makefileとファイル名があるんだよね...そう...賢い~~~
中に入ってみると...バカ?何も修正することはありません....では、変更しないでください~~~コンパイルを続けましょう...
ああ~~よし....uboot.binをコンパイルした
楽しいでしょう~~~今日の教程はここまで...私达はすでに目的を达成しました.いったいどのように私达の必要な目标を追加して、および目标のコンパイル、どのファイルを修正する必要があって、どのディレクトリを追加する必要があります..
ここでまとめます.
1:Makefileの変更->クロスコンパイラ->smdk 6410の追加configターゲット2:configs/smdk 6410.hヘッダファイルを追加3:board/samsung/smdk 6410ディレクトリを追加し、そのディレクトリ内ファイルを変更し、Makefile 4:include/asm-arm/arch-s 3 c 64 xx/s 3 c 6410.hヘッダファイルを追加5:nand_を追加spl/board/samsung/smdk 6410ディレクトリ
最后にコンパイルに成功しました....终わりました...
次は、第1段階nand起動サポート
Finish!
Thanks a lot.