拇指驱动器显然是一块 EEPROM,包括一个控制器/微处理器,用于存储/检索存储在其中的文件。操作系统通常与拇指驱动器通信,并且所有拇指驱动器都可以在所有操作系统中运行(我认为)。因此,必须有一个协议来说明如何通过 USB 端口寻址/命令拇指驱动器。我对从拇指驱动器获取与特定文件实际占用的内存块有关的数据感兴趣。有人知道描述拇指驱动器内存管理和协议的参考资料吗?
我尝试在 Stack Overflow 上询问这个问题,有人建议我在这里尝试。
答案1
USB 拇指驱动器组织数据的方式内部对于主机来说是透明的。
就像硬盘一样,使用 LBA(逻辑块寻址)写入和读取数据:
当主机将数据发送到拇指驱动器上的 LBA 块时,拇指驱动器可以自由存储该数据以任何方式,只要您读取该块时返回相同的数据即可。您不知道它如何在 EEPROM 上存储数据(由于采用了磨损均衡、错误校正和性能技术,这可能非常复杂)。
我感兴趣的是从拇指驱动器中获取有关特定文件实际占用的内存块的数据。
我怀疑您实际上正在寻找的是有关特定文件正在使用哪些 LBA 的信息。这是正在使用的文件系统的功能,并且此类信息是从操作系统而不是 USB 设备获取的。这是因为操作系统管理文件和文件数据到扇区的映射,进而管理扇区到拇指驱动器上的 LBA 的映射。
这是关于这个主题的精彩读物: