gpt4 book ai didi

Android USB OTG 读取 U 盘

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:47 26 4
gpt4 key购买 nike

我目前正在开发一个项目,该项目需要 Android 中的 USB 主机模式(使用 4.2.2)。我需要能够执行标准文件操作,例如列出文件和从 USB 驱动器读取。使用主机模式文档,我已经能够检测到驱动器已连接,是 USB 大容量存储,并找到各种端点。

我卡住的地方是在那之后该怎么做。我想我真的不明白控制转移和批量转移之间的区别,或者在控制转移的情况下,到底发生了什么。不幸的是,我对 USB 本身的了解有些有限,而且我听说文档相当令人生畏。

任何人都可以帮助指导我完成,或者指出一个工作示例,我需要做什么才能从根本上“安装”USB 驱动器?正如我之前所说,我只需要列出文件并读取它们的那些文件操作,而不是写入。我还应该提到目标手机是三星的 Galaxy Nexus。

谢谢

最佳答案

控制端点(通常)用于向 USB 设备发送命令。
批量端点(通常)用于将数据传输到 USB 设备。

批量数据的结构没有定义。
但在控制传输中定义了数据结构。
主机发送一个 8 字节的数据包,其中包含有关命令的信息(如请求 ID、命令参数、数据阶段传输的数据长度等)。然后可选地接收/发送一些数据,最后主机/设备都同意通过移动到状态阶段命令成功。就是这样!
但是,细节决定成败,请参阅 USB 规范。 :)


所有 USB 存储器(随身碟、存储卡、硬盘驱动器)都适用于 USB 大容量存储类。

使用大容量存储类,您可以执行内存读写,但其上的文件系统(例如:EXT3、FAT...)需要另一个驱动程序。

所以,本质上是读/写一个文件。您需要连接到设备:

  1. 连接到设备(你已经完成了)
  2. 识别并控制大容量存储接口(interface)
  3. 编写大容量存储类驱动程序
  4. 编写将使用大容量存储类驱动程序读取/写入文件的文件系统驱动程序
  5. 在您的项目中使用文件系统驱动程序 api。

要编写大容量存储类驱动程序,您必须阅读 USB 大容量存储类规范 http://www.usb.org/developers/docs/devclass_docs/可能您正在寻找 Bulk only

然后,引用您的目标文件系统的设计和规范。 (如果可用)


据我所知,Android 具有连接到 USB 的文件系统安装工具,因此您可能正在重新发明轮子。


额外注意事项:
一些文件系统没有公开记录(尽管反向工程信息可能存在)(例如:NTFS)
一些文件系统(部分)获得了专利。 (例如:脂肪)

关于Android USB OTG 读取 U 盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com