[[bc10]] - 目次 #contents * 概要 [#ufb4d583] 2010/09/06~ bc10向けu-bootについて、情報をまとめてあります。~ u-bootはbc10起動時に実行される2段目のブートローダです。~ bc10のブートプロセスやu-bootの配置方法についての情報は[[bc10/booting]]を参照してください。~ * 開発環境 [#c8ee63f6] 2010/07/09~ bc10向けtoolchainを準備します。~ 以下のtoolchainでビルドを確認しています。~ - [[OpenEmbedded Linux toolchain>bc10/OpenEmbedded Linux]](arm-angstrom-linux-gnueabi-) -- BeagleBoard向け開発環境として使われているOpenEmbedded Linuxのtoolchain - [[rowboat toolchain>bc10/rowboat]](arm-eabi-) -- OMAP35x向けAndroidプロジェクトのrowboatで使われているtoolchain - CodeSourcery arm GNU/Linux toolchain(arm-none-linux-gnueabi-) * u-bootのビルド [#f39c5a2c] 2010/12/15~ ** 環境変数の設定 [#ue4ceed3] *** OpenEmbedded toolchain [#gacba58c] 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 [#a74f72a3] 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- ** ソースコードの入手 [#ef09808f] 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 ** ビルド [#v2d35c38] OpenEmbedded toolchainを使用してクロスビルドします。~ make mrproper make omap3_bc10_config make ビルドに成功するとu-boot.binが生成されます。~ u-bootの配置方法についての情報は[[bc10/booting]]を参照してください。~ ** ソースコードのアップデート [#i48f7159] 機能の追加や修正などでソースコードが更新された場合は、更新分のみを取得するだけでかまいません。~ cd u-boot-bc10/ git checkout build git pull ソースコードをアップデートした後は、リビルドしてu-boot.binを置き換えてください。~ * ソースコードリポジトリについて [#vb4b8c08] 2010/12/16~ u-boot-bc10のソースコードはGitoriousで管理しています。~ - プロジェクトページ -- http://gitorious.org/bc10/u-boot-bc10 - リポジトリ -- git://gitorious.org/bc10/u-boot-bc10.git ** ブランチ [#i48a9b1e] u-boot-bc10リポジトリには、以下の3つのブランチがあります。~ - master -- 派生元masterブランチのクローン - develop -- bc10向け開発ブランチ - build -- bc10向けビルド用ブランチ bc10で動作するu-boot.binをビルドするには、buildブランチを使用してください。~ ~ developブランチは開発ブランチとして、常に最新の状態に更新されていますが、MACH_TYPE番号の更新が公式におこなわれるまで、そのままではビルドできません。~ そのため、buildブランチではMACH_TYPE番号を追加して、すぐにビルド可能な状態にしています。~ buildブランチの内容は常に「developブランチの内容 + MACH_TYPE番号の独自追加」という状態です。~ この問題の詳細については、カーネルソースに含まれる Documentation/arm/README を参照してください。~ ** 派生元 [#keb02eab] u-boot-bc10のソースコードは、DENXのU-Bootリポジトリからcloneし、bc10向けに改造したものです。~ - DENX U-Boot URL -- http://www.denx.de/wiki/U-Boot - リポジトリ -- git://git.denx.de/u-boot.git - ブランチ -- master * 詳細解説 [#w2506b9f] 2010/12/16~ ** U-Bootの基本動作 [#rf7028cd] U-Bootの基本的な動作と、動作のカスタマイズ方法について説明します。~ ~ U-BootにはHushというシェルが組み込まれており、シェルスクリプトやコマンドラインで動作を制御することができます。~ 動作のカスタマイズはこのHushを通じておこなうことになります。~ *** 起動シーケンス [#i7e72136] U-Bootは起動すると、数秒の待機のあと、自動的にbootコマンドを実行します。~ ただし、この待機中にユーザから何らかのキー入力があれば、プロンプトが表示され、コマンドラインからの制御ができるようになります。~ この場合、bootコマンドは自動実行されません。~ ~ +------+ +------+ 入力なし +------------------+ | 起動 |------>>| 待機 |----------->>| bootコマンド実行 | +------+ +------+ +------------------+ | | 入力あり +--------------------+ +-------------->>| コマンドライン制御 | +--------------------+ *** bootコマンドの動作 [#q590cfb0] 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コマンドは、引数に指定された変数の内容をスクリプトとして実行するコマンドです。~ *** コマンドラインによる制御 [#p53e5091] Hushのプロンプトが表示され、bashなどの一般的なシェル環境と同じようにコマンドを実行することができます。~ 実行可能なコマンド一覧を表示するには ? コマンドを使用します。~ # ? * 参考 [#v475e638] 2010/07/05 - [[U-Boot (www.denx.de):http://www.denx.de/wiki/U-Boot/WebHome]]