Software/Android
Software/Android/bc9
Software/Android/bc9/kernel(1/2)

Android 対応にした kernel を含む gumstix 用 Linux 環境の作成2

本体内 FlashROM へのファイルの配置

シリアルケーブル経由で system イメージファイルと kernel イメージファイルを転送し、本体内 FlashROM に書き込みます。
シリアルケーブルを使った build マシンとの接続の設定は以下を参照して下さい。

起動時に キーを押して U-BOOT へ入ります。

U-Boot 1.2.0 (Dec 21 2007 - 13:37:16) - PXA270@600 MHz - 1578M
 
*** Welcome to Gumstix ***
 
DRAM:  128 MB
Flash: 32 MB
Using default environment
 
Hit any key to stop autoboot:  0

Linux の起動へ進まず以下のプロンプトになっていれば OK です。

GUM>

RAM の a2000000 に転送したファイルを受信する設定をします。

GUM> loadb a2000000

Ctrl+\ の後 c で kermit のシリアル接続から一旦抜け、kermit 上で送信します。

C-Kermit> cd ~/gumstix/gumstix-oe/tmp/deploy/glibc/images/gumstix-custom-verdex/
C-Kermit> send gumstix-basic-image-gumstix-custom-verdex.jffs2

送信中は以下のように転送状況が表示されます。

C-Kermit 8.0.211, 30 Mar 2008, localhost
 
 
 
Current Directory: /home/beat/gumstix/gumstix-oe/tmp/deploy/glibc/images/
Communication Device: /dev/ttyUSB0
Communication Speed: 115200
Parity: none
RTT/Timeout: 01 / 02
SENDING:  => GUMSTIX-BASIC-IMAGE-GUMSTIX-CUSTOM-VERDEX.JFFS2
File Type: BINARY
File Size: 7491192
Percent Done: 2   /
...10...20...30...40...50...60...70...80...90..100
Estimated Time Left: 00:13:32
Transfer Rate, CPS: 8963
Window Slots: 1 of 1
Packet Type: D
Packet Count: 68
Packet Length: 4096
Error Count: 0
Last Error:
Last Message:
 
 
X to cancel file, Z to cancel group,  to resend last packet,

E to send Error packet, ^C to quit immediately, ^L to refresh screen.

送信が完了するとプロンプトに戻るので、再度接続します。

GUM> connect

ブートローダーの領域だけ保護し、Frash の全領域をクリア。

GUM> protect on 1:0-1
GUM> erase all

転送済みの system イメージを FlashROM へ書き込みます。

GUM> cp.b a2000000 40000 ${filesize} ←ここには転送時に環境変数へ登録されたファイルサイズが自動的にはいります。

書き込み終わったら今度は kernel イメージを受信できるよう再度設定。

GUM> loadb a2000000

Ctrl+\ 、 c で kermit のシリアル接続からまた抜けて、kermit 上で送信を実行します。

C-Kermit> send uImage-2.6.24-r1-gumstix-custom-verdex.bin

送信が完了しプロンプトに戻ったら再度接続します。

C-Kermit> connect

kernel 保存領域へ書き込みます。

GUM> katinstall 100000

kernel をメモリへ読み込んで起動します。

GUM> katload 100000
GUM> bootm

初回の起動時には jffs2 の展開や ssh key の生成が行われるため root fs を remount してから起動しきるまでやや時間がかかります。
2回目以降は5秒ほどで起動します。
標準の kernel と違いサイズを小さくするために driver の多くを module 化しているので、
初回の起動後本体の userland 上へ kernel module パッケージを展開してインストールする必要があります。
まず build マシンへ USB フラッシュメモリを挿してモジュールをコピーし、

$ cd ~/gumstix/gumstix-oe/tmp/deploy/glibc/images/
$ cp modules-2.6.24-r1-gumstix-custom-verdex.tgz /media/disk/

次に USB フラッシュメモリを gumstix に挿して gumstix上へモジュールを展開します。

root@gumstix-custom-verdex:~$ tar -C / -zxvf /media/hdd/modules-2.6.24-r1-gumstix-custom-verdex.tgz

いくつかの module は最初から起動時に load されるようになっていますが、pxafb のモジュールは設定されていないので
起動するたびに modprobe しなくて済むよう、設定します。

root@gumstix-custom-verdex:~$ vi /etc/modutils/pxafb
pxafb (とだけ書いて保存)
root@gumstix-custom-verdex:~$ vi /etc/modutils/fbcon
fbcon (とだけ書いて保存)
root@gumstix-custom-verdex:~$ update-modules

Android 対応の確認

この kernel と userland で起動し、標準の kernel には存在しない ashmem や logger の初期化が行われていることを確認します。
起動メッセージ内に以下の項目が含まれていれば OK です。

ashmem: initialized
logger: created 64K log 'log_main'
logger: created 256K log 'log_events'
logger: created 64K log 'log_radio'

フレームバッファ描画の確認

変更を加えた pxafb が正常に動作するか確認します。
まず起動時 LCD にログインプロンプトが表示されるのを確認。
ログインしたら lsmod で pxafb や fbcon が読み込まれていることを確認。

root@gumstix-custom-verdex:~$ lsmod
Module                  Size  Used by
i2c_dev                 6052  0 
mousedev               11528  0 
i2c_pxa                 6080  0 
ipv6                  244040  10 
vfat                    9824  0 
fat                    46076  1 vfat
nls_base                6432  2 vfat,fat
tsc2003                 7632  0 
i2c_core               18928  3 i2c_dev,i2c_pxa,tsc2003
pxamci                  6816  0 
pxafb                  11144  1 [permanent]
cfbcopyarea             2976  1 pxafb
cfbimgblt               2496  1 pxafb
cfbfillrect             3488  1 pxafb
pxa2xx_cs               3368  1 
pxa2xx_core            10368  1 pxa2xx_cs
proc_gpio               4492  0 
pcmcia                 26536  0 
pcmcia_core            30704  2 pxa2xx_core,pcmcia
firmware_class          7424  1 pcmcia
ohci_hcd               20100  0 
usbcore               122452  2 ohci_hcd
mmc_block              10244  0 
mmc_core               46260  2 pxamci,mmc_block
fbcon                  40312  65 
tileblit                2272  1 fbcon
font                    4384  1 fbcon
bitblit                 4576  1 fbcon
fbcon_rotate            2336  1 bitblit
fbcon_cw                4928  1 fbcon_rotate
fbcon_ud                5024  1 fbcon_rotate
fbcon_ccw               5120  1 fbcon_rotate
softcursor              1600  4 bitblit,fbcon_cw,fbcon_ud,fbcon_ccw
fb                     32208  8 pxafb,fbcon,tileblit,bitblit,fbcon_cw,fbcon_ud,fbcon_ccw,softcursor
evdev                   8512  0 
smc911x                18753  0 
gumstix_smc911x         2688  1 smc911x
mii                     4768  1 smc911x

正しく読み込まれていたら df_dok を起動して LCD に DirectFB が正しく描画していることを確認して下さい。


by 大塚聡史

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