SAMV71 USB海量存储主机速度极慢

时间:2016-04-06 19:05:32

标签: performance arm usb atmel usb-mass-storage

我尝试了atmel的ASF在USB大容量存储主机上提供的示例,以便将文件发送/读取到USB闪存设备。在阅读文件时,我的速度达到1.7 MB / s,我尝试了很多解决方案,其中包括:

  • 确保其在高速模式下运行,并且电路板正在运行 在300 mhz
  • 尝试增加F_read函数和I的缓冲区大小 设法将其增加到2.2 MB / s
  • 我自己测试了文件系统,它是虚拟内存中的FAT32 例如,读取操作得到30MB / s(不确定是否可以 有助于调试速度)
  • 我尝试使用相同的程序,除了从SD卡读取,其中 给了我1 MB / s的输出
  • 我也在全速模式下测试它,它给了我0.66的输出 MB /秒。
  • 我测试的一个极端想法是运行两块板,一块处于主机模式, 然后我在设备模式中测试了传输速度 USB,它在批量模式下给出了1.66 MB / s的输出。 (在HS上运行)
  • 尝试了Keil的例子,这些例子给我的结果比Atmel的结果差。

    有人可以建议解决方案吗?我已经阅读了Atmel和Keil提供的有关USB通信的所有文档。

1 个答案:

答案 0 :(得分:1)

Atmel的大容量存储USB堆栈缺少多扇区读写,尽管SCSI层确实实现了连续获取多个扇区的正确命令(请参阅uhi_msc_scsi_read_10)。读取SCSI命令(例如uhi_msc_mem_read_10_ram和uhi_msc_mem_write_10_ram)之上的数据的抽象层只能逐扇区读取,性能非常差。

为了实现USB高速性能(~35 MB / s),您将不得不破解这些功能(以及上面的所有层)以使用多扇区读/写。