[[labs.beatcraft.com]]~
[[bc9/Software/Android/kernel2.6.29]]~

#contents

* kernel 2.6.29-bc9-r7 への更新手順 [#t155b1cc]
bc9 の kernel を 2.6.29-bc9-r7 へ更新する手順を記載します。~

** kernel 2.6.29-bc9-r7 での主な変更点 [#s0147580]
- 加速度センサー、地磁気センサー、方位センサー(※)、用の driver を追加~
bc9 ベースボード上の加速度センサー、地磁気センサー、方位センサーを使用する場合は~
この kernel version への更新が必須となります。~
~
※ 方位センサの pitch, roll の値はまだ調整中のため、Java から取得しても常に 0 が出力されます。~


** Android kernel source の取得 [#f77510dc]
以下のようにして Android 用変更が施された kernel source を取得します。~
 $ mkdir kernel_work
 $ cd kernel_work
 $ git clone git://android.git.kernel.org/kernel/common.git android_kernel
 $ cd android_kernel
 $ git checkout --track -b android-2.6.29 origin/android-2.6.29

** patch の適用 [#g1f86391]
添付の &ref(patch-kernel-2.6.29.4-bc9-r7.tar.gz); をダウンロードして展開します。~
 $ tar xvfz patch-kernel-2.6.29.4-bc9-r7.tar.gz

22 の patch ファイルと patch 適用のための shell script が含まれています。~
 $ cd patch-kernel-2.6.29.4-bc9-r7
 $ ls 
 01-minimum.patch    09-mmc-mfp.patch         17-ucb1400-adc.patch
 02-lcd.patch        10-i2c-fastmode.patch    18-tsc2003-calibration.patch
 03-tsc.patch        11-mtd-devname.patch     19-ucb1400-mma7260qt.patch
 04-usb.patch        12-mod-bc9-keys.patch    20-fix-bc9-leds.patch
 05-proc-gpio.patch  13-bc9-config.patch      21-hmc5843.patch
 06-gpio-keys.patch  14-bc9-leds.patch        22-ucb1400-mma7260qt-non-spinlock.patch
 07-ac97.patch       15-rtc-ds1374.patch      patch-all.sh
 08-ac97-gpio.patch  16-bc9-usb-config.patch

patch-all.sh は kernel source tree のトップディレクトリで実行するようになっていますので、~
以下のようにして実行します。
 $ cp * ~/kernel_work/android_kernel/
 $ cd ~/kernel_work/android_kernel/
 $ ./patch-all.sh
patch 適用完了後、patch 済みであることが分かりやすいよう、ディレクトリをリネームしておきます。
 $ cd ..
 $ mv android_kernel linux-android-2.6.29-bc9-r7

**kernel build の準備[#n4ee3b09]
kernel を bc9用に cross build するため以下のような script を用意し、これを source して~
bitbake で生成された cross toolchain へ path を通します。~
 #!/bin/sh
 
 export PATH=/home/beat/gumstix/gumstix-oe/tmp/cross/bin:$PATH
 export ARCH=arm
 export CROSS_COMPILE=arm-angstrom-linux-gnueabi-

 $ source setup_kernel_build.sh

** kernel ビルド [#hbfb4438]
patch 適用作業の完了後、添付の &ref(bc9-r7_android_static_defconfig); を .config としてコピーし、~
その後 添付の &ref(make-bc9-kernel.sh); をダウンロードして kernel source top ディレクトリで実行します。~
 $ cd linux-android-2.6.29-bc9-r7
 $ cp bc9-r7_android_static_defconfig .config
 $ ./make-bc9-kernel.sh
build が正常に終了すると、標準の make を実行した場合に得られるファイルの他に以下の二つのファイルが得られます。
 modules-2.6.29-bc9-r7.tgz
 uImage-bc9-2.6.29-bc9-r7.bin

上記のファイルを [[bc9/bc9-boot-microsd-image--release20090815-fix設定手順]] ~
に従って作成した microSD に以下のようにコピーします。~
microSD の第1パーティションが作業用PC の /media/disk に、第2パーティションが作業用PC の /media/disk-1 に~
マウントされた状態で作業します。

** uImageのコピー [#a27b900d]
ビルド完了後できた uImage-2.6.29-bc9-r7.bin を microSD の第1パーティション(FAT16)にある uimage と置き換えます。~
 $ sudo cp uImage-2.6.29-bc9-r7.bin /media/disk/uimage

** modules の展開 [#d55110db]
次に kernel module を microSD の第2パーティション(ext2)に展開します。
次に kernel module を microSD の第2パーティション(ext3)に展開します。
 $ sudo cd /media/disk-1
 $ tar xvfz ~/kernel_work/linux-android-2.6.29-bc9-r7/modules-2.6.29-bc9-r7.tgz
/lib/modules/2.6.29-bc9-r7 以下に展開されたことを確認して下さい。

**2.6.29-bc9-r7 kernel で起動 [#l0f34bf6]
上記で用意できた microSD を bc9 の microSD スロットに挿して電源を入れると、~
LCD に linux の 起動logo が表示され 2.6.29-bc9-r7 kernel が起動します。~
以前の 2.6.29-bc9-r7 との違いは、起動後 /dev の下に以下の二つのデバイスファイルが新たに追加されています。~
-accelerometer
-compass~

~
以上で 2.6.29-bc9-r7 kernel への更新は完了です。
-----------------
RIGHT:by 大塚聡史

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS