SD card porting

一、进程启动和配置文件的分析

  vold的全称是volume daemon。实际上是负责完成系统的CDROM, USB大容量存储,MMC卡等扩展存储的
  挂载任务自动完成的守护进程。它提供的主要特点是支持这些存储外设的热插拔。在Android上的这个
  vold系统和GNU/Linux的之间存在很大的差异,这里主要是分析Android上的vold系统的处理过程。
  自Android 2.2开始,vold又做了大改动,升级为vold 2.0,之前的配置文件是
      system/etc/vold.conf,vold 2.0变为system/etc/vold.fstab。

  1、启动vold
  
    在init.rc中启动VOLD这个守护线程和创建socket的命令如下:

    service vold /system/bin/vold
        socket vold stream 0660 root mount
        ioprio be 2
     

 2、配置vold.fstab
  
    vold.fstab文件的格式是:

 Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
    label:    -Label for the volume
    mount_point  -Where the volume will be mounted
    part     -Partition #(1 based), or 'auto' for first usable partition.
    <sysfs_path> -List of sysfs paths to source devices

  例如:
    dev_mount SD,USB).      
    
  2、Vold代码实现过程大致分为三步:
  
    1).创建链接:
     在vold作为一个守护进程,一方面接受驱动的信息,并把信息传给应用层;另一方面接受上层的命令并
     完成相应操作。
     所以这里的链接一共有两条:
     (1)vold socket: 负责vold与应用层的信息传递;
     (2)访问udev的socket: 负责vold与底层的信息传递;
     这两个链接都是在进程的一开始完成创建的。

    2).引导:
     这里主要是在vold启动时,对现有外设存储设备的处理。首先,要加载并解析vold.fstab,
     并检查挂载点是否已经被挂载(注:这里检查挂载点的用意不是很清楚!); 其次,执行MMC卡挂
     载; 最后,处理USB大容量存储。

    3).事件处理:
     这里通过对两个链接的监听,完成对动态事件的处理,以及对上层应用操作的响应

相关文章:

  • 2022-12-23
  • 2021-10-25
  • 2021-12-20
  • 2021-07-31
  • 2021-08-02
  • 2022-12-23
  • 2021-08-29
猜你喜欢
  • 2021-05-03
  • 2021-10-30
  • 2022-02-27
  • 2021-12-12
  • 2021-08-23
  • 2022-12-23
  • 2021-12-02
相关资源
相似解决方案