Android4.0实现双sd卡

1、修改drvier,使系统能支持双sd,需要修改kernel\drivers\mmc\host下host的驱动
sd卡插入的时候动态加载驱动程序,在/sys/devices/platform/出现两个sd卡的节点,在各个驱动节点类似以下目录/sys/devices/platform/sirfsoc-sdhci.2/mmc_host/mmc0/mmc0:0007,敲入cat *,可以看到插入的sdka信息,如类型、大小等(或在/sys/block/下看mmcblk*等节点下,敲 cat *)
2、修改vold信息(system/vold/)
修改vold.fstab信息,类似如下
dev_mount sdcard /mnt/card auto /devices/platform/sirfsoc-sdmmc.1/mmc_host/mmc1 /devices/platform/sirfsoc-sdio.1/mmc_host/mmc1 /devices/platform/sirfsoc-sdhci.1/mmc_host/mmc1 /devices/platform/sirfsoc-sdhci.1/mmc_host/mmc0 /devices/platform/sirfsoc-sdhci.2/mmc_host/mmc0 /devices/platform/sirfsoc-sdhci.2/mmc_host/mmc1 /devices/platform/sirfsoc-sdhci.0/mmc_host/mmc0
dev_mount sdcard1 /mnt/card1 auto /devices/platform/sirfsoc-sdhci.3/mmc_host/mmc1 /mnt/card auto /devices/platform/sirfsoc-sdhci.3/mmc_host/mmc0
支持双sd卡,此文件在vold的main函数中被解析(system/vold/main.cpp)
3、修改,init.rc  
symlink /data/card1 /mnt/card1      //(sd的节点为/data/card1,后面将看到如何修改)
export EXTERNAL_STORAGE_SDCARD1 /mnt/card1
4、修改/system/vold/Volume.h
增加sd卡2节点,和sd卡类型
#define EXTERNAL_SDCARD1_TOP_PATH "/data/card1"//hill.hu
enum eVolumeType {
    VOLUME_TYPE_UNKNOWN,
    VOLUME_TYPE_SDCARD,
    VOLUME_TYPE_FLASH,
    VOLUME_TYPE_UMS,
    VOLUME_TYPE_SATA,
    VOLUME_TYPE_SDCARD1//hill.hu,new add
};
4、在system/vold/main.cpp中
mkdir(EXTERNAL_SDCARD1_TOP_PATH, 0755);//hill.hu
添加sd目录

在process_config中设置新类型,以便做进一步处理
            //hill.hu
            }if(!strcmp(label, "sdcard1")) {
                dv->setVolumeType(VOLUME_TYPE_SDCARD1);
            //hill.hu
5、修改/system/vold/Volume.cpp
仿照单sd卡修改
Volume::mountVol()
Volume::unmountVol
使sd卡2插入时能mout上
7、修改/system/vold/VolumeManager.cpp
去掉VolumeManager::handleBlockEvent(NetlinkEvent *evt)中的break,否则找到一个sd卡就会停止
VolumeManager::unshareVolume(const char *label, const char *method)中增加
    //hill.hu add    
    else if (!strcmp(label, "/mnt/card1"))
        filepath = MASS_STORAGE_FILE_SDCARD1_PATH;
8、修改android/frameworks/base/core/java/android/os/Environment.java
仿照单sd卡修改相应的地方,需要修改多处,如
   
    private static final File EXTERNAL_STORAGE_SDCARD_DIRECTORY1
            = getDirectory("EXTERNAL_STORAGE_SDCARD1", "/mnt/card1");  
9、修改storage_list.xml
增加一个sd卡的相关解析,可能还需要修改string.xml
    <!-- hill.hu add -->   
    <storage android:mountPoint="/mnt/card1"
        android:storageDescription="@string/storage_sd_card1"
        android:primary="false"
        android:removable="true"
        android:allowMassStorage="true"
        android:maxFileSize="4096" />
10、可能还需要修改MountService.java  ExternalStorageFormatter.java
我没有修改,我不需要格式化sd卡
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值