電脳羊(Android Dream)

アクセスカウンタ

help RSS Panda BoardでAndroid

<<   作成日時 : 2011/08/29 22:29   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

久しぶりにビルドと設定したので、防備録がてらに手順を書いておきます。

画像


基本はSolaさんのサイトの手順通り。
http://blog.sola-dolphin-1.net/archives/3173852.html
少し補足しておきます。

(1)ソースコード取得
(2)kernel のビルド
(3)Android のビルド
(4)rootfs の作成
(5)GFX_Binaries_を組み込む

ここまでは、サイトの手順通りにやれば問題ないはずです。

(6)SDカードのパーティションとフォーマット
注意:英語環境で環境構築している方は読み飛ばして下さい。
ーーーーーここからーーーーーーーーー
$ wget http://android-development-environment.googlecode.com/files/mksdcard_panda.sh
で取得するスクリプトは日本語環境ではエラーになります。
11行目を修正
SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

SIZE=`fdisk -l $DRIVE | grep ディスク | awk '{print $5}'`
ーーーーーここまでーーーーーーーーー

$ chmod a+x mksdcard_panda.sh
$ sudo ./mksdcard_panda.sh /dev/sdx
デバイスファイルは実行環境に合わせて修正して下さい(我が家ではsde)
以下のようにパーティションの作成とフォーマットがされるはずです。
ーーーーーここからーーーーーーーーー
1024+0 記録始め
1024+0 記録終わり
1048576 バイト (1.0 MB) コピー終了, 42.8687 s, 24.5 kB/s
ディスク /dev/sde は正常なパーティションテーブルを含んでいません
DISK SIZE - 4059037696 bytes
CYLINDERS - 493
現在、誰もこのディスクを使っていないかを調べます...
OK

ディスク /dev/sde: シリンダ数 493、ヘッド数 255、63 セクタ/トラック

sfdisk: エラー: セクタ 0 には msdos シグニチャがありません
/dev/sde: 認識できないパーティション領域タイプ
古い場面:
パーティションが見つかりません
新たな場面:
ユニット = 8225280 バイトのシリンダ、1024 バイトのブロック、0 から数えます

デバイス ブート 始点 終点 #シリンダ #ブロック Id システム
/dev/sde1 * 0+ 10 11- 88326 c W95 FAT32 (LBA)
/dev/sde2 11 178 168 1349460 b W95 FAT32
/dev/sde3 179 346 168 1349460 83 Linux
/dev/sde4 0 - 0 0 0 空
新たなパーティションの書き込みに成功

パーティションテーブルを再読み込み中...

もし、DOS パーティションを作成または変更したならば -- たとえば /dev/foo7 、
dd(1) をつかって最初の 512 バイトをゼロにして下さい:
dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(詳細は fdisk(8)を見てください。)
mkfs.vfat 3.0.7 (24 Dec 2009)
mkfs.vfat 3.0.7 (24 Dec 2009)
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=rootfs
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
84480 inodes, 337365 blocks
16868 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=348127232
11 block groups
32768 blocks per group, 32768 fragments per group
7680 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
ーーーーーここまでーーーーーーーーー

FDISKで確認します。
$ sudo fdisk /dev/sde

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
強く推奨します。 and change display units to
sectors (command 'u').

コマンド (m でヘルプ): p

ディスク /dev/sde: 4059 MB, 4059037696 バイト
ヘッド 255, セクタ 63, シリンダ 493
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

デバイス ブート 始点 終点 ブロック Id システム
/dev/sde1 * 1 11 88326 c W95 FAT32 (LBA)
/dev/sde2 12 179 1349460 b W95 FAT32
/dev/sde3 180 347 1349460 83 Linux

パーミッションが3つ。2つがFAT、1つがLinuxパーティションになっているはずです。

(7)SDカードへのコピー
SDカードを抜き差ししてマウントします。マウントしない場合は、Ubuntuを再起動して下さい。
以下の3つがマウントされるはずです。
/media/boot :ブート領域
/media/media :データ用?
/meeia/rootfs :ルートファイルシステム用

・ブートローダのコピー
$ wget http://pandroid.googlecode.com/files/MLO
$ wget http://pandroid.googlecode.com/files/u-boot.bin
$ sudo cp -a ./MLO /media/boot
$ sudo cp -a ./u-boot.bin /media/boot

以前も書きましたがOMAPはブートする領域の先頭にブートローダがMLOという名前で置いてある前提でブートします。
そのため、SDカードのフォーマットしたら、ブート領域にまず、「MLO」をコピーして下さい。

・カーネルのコピー
ビルドしたカーネル「uImage」をブート領域にコピーします。
$ cd $ANDROID/kernel/pandaboard/arch/arm/boot
$ sudo cp -a ./uImage /media/boot

・ユーザランドのコピー
$ cd $ANDROID/out/target/product/pandaboard/
$ sudo chmod 777 -R ./rootfs
$ sudo cp -a ./rootfs/* /media/rootfs

これで準備が完了しました。
シリアルケーブルでPCを繋いでおきます。
TeraTerm等のターミナルソフトでシリアス接続し、速度は115200にします。
PandaBoardに周辺機器を接続して、電源を入れます。

メッセージが表示されるので、エンターキーを押下して止めます。
Texas Instruments X-Loader 1.41 (Aug 31 2010 - 18:03:49)
mmc read: Invalid size
Starting OS Bootloader from MMC/SD1 ...


U-Boot 1.1.4-gcebe815a-dirty (Sep 24 2010 - 15:03:03)

Load address: 0x80e80000
DRAM: 512 MB
Flash: 0 kB
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial
Net: KS8851SNL
Hit any key to stop autoboot: 0
PANDA #

ブートローダに対して、カーネルパラメータを設定してブートします。
setenv bootargs 'console=ttyO2,115200n8 mem=463M root=/dev/mmcblk0p3 rw rootfstype=ext3 rootwait noinitrd init=/init vram="32M" omapfb.vram="0:24M"';mmcinit 0;fatload mmc 0 0x80000000 uimage; bootm 80000000
必ず1行で入力して下さい。

ブートを開始します。
KernelPanicが発生する場合は、カーネルパラメータが間違っている場合が多いようです。
再度確認して下さい。
画面にAndroidのHome画面が表示されるはずです。

−−−−−−−−−−−−−−−−−−−−−−−−−−−
mmc read: Invalid size

3083892 bytes read
## Booting image at 80000000 ...
Image Name: Linux-2.6.35-g109142b
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3083828 Bytes = 2.9 MB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.35-g109142b (oono@ubuntu) (gcc version 4.4.3 (GCC) ) #1 SMP PREEMPT Sat Apr 30 01:01:53 JST 2011
CPU: ARMv7 Processor [411fc092] revision 2 (ARMv7), cr=10c53c7f
CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: OMAP4430 Panda Board
Memory policy: ECC disabled, Data cache writealloc
***********************
OMAP4430 ES2.1 type(GP)
id-code (3b95c02f)
Die-id (64420003-00000001-0A6CBF8B-06007)
Prod-id (0001B95C-000300F0)
***********************
SRAM: Mapped pa 0x40300000 to va 0xfe400000 size: 0x100000
FIXME: omap44xx_sram_init not implemented
Reserving 33554432 bytes SDRAM for VRAM
PERCPU: Embedded 6 pages/cpu @c2a8a000 s3936 r8192 d12448 u65536
pcpu-alloc: s3936 r8192 d12448 u65536 alloc=16*4096
pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 117602
Kernel command line: console=ttyO2,115200n8 mem=463M root=/dev/mmcblk0p3 rw rootfstype=ext3 rootwait noinitrd init=/init vram="32M" omapfb.vram="0:24M"
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 463MB = 463MB total
Memory: 430140k/430140k available, 43972k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xdd000000 - 0xf8000000 ( 432 MB)
lowmem : 0xc0000000 - 0xdcf00000 ( 463 MB)
pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
.init : 0xc0008000 - 0xc003f000 ( 220 kB)
.text : 0xc003f000 - 0xc05ec000 (5812 kB)
.data : 0xc05ec000 - 0xc063a540 ( 314 kB)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
Hierarchical RCU implementation.
RCU-based detection of stalled CPUs is disabled.
Verbose stalled-CPUs detection is disabled.

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Panda BoardでAndroid 電脳羊(Android Dream)/BIGLOBEウェブリブログ
[ ]