bc10

概要

2010/12/22

bc10向けLinux kernel-2.6.32について、情報をまとめてあります。
このKernelはrowboatプロジェクトのKernelをベースにして、bc10固有のデバイスドライバなどが追加されたものです。
bc10のブートプロセスやKernelイメージの配置方法についての情報はbc10/bootingを参照してください。

kernel-2.6.32のビルド

2010/12/22

開発環境

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

  • OpenEmbedded Linux toolchain(arm-angstrom-linux-gnueabi-)
    • BeagleBoard向け開発環境として使われているOpenEmbedded Linuxの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-

ソースコードの入手

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

git clone git://gitorious.org/~bc-dev/rowboat/bc10-rowboat-kernel.git bc10-rowboat-kernel

ブランチの切り替え

bc10向けのブランチに切り替えます。

cd bc10-rowboat-kernel/
git checkout -t -b bc10-2.6.32 origin/bc10-2.6.32

ビルド

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

make omap3_bc10_defconfig
make uImage

ビルドに成功するとuImage(kernelイメージファイル)が、以下の場所に生成されます。

  • kernelイメージ
    • arch/arm/boot/uImage

uImageの配置方法についてはbc10/bootingを参照してください。

modulesについて

bc10-rowboat-kernelはデバイスドライバなどのほとんどを組み込みに設定しており、modulesの配置をおこなわなくても基本的には問題ありません。
特に、bc10でAndroidを起動する場合はmodulesの使用を前提としていないため、以下の作業は必要ありません。
OpenEmbeddedを起動する場合は、modulesがインストールされていない場合には警告が出るため、念のためインストールしておいてもよいでしょう。

Kernel modulesは以下のようにビルドします。

make modules

続いて、modulesをインストールします。
ここでは後で自由に配置できるように、カレントディレクトリにmodworkというディレクトリを新規作成し、そこにインストールします。
インストール先が決まっている場合は、INSTALL_MOD_PATHの値をインストールパスに置き換えてください。

make DEPMOD=echo INSTALL_MOD_PATH=modwork modules_install
arm-angstrom-linux-gnueabi-depmod-2.6 -A -b ./modwork/ -F ./System.map `make kernelrelease`

これで./modwork以下にmodulesがインストールされました。
以下のように圧縮しておくと、Targetのuserlandで展開するなど、作業時に扱いやすくなります

tar czvf modules.tgz -C ./modwork/ lib

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

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

cd bc10-rowboat-kernel/
git checkout bc10-2.6.32
git pull

ソースコードをアップデートした後は、リビルドしてuImageなどを置き換えてください。

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

2010/12/22

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

ブランチ

bc10-rowboat-kernelリポジトリには、多数のブランチがあります。
その中でもbc10向けのブランチとして、以下の3つがあります。

  • bc10-2.6.32
    • bc10向けリリースブランチ
  • bc10-2.6.32-develop
    • bc10向け開発ブランチ
  • bc10-2.6.32-build
    • *削除予定* (bc10向けビルド用ブランチ)

bc10で動作するuImageをビルドするには、bc10-2.6.32ブランチを使用してください。

bc10-2.6.32-developブランチは機能追加時の試験などのために利用されています。
常に最新の実装がなされていますが、うまく動作しない場合もあるので、通常はbc10-2.6.32ブランチを使用してください。

bc10-2.6.32-buildブランチはbc10のMACH_TYPE番号が公式に追加されるまで、一時的なビルド用ブランチとして存在していました。
現在は公式にbc10のMACH_TYPEがサポートされたので、bc10-2.6.32-buildブランチの更新は停止しています。
将来、削除される可能性がありますので、bc10-2.6.32-buildブランチは使用しないでください。
この問題の詳細については、カーネルソースに含まれる Documentation/arm/README を参照してください。

派生元

bc10-rowboat-kernelのソースコードは、rowboat kernelリポジトリをcloneし、bc10向けに改造されたものです。

詳細解説

2010/12/22

Kernelの起動時オプション

Kernelの起動時に設定可能なオプションについて説明します。
Kernelにオプションを渡す方法としては、U-Bootの環境変数bootargsに指定する方法が一般的です。
詳細はbc10/u-bootを参照してください。

omapdss.def_disp

出力するディスプレイを選択することができます。
bc10では、以下の2つが選択可能です。

  • lcd
    • AMOLED(有機ELディスプレイ)出力
  • dvi
    • DVI出力

例)AMOLED出力を選択

omapdss.def_disp=lcd

このオプションの詳細についてはKernelソースツリーのDocumentation/arm/OMAP/DSSを参照してください。

omapfb.mode

ディスプレイの解像度を設定することができます。
設定はディスプレイごとに可能ですが、bc10に搭載されているAMOLEDの解像度は480x272で固定になっています。
したがって、実際にはDVI出力向けのオプションとなっています。

例)DVI出力の解像度を1024x768の24bitカラー、リフレッシュレート60Hzに設定

omapfb.mode=dvi:1024x768MR-24@60

このオプションの詳細についてはKernelソースツリーのDocumentation/arm/OMAP/DSSを参照してください。


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2010-12-24 (金) 14:53:21 (4866d)