移植USB Mass storage Device驱动

jjphero   2008-8-30 10:38 楼主
大家好,请教一个问题

目前在公司的OS上开发USB Mass storage Device驱动 ,连上PC后能变成一个优盘。

现在的软件平台是ThreadX的,硬件接口是USB1.1的,目前ThreadX上面没有挂文件系统,想把SPI

Flash上某个区域做成一个分区,然后USB Mass storage Device驱动挂接该分区,使得连上PC后那

个区域能够像优盘那样读取(写入是不需要的,这样可以简化文件系统和USB Mass storage

Device驱动)

目前USB驱动,Mass storage Device驱动和文件系统都没有,想移植Linux上面的Mass storage

Device驱动,文件系统就想用最简单的FAT16,请问移植的难度大不大?有没有现成的移植案例可

供选择?

PS:我想MP3上面如果用软件实现Mass storage Device的话,应该跟我要做的东西差不多,谁有相

关的代码请教了

谢谢

回复评论 (6)

有没有大侠指点一下的?
点赞  2008-9-1 08:58
这个难度还是有的 ,如果思路清晰还好做,否则就累了。

1,首先构建 FFS - FTL - NAND 三层程序结构;
2,再构建 Mass Storage - FTL -NAND 三层程序结构;
3,怎么自动切换,那就是你自己的设计了。
点赞  2008-9-3 23:28
我也不会~












-------------------------
QQ空间,看优酷电影。
点赞  2008-9-4 15:14
比较简单。
去看看mass的协议吧。
和文件系统无关。
只要实现扇区的读写就可以了
点赞  2008-9-8 17:23
难度不大,估计最多1个月搞定。
点赞  2008-9-8 21:58
目前做USB大容量存储器件驱动时遇到一个问题。项目的主要目的是利用公司芯片上的USB Device控制器来实现USB大容量存储,也就是优盘了

,使用Bulk-only方式传输。目前在枚举阶段能够通过,PC端也可以识别出Inquiry命令传回的数据。但是问题是公司的USB控制器的Bulk-In端

点每次送出至少要15个字节的数据,如果少于15个字节,DMA传输就会Hang住,而且没有FIFO填充数据方式,只能用DMA传输。因为Universal

Serial Bus Mass Storage Class UFI Command Specification里面的Command Status Wrapper(CSW,规定13个字节长度)和Read Capacity等

命令需要传输的数据没有15个字节,所以我现在用的方法是不足15个字节的补0到15个字节再发送,这样像CSW这些数据传输就不符合规范了。

我现在想问的是如果我发送这些不规范的数据,Host端会不会Reset我的器件呢?也就是如果我发送的数据不符合规范,主机端的驱动是不是不

认?

PS:我在模拟CD-ROM时,如果发送不规范数据,从调试信息上来看是没有Reset动作的,但是我把Inquiry传回的数据的DeviceType改为优盘时

,每次Inquiry或READ10命令后就会有Reset的动作,目前还找不到原因

谢谢。
点赞  2008-9-17 13:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复