android SD卡自動掛載

2021-06-19 19:32:11 字數 2390 閱讀 4657

android sd卡自動掛載

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 stream0660root mount

ioprio be2

2、配置vold.fstab

vold.fstab檔案的格式是:?

format: dev_mount

label: 

-labelforthe volume

mount_point  -where the volume will be mounted

part 

-partition #(1based), or'auto'forfirst usable partition.

-list of sysfs paths to source devices

例如:dev_mount sdcard /mnt/sdcard 1 /devices/platform/mxsdhci.0/mmc_host/mmc0

自android 2.2後,sd mount的位置變為/mnt/sdcard。

二、控制流程分析

vold關於sd card settings的**位於:

system/vold/

1、vold設計架構

setting

| mountservice

| commandlistener

| volumemanager  - netlinkmanager

| volume  -  directvolume

|sd/usb device

mountservice會接收來之setting的變化,及來自底層volumemanager的資訊,並對之分析判,然後

通過domountvolume命令到底層。

vold初始化時,會建立class netlinkmanager和volumemanager,class netlinkmanager接收

來自底層的資訊,然後傳交給volumemanager處理;

重要類class volumemanager 僅有乙個例項,它主要負責vold的管理操作,管理多個sd卡,usb各種

操作;重要類class volume 可有多個例項, 掛載多少個sd卡、usb,它就有多少個。重要類class

directvolume 封裝了很多的方法和屬性;重要類class commandlistener主要收到上層

mountservice通過domountvolume發來的命令,分析後,轉交給volumemanager處理;

volumemanager處理資訊後,或報告給上層mountservice,或交給volume執行具體操作(掛載

sd,usb). 

2、vold**實現過程大致分為三步:

在vold作為乙個守護程序,一方面接受驅動的資訊,並把資訊傳給應用層;另一方面接受上層的命令並

完成相應操作。

(1)vold socket: 負責vold與應用層的資訊傳遞;

(2)訪問udev的socket: 負責vold與底層的資訊傳遞;

這兩個鏈結都是在程序的一開始完成建立的。

2).引導:

這裡主要是在vold啟動時,對現有外設儲存裝置的處理。首先,要載入並解析vold.fstab,

並檢查掛載點是否已經被掛載(注:這裡檢查掛載點的用意不是很清楚!); 其次,執行mmc卡掛

載; 最後,處理usb大容量儲存。

3).事件處理:

這裡通過對兩個鏈結的監聽,完成對動態事件的處理,以及對上層應用操作的響應

android SD卡自動掛載

android sd卡自動掛載 sd card porting 一 程序啟動和配置檔案的分析 vold的全稱是volume daemon。實際上是負責完成系統的cdrom,usb大容量儲存,mmc卡等擴充套件儲存的 掛載任務自動完成的守護程序。它提供的主要特點是支援這些儲存外設的熱插拔。在andro...

android SD卡插拔 廣播訊息

media bad removal action 廣播 擴充套件介質 擴充套件卡 已經從 sd 卡插槽拔出,但是掛載點 mount point 還沒解除 unmount android.intent.action.media bad removal string media eject action...

android SD卡使用方法

獲取android外接sd卡狀況 string sdstatus environment.getexternalstoragestate 只有在sd卡狀態為media mounted時 mnt sdcard目錄才是可讀可寫,並且可以建立目錄及檔案。所以我們可以這麼寫 string state str...