[[bc10]] - 目次 #contents * 概要 [#ufb4d583] 2010/09/06~ bc10向けu-bootについて、情報をまとめてあります。~ u-bootはbc10起動時に実行される2段目のブートローダです。~ bc10のブートプロセスやu-bootの配置方法についての情報は[[bc10/booting]]を参照してください。~ * u-bootのビルド [#f39c5a2c] 2010/12/21~ ** 開発環境 [#c8ee63f6] 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-) ** 環境変数の設定 [#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 ** ビルド [#v2d35c38] OpenEmbedded toolchainを使用してクロスビルドします。~ cd u-boot-bc10 make mrproper make omap3_bc10_config make ビルドに成功すると''u-boot.bin''が生成されます。~ u-boot.binの配置方法については[[bc10/booting]]を参照してください。~ ** ソースコードのアップデート [#i48f7159] 機能の追加や修正などでソースコードが更新された場合は、更新分のみを取得するだけでかまいません。~ cd u-boot-bc10/ git pull ソースコードをアップデートした後は、リビルドしてu-boot.binを置き換えてください。~ * ソースコードリポジトリについて [#vb4b8c08] 2010/12/21~ 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 -- bc10向けリリースブランチ - develop -- bc10向け開発ブランチ - build -- *削除予定* (bc10向けビルド用ブランチ) bc10で動作するu-boot.binをビルドするには、masterブランチを使用してください。~ ~ developブランチは機能追加時の試験などのために利用されています。~ 常に最新の実装がなされていますが、うまく動作しない場合もあるので、通常はmasterブランチを使用してください。~ ~ buildブランチはbc10のMACH_TYPE番号が公式に追加されるまで、一時的なビルド用ブランチとして存在していました。~ 現在は公式にbc10のMACH_TYPEがサポートされたので、buildブランチの更新は停止しています。~ 将来、削除される可能性がありますので、buildブランチは使用しないでください。~ この問題の詳細については、カーネルソースに含まれる 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などの一般的なシェル環境と同じようにコマンドを実行することができます。~ bootコマンドの実体が、環境変数bootcmdの実行だったことを考えると、環境変数の操作ができれば起動時の動作を制御できることがわかります。~ ~ printenvコマンドを使用すると、環境変数とその内容の一覧が表示されます。~ setenvコマンドを使用すると、環境変数の値を設定することができます。~ ~ 実行可能なコマンド一覧を表示するには ? コマンドを使用します。~ # ? * 参考 [#v475e638] 2010/07/05 - [[U-Boot (www.denx.de):http://www.denx.de/wiki/U-Boot/WebHome]]