阅读:1351回复:0
嵌入式USB host开发的几点感想
最近做完一个X86兼容 CPU控制SL811(USB 1.1)的U盘读写项目,有一点感想:
1 开始买来的开发板U盘写入速度很慢,采用以下方法提高速度 --- write的buffer加大到16kb以上,由于每次写U盘的命令是 命令--数据--回应 在命令过程中一次就通知U盘写32个扇区 --- FAT/FAT32中创建文件时FAT也使用大buffer读写,而且分配文件cluster时 必须分配连续的16kb的cluster分配,open时建立一个全局数组保存每个16kb 的连续cluster块的开始cluster号,每次writefile时直接从这个表中取得每个连续 的块写16kb --- 特别注意对于低速USB设备,会设置每个package在下一个SOF之后才传送, 如果传送时SL811设置了该bit,则传送速度最多达到50kb/s,因为1ms传送 一个64byte的bulk package --- 经测试1.5MB的文件写入U盘,创建时间需要2秒,USB 传送时间10秒,buffer数据准备及 由IO口传送给SL811需要8秒,理论上可以在USB传送期间进行数据操作,这样可以把数据 操作的时间省掉,但后来没有成功 2 USB传送过程中会出现NAK错误,此时需要把刚发送的那个package重新发送 |
|