Android2.3实现SD卡与U盘自动挂载的方法
本文实例讲述了Android2.3实现SD卡与U盘自动挂载的方法。分享给大家供大家参考,具体如下: 在 s3c6410平台上移植android2.3 过程中SD卡总是不能自动挂载。 查阅相关资料,知道在android2.3中是 vold程序负责检查内核的 sysfs 文件系统,发现有SD卡插入后,自动挂载。 在文件系统目录 /system/etc/ 下有一个vold.fstab 文件,该文件是系统与用户硬件平台的交互接口,用户根据自己的平台来配置这个文件,里面内容比较简单,只需要你指定sys下vold程序需要查询的文件夹路径,当SD卡插入设备后,这个路径下会产生相应的文件,vold能检查到。 在Android系统中,SD卡和U盘的自动挂载是一个关键功能,特别是在开发和调试过程中。在Android 2.3版本中,这个过程主要由一个名为`vold`(Volume Daemon)的系统服务来处理。`vold`是Android系统中的一个后台进程,负责管理设备上的各种存储设备,如内置存储、外部SD卡以及USB存储设备。 当SD卡或U盘插入设备时,`vold`会检测内核的`sysfs`文件系统,查找相关设备的标识。`sysfs`是一个特殊类型的文件系统,它反映了内核的结构和状态,允许用户空间程序查看和修改内核参数。在`/sys/class`或`/sys/devices`等路径下,可以找到关于硬件设备的信息。 在Android 2.3的`/system/etc/`目录下,有一个名为`vold.fstab`的配置文件。这个文件定义了`vold`如何处理不同类型的存储设备。用户需要根据具体的硬件平台来配置这个文件,指定`vold`应该监控哪些`sysfs`路径以检测新插入的存储设备。例如,配置文件中的条目`dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0`表示将挂载名为"sdcard"的卷到`/mnt/sdcard`,并且`auto`意味着挂载第一个可用的分区。`/devices/platform/goldfish_mmc.0`是针对特定平台的设备路径,实际路径可能会因硬件不同而变化。 在插入SD卡后,相应的`sysfs`路径下会生成新的文件或目录,`vold`通过检测这些变化来触发挂载操作。例如,如果插入的SD卡在`/sys/devices/platform/s3c-sdhci.0/mmc_host/mmc0`路径下产生了新的文件,`vold`就会识别到SD卡的存在并进行挂载。 当SD卡的驱动成功加载时,会在`/dev/block/`目录下看到对应的设备节点,如`mmcblk0`和`mmcblk0p1`。`mmcblk0`表示SD卡本身,而`mmcblk0p1`通常表示SD卡的第一个分区。在Android系统中,应将`mmcblk0p1`而不是`mmcblk0`挂载到文件系统,因为`mmcblk0`是整个设备,而`mmcblk0p1`才是实际的数据存储区域。挂载错误如`Invalid argument`通常是因为尝试挂载了不正确的设备节点。 此外,对于Linux内核配置,需要注意开启支持SD卡和U盘的相关选项,比如通用块层(General Block Layer)和MMC(Multimedia Card)驱动。这通常在配置时的`General Setup` -> `Enable Support for MMC (MultiMediaCard)`等位置设置。确保这些配置正确,才能让`vold`正确识别并挂载外部存储设备。 Android 2.3实现SD卡和U盘的自动挂载涉及到`vold`服务、`vold.fstab`配置文件、`sysfs`文件系统监控以及内核驱动的正确配置。理解这些组件的工作原理和相互作用,对于解决自动挂载问题至关重要。
- 粉丝: 9
- 资源: 894
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0