主题 : 请教android挂载SD卡的问题? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 51471
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2011-07-04
最后登录: 2012-05-24
楼主  发表于: 2012-05-11 14:32

 请教android挂载SD卡的问题?

发现一个问题,在imx51的板子有两个SD卡,在kernel里注册平台设备的时候,两个SD卡注册的顺序对ANDROID启动有影响
平台设备注册代码如下:
mxc_register_device(&mxcsdhc2_device, &mmc2_data);     //SD2
mxc_register_device(&mxcsdhc1_device, &mmc1_data);     //SD1

如果从从SD2启动,SD1也插入卡,但SD1里的没有烧录ANDROID系统,这时如果将上面的平台设备注册顺序调整一个,SD1注册在前,SD2在后,那就无法启动ANDROID了,

报错:init: cannot find 'system/bin/sh'    等

分析发现,平台设备的注册顺序会影响到相应的mmc块设备号,比如平台设备注册顺序是:SD2, SD1,且两个卡都有插入的话,

那共相应的块设备号分别为
SD 2 ===> mmcblk0 ,
SD1 ===> mmcblk 1

像上面说的:如果我还是从SD2启动,但平台注册顺序改成SD1 ,SD2,且两个卡都有插入的话,
那共相应的块设备号分别为
SD1 ===> mmcblk0 ,
SD2 ===> mmcblk 1

这里就会无法启动ANDROID,报上面错误?

请教在ANDROID里面什么地方设置?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-05-11 15:00
通常是在/init.rc或者是/init.<target>.rc脚本里
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 51471
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2011-07-04
最后登录: 2012-05-24
2楼  发表于: 2012-05-11 15:57

 回 1楼(kasim) 的帖子

感谢版大,这么快回复,再请教!

看了init.rc脚本里有:

mount yaffs2 mtd@system /system

但是如果我两张卡里都有system这个分区,那android是如何区别挂载哪张卡的system分区呢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2012-05-11 17:43
mount yaffs2 mtd@system /system

这个是针对NAND Flash系统的,对于你的情况来说,应该找到类似下面的语句:
mount ext4 /dev/block/mmcblk0p3 /system

其中/dev/block/mmcblk0p3就指定了从系统的第一个MMC controller设备的第3个分区挂载system分区
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."