SP8825 USB存储系统分析与实现

需积分: 10 3 下载量 174 浏览量 更新于2024-07-23 收藏 717KB DOCX 举报
“SP8825 USB存储系统分析”文档主要探讨了基于展讯SP8825芯片的Android 4.0.3系统中USB存储的工作原理和架构。 在Android系统中,USB存储功能涉及到多个层次的交互,从用户界面到内核层的通信。以下是对这些知识点的详细说明: 1. 软件架构: - StorageManager 是客户端,它负责处理应用程序对USB存储的请求。 - MountService 是服务端,由SystemServer启动,它管理系统的挂载和卸载操作。 - 两者之间通过AIDL(Android Interface Definition Language) 进行进程间通信,允许不同进程之间的对象调用。 2. Native服务: - Volume Daemon (Vold) 是一个原生服务,由`Init.c`在系统启动时读取`init.rc`配置文件后启动。 - Vold通过Socket 与MountService通信,处理设备的挂载和卸载命令。 3. 通信机制: - NativeDaemonConnector 协助MountService连接到Vold的Socket,建立两者间的通信链路。 - NetLink 是Vold与内核通信的桥梁,它用于读取内核产生的`uevent`,以获取设备状态变化的信息。 - NetLinkManager 是一个帮助类,用来管理Vold与内核间的NetLink通信。 4. 应用层: - SprdUsbSettings 类位于`\packages\apps\Settings`,它提供了用户界面,允许用户开启或关闭USB存储和虚拟光驱功能。 - UI布局文件 `sprd_usb_settings_user.xml` 定义了相关界面元素。 - 两个关键设置对象是:`USB大容量存储CheckBoxPreference mUms` 和 `USB虚拟光驱CheckBoxPreference mCdrom`。 5. 设置操作: - 当用户选择USB大容量存储时,会调用`mStorageManager.enableUsbMassStorage()`开启该功能,并将当前设置写入数据库,键为`current_function`,值为`UMS`。 - 选择USB虚拟光驱时,同样更新`current_function`,并用`cdrom_enabled`记录状态,值为`1`表示开启,`0`表示关闭。 6. 中间层: - StorageManager 类位于`\frameworks\base\core\java\android\os\storage`,是Java层处理USB存储的核心组件,提供了与USB存储设备交互的API,如挂载、卸载和状态查询等功能。 这个系统分析揭示了Android系统中USB存储功能的实现细节,涉及了从用户界面到内核层的复杂交互过程,对于理解和调试USB存储问题具有重要的参考价值。
2023-06-10 上传