bc10

概要

2010/09/06

bc10向けu-bootについて、情報をまとめてあります。
u-bootはbc10起動時に実行される2段目のブートローダです。
bc10のブートプロセスやu-bootの配置方法についての情報はbc10/bootingを参照してください。

u-bootのビルド

2010/12/15

開発環境

bc10向けtoolchainを準備します。
以下のtoolchainでビルドを確認しています。

環境変数の設定

OpenEmbedded toolchain

OpenEmbeddedのtoolchainを利用するには、あらかじめOpenEmbedded開発環境をインストールしておく必要があります。
OpenEmbedded開発環境のインストールについては、bc10/OpenEmbedded Linuxを参照してください。
toolchainを使用するために、環境変数を以下のように設定します。

export PATH=${WORK_DIR}/OE/angstrom-dev/cross/armv7a/bin:${PATH}
export ARCH=arm
export CROSS_COMPILE=arm-angstrom-linux-gnueabi-

rowboat toolchain

rowboatのtoolchainを利用するには、あらかじめrowboat開発環境をインストールしておく必要があります。
rowboat開発環境のインストールについては、bc10/rowboatを参照してください。
toolchainを使用するために、環境変数を以下のように設定します。

export PATH=${WORK_DIR}/rowboat-eclair-dsp/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:${PATH}
export ARCH=arm
export CROSS_COMPILE=arm-eabi-

ソースコードの入手

gitリポジトリからソースコードを入手します。

git clone git://gitorious.org/bc10/u-boot-bc10.git u-boot-bc10

ビルドをおこなうために、buildブランチに切り替えます。

cd u-boot-bc10
git checkout -t -b build origin/build

ビルド

OpenEmbedded toolchainを使用してクロスビルドします。

make mrproper
make omap3_bc10_config
make 

ビルドに成功するとu-boot.binが生成されます。
u-bootの配置方法についての情報はbc10/bootingを参照してください。

ソースコードのアップデート

機能の追加や修正などでソースコードが更新された場合は、更新分のみを取得するだけでかまいません。

cd u-boot-bc10/
git checkout build
git pull

ソースコードをアップデートした後は、リビルドしてu-boot.binを置き換えてください。

ソースコードリポジトリについて

2010/12/16

u-boot-bc10のソースコードはGitoriousで管理しています。

ブランチ

u-boot-bc10リポジトリには、以下の3つのブランチがあります。

bc10で動作するu-boot.binをビルドするには、buildブランチを使用してください。

developブランチは開発ブランチとして、常に最新の状態に更新されていますが、MACH_TYPE番号の更新が公式におこなわれるまで、そのままではビルドできません。
そのため、buildブランチではMACH_TYPE番号を追加して、すぐにビルド可能な状態にしています。
buildブランチの内容は常に「developブランチの内容 + MACH_TYPE番号の独自追加」という状態です。
この問題の詳細については、カーネルソースに含まれる Documentation/arm/README を参照してください。

派生元

u-boot-bc10のソースコードは、DENXのU-Bootリポジトリからcloneし、bc10向けに改造したものです。

詳細解説

2010/12/16

U-Bootの基本動作

U-Bootの基本的な動作と、動作のカスタマイズ方法について説明します。

U-BootにはHushというシェルが組み込まれており、シェルスクリプトやコマンドラインで動作を制御することができます。
動作のカスタマイズはこのHushを通じておこなうことになります。

起動シーケンス

U-Bootは起動すると、数秒の待機のあと、自動的にbootコマンドを実行します。
ただし、この待機中にユーザから何らかのキー入力があれば、プロンプトが表示され、コマンドラインからの制御ができるようになります。
この場合、bootコマンドは自動実行されません。

  +------+        +------+ 入力なし    +------------------+
  | 起動 |------>>| 待機 |----------->>| bootコマンド実行 |
  +------+        +------+             +------------------+
                      |
                      | 入力あり       +--------------------+
                      +-------------->>| コマンドライン制御 |
                                       +--------------------+

bootコマンドの動作

bootコマンドは、環境変数bootcmdに設定された内容を実行します。
環境変数bootcmdはデフォルトで以下のように設定されています。(本来は一行ですが、読みやすさのために改行しています)

if mmc init; then 
    if run loadbootscript; then 
        run bootscript; 
    else 
        if run loaduimage; then 
            run mmcboot; 
        else 
            run nandboot; 
        fi; 
    fi; 
else 
    run nandboot; 
fi

mmcコマンドはMicroSDを操作するためのコマンドです。
runコマンドは、引数に指定された変数の内容をスクリプトとして実行するコマンドです。

コマンドラインによる制御

Hushのプロンプトが表示され、bashなどの一般的なシェル環境と同じようにコマンドを実行することができます。
実行可能なコマンド一覧を表示するには ? コマンドを使用します。

# ?

参考

2010/07/05


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS