2011年2月7日月曜日

ODROID-7のU-BOOTをビルド

まず手始めはU-BOOTのビルド方法です。

一応、こちらに手順が書かれています。
http://dev.odroid.com/projects/odroid-t/wiki/UbootPage

が、手順どおり実施してもうまくいかなかったので試行錯誤してなんとかなったことを書いときます。
(※環境はUbuntu 10.04です。以降も同じです。)
  1. ツールチェインのダウンロードと設定
    http://www.codesourcery.com/sgpp/lite/arm/portal/release1600
    より、「IA32 GNU/Linux TAR版」をダウンロードします。
    適当なディレクトリを作成して展開します。
    $ sudo mkdir /opt/toolchains
    $ sudo tar xjvf arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt/toolchains
    (※一行で続いています。ちなみにtarの-Cオプションは展開先ディレクトリ指定ですね。)
    コマンドラインで利用できるように.bashrcを編集しパスを通します。
    $ vi ~/.bashrc
    PATH=$PATH:/opt/toolchains/arm-2010.09/bin
    (この1行を末尾に追加して保存して閉じます)
    $ source ~/.bashrc
    これで例えば
    $ arm-none-linux-gnueabi-gcc -v
    ※コマンド見つからんエラーではなく、gccのバージョン情報などが出てくれば成功。
  2. u-bootのソースコードをダウンロード
    http://dev.odroid.com/projects/odroid-t/download/note/38
    ここからodroid用の最新版ソースを入手し、適当な場所に展開します。ダウンロードされたファイル名はodroid-c110-uboot_20100727.tar.gzでした。
    (ubootというディレクトリに展開されます。)
  3. u-bootのビルド
    手順の通りやってみたところ
    $ cd uboot
    $ make mrproper
    $ make hkdkc110_mmc_config
    $ make
    ...
    /usr/local/arm/4.3.1-eabi-armv6/usr/bin/arm-linux-gcc:コマンドが見つかりませんでした。
    ...(※ビルド失敗)
    失敗してしまいました。
    えーと、確か先ほどのツールチェインにはarm-none-linux-gnueabi-xxxコマンドがインストールされているはずです。
  4. ubootビルドのリトライ
    一応デフォルトのビルドオプションを確認してみると
    $ grep /usr/local *
    Makefile:#CROSS_COMPILE = /usr/local/arm/4.4.1-eabi-cortex-a8/usr/bin/arm-linux-
    Makefile:#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
    Makefile:CROSS_COMPILE = /usr/local/arm/4.3.1-eabi-armv6/usr/bin/arm-linux-
    と出てきました。CROSS_COMPILEという環境変数を置き換えてやれば良さそうですね。
    ということでリトライ
    $ CROSS_COMPILE=arm-none-linux-gnueabi- make
    ...
    ERROR: undefined reference to `__aeabi_unwind_cpp_pr0
    ...※コンパイルエラーで失敗。
    駄目みたいですね。
  5. 正しいツールチェインを探してくる
    http://dev.odroid.com/projects/odroid-t/download/note/30
    ここに4.3.1-eabi.tar.gzという、それっぽいものが置いてあります。
    ダウンロードして適切な場所に展開します。
    $ sudo mkdir /usr/local/arm/
    $ sudo tar xvzf 4.3.1-eabi.tar.gz -C /usr/local/arm
    ここでしか使わないのでパスは特に通したりしなくてもよいです。
  6. u-bootのビルド(三度目の正直)
    というわけで
    $ make mrproper
    $ make hkdkc110_mmc_config
    $ make
    ※ビルドが正常に終了
    見事にu-boot.binが作成されましたね。

0 件のコメント:

コメントを投稿