Android SD卡三层架构详解:从kernel到framework

5星 · 超过95%的资源 需积分: 9 15 下载量 99 浏览量 更新于2024-07-28 收藏 313KB PDF 举报
本文主要深入解析Android系统中的SD卡处理流程,这是一个关键的存储设备管理过程。Android的SD卡功能主要由三个层次协同工作: 1. Kernel层(内核层): - 在底层硬件层面,当SD卡被插入或拔出时,驱动程序(如sdhci_add_host)会被调用,如Linux的SD/MMC控制器驱动。这些函数,如`mmc_add_host` 和 `mmc_start_host`,负责初始化和配置SD卡主机,确保设备可以被系统识别和控制。`mmc_start_host`函数首先关闭电源(`mmc_power_off`),然后进行状态检测(`mmc_detect_change`),确认卡片是否真的插入。 2. vol(d)service(Vold服务): - 这是一个关键的服务进程,通常在`init.rc`脚本中作为守护进程启动。Vold服务的作用是监听来自Kernel层的SD卡状态变化通知(uevent),比如卡片插入、拔出或读写操作完成等。当接收到这些事件时,Vold会将状态更新同步到Android框架层。 3. Framework(框架层): - Android框架(通常是硬件抽象层HAL,H/W Abstraction Layer)接收来自Vold服务的SD卡状态变化信息,通过Netlink(一种轻量级通信协议)进行交互。框架根据接收到的状态变化决定如何处理,比如挂载、卸载、格式化或分配存储空间给应用程序。 在整个过程中,错误处理和兼容性是关键。由于不同的SD卡厂商可能有不同的驱动实现,因此在驱动程序和框架之间可能存在适配性问题。作者提醒读者,文章可能存在错误,鼓励读者在遇到问题时通过邮件反馈以便进行修正。 Android SD卡流程解析详细阐述了系统如何从硬件检测、服务协调到应用响应的全程管理,这对于理解Android设备的底层工作原理和进行相关的开发工作具有重要意义。