打印

免驱动免安装USB--mass storage类设备制作(1)

[复制链接]
6761|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arthur0561|  楼主 | 2010-1-14 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 arthur0561 于 2010-1-14 17:39 编辑

网上有很多自制U盘的资料,其实那个用处不大,工作以后见到很多的USB设备都是免驱动免安装的,感觉比较好,用户买了设备就能直接用,相当方便。基本上的思想是把设备枚举成CDmass storage类),然后将需要运行的程序写入设备中。这样用户只要插上设备就能自动识别成CD,打开CD里就是应用程序。
所谓免驱动,也就是利用微软定义好的usb设备类,驱动已经存在于操作系统中,我们只要按照设备类规定的协议进行操作就可以了。比如你自己做一个键盘,或者u盘,只要写写固件将你的设备在枚举阶段被识别成相应的设备可以啦。
要完成这个任务需要的知识点包括:1USB枚举,这个必须完完全全搞明白,不然一点效果也做不出来滴。我前面有几篇**已经写过这方面的内容。http://blog.21ic.com/user1/5568/archives/2009/55928.html
2.mass storage
类的协议,这个如果不是很必要的话大体了解就可以啦。3.SCSI命令,只要弄明白一部分必须的就可以啦。4.FAT文件系统,这个是为了能在你自己做的CD中有文件数据的。
实现的步骤是:
1.编写固件枚举部分,将设备枚举成mass storage类的通用scsi 子类。完成这一步,你的电脑就可以识别到一个mass storage类,但是不会出现盘符。
2.处理相应的SCSI必要指令:
INQUIRY—设备的一个描述,告诉电脑你的设备是什么,名字叫什么。这里可以将设备做成U盘或者光驱。

READ_CAPACITY—
读取容量信息


REQUEST_SENSE---
该命令询问前一个命令执行失败的原因。


TEST_UNIT_READY--
测试磁盘是否准备好


READ_FORMAT_CAPACITIES--
读格式化容量

处理完这几个命令后,你的光驱就出来了,但是他只是个空壳,是打不开的,不过这时候你就可以写应用程序啦。

3.
对设备进行应用开发,这个包括上位机开发跟下位机固件开发,简单的说是通过上位机发送自己定义指令(存在与CBW中),下位机进行判断相应。


4
.在下位机中完成FAT文件系统,并对READ10)进行相应,使光驱能够显示容量跟文件。

5.制作烧录工具,可以将自己的应用程序烧录到设备的flash中。
这样就完成了整个开发工作,具体的内容,会在一下部分详细讲解。

相关帖子

沙发
nomoneyiv| | 2010-1-18 08:52 | 只看该作者
STM32的USB控制器,枚举成通用HID,怎么搞?用它的3.1的库,谢谢!

使用特权

评论回复
板凳
午山荡人| | 2010-1-21 13:41 | 只看该作者
两个问题:
1.如何格式化设备?
2.光盘设备采用FAT文件系统吗?

使用特权

评论回复
地板
arthur0561|  楼主 | 2010-1-25 12:22 | 只看该作者
3# 午山荡人
格式化设备我现在采集的方法是在专门的生产工具中进行。
是采集FAT16文件系统

使用特权

评论回复
5
arthur0561|  楼主 | 2010-1-25 12:23 | 只看该作者
2# nomoneyiv
没用过STM32,最好从网上找找实例吧,

使用特权

评论回复
6
午山荡人| | 2010-1-25 17:30 | 只看该作者
  
格式化设备我现在采集的方法是在专门的生产工具中进行。
是采集FAT16文件系统
arthur0561 发表于 2010-1-25 12:22

你格式化设备是用的WRITE10命令吗?
Windows能不能格式化你的设备?如果采用FAT系统,那应该更像是U盘;CDROM设备也可以使用FAT16文件系统吗?没做过,请教下

使用特权

评论回复
7
shaoshunda| | 2010-3-2 15:37 | 只看该作者
使用FAT16? ReadTOC 如何实现?

使用特权

评论回复
8
wqx0532| | 2010-11-16 15:48 | 只看该作者
不知道在固件中PID VID 设成多少  window会认这个设备 还是PID VID 随便设置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人就像不倒翁,生命的过程中为了追求最后的平衡不断的调整自己的状态,每一次变换角度不要认为就是一种进步,而仅仅是一个过程。

25

主题

84

帖子

9

粉丝