2009年6月29日月曜日

Android Music App on Beagle Board (3)

SDカードをAndroid上で正しくmountするため,vold他を設定する。

(1) SDカードのパーティション構成
SDカードはBeagleBoard自体のブートにも使用するため以下のようなパーティション構成とする。
/dev/mmcblk0p1  W95 FAT32 (LBA)
/dev/mmcblk0p2 W95 FAT32 (LBA)
/dev/mmcblk0p3 Linux
mmcblk0p1はuBoot, Linux kernel (uImage)を格納したvfat,mmcblk0p2はMusicなどのコンテンツを格納するvfat,mmcblk0p3はubuntuのユーザランド,androidを格納するext2とした。

(2) vold.confの設定
BeagleBoard上のSDは/sys/devices/platform/mmci-omap-hs.0/mmcに見えているので,以下のようにandroidの/system/etc/vold.confを設定する。
## vold configuration file for beagleboard
volume_sdcard {
media_path /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
media_type mmc
mount_point /sdcard
ums_path /devices/platform/usb_mass_storage/lun0
}
(3) voldソースコードの修正
voldはSDカード上の最初に見つかったvfatパーティションを/sdcardにmountしようとするが,それだとBeagleBoardのブート用パーティションがmountされてしまうため,最初のパーティション(mmcblk0p1)をスキップするようvoldのコードを修正する。
diff --git a/vold/volmgr.c b/vold/volmgr.c
index 17c9a49..4aa7397 100644
--- a/vold/volmgr.c
+++ b/vold/volmgr.c
@@ -573,7 +573,12 @@ static int _volmgr_consider_disk_and_vol(volume_t *vol, blk
dev_t *dev)

rc = -ENODEV;
int i;
- for (i = 0; i dev->nr_parts; i++) {
+ /*
+ * 1st partition of mmc is used as boot partition,
+ * so skip this partition from mounting on /sdcard.
+ */
+ // for (i = 0; i dev->nr_parts; i++) {
+ for (i = 1; i dev->nr_parts; i++) {
blkdev_t *part = blkdev_lookup_by_devno(dev->major, (i+1));
if (!part) {
LOGE("Error - unable to lookup partition for blkdev %d:%d", dev->major, (i+1));
これでSDカードのmmcblk0p2が/sdcardにmountされ,Musicアプリから曲の再生ができるようになる。

I/vold    ( 1725): Android Volume Daemon version 2.0
E/vold ( 1725): Unable to chdir to /sys/class/mmc_host/mmc0/slot_name (m)
E/vold ( 1725): Error bootstrapping card '/sys/class/mmc_host/mmc0/slot_name' (m)
I/vold ( 1725): New MMC card 'SD8GB' (serial 1526730553) added @ /devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:0007
I/vold ( 1725): Disk (blkdev 179:0), 16019456 secs (7822 MB) 3 partitions
I/vold ( 1725): New blkdev 179.0 on media SD8GB, media path /devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:0007, Dpp 3
I/vold ( 1725): Partition (blkdev 179:1), 240912 secs (117 MB) type 0xc
I/vold ( 1725): New blkdev 179.1 on media SD8GB, media path /devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:0007, Dpp 2
I/vold ( 1725): Partition (blkdev 179:2), 2120580 secs (1035 MB) type 0xc
I/vold ( 1725): New blkdev 179.2 on media SD8GB, media path /devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:0007, Dpp 1
I/vold ( 1725): Partition (blkdev 179:3), 13655250 secs (6667 MB) type 0x83
I/vold ( 1725): New blkdev 179.3 on media SD8GB, media path /devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:0007, Dpp 0
I/vold ( 1725): Evaluating dev '/devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0' for mountable filesystems for '/sdcard'
D/vold ( 1725): Bootstrapping complete

0 件のコメント: