啊达 https://bbs.21ic.com/?549219 [收藏] [复制] [RSS] 共建学习联盟

日志

免驱动免安装USB设备制作(1)

已有 2793 次阅读2010-1-14 09:39 |个人分类:肖工的USB初学者总结|系统分类:单片机

见到很多的USB设备都是免驱动免安装的,感觉比较好,用户买了设备就能直接用,相当方便。基本上的思想是把设备枚举成CDmass storage类),然后将需要运行的程序写入设备中。这样用户只要插上设备就能自动识别成CD,打开CD里就是应用程序。


所谓免驱动,也就是利用微软定义好的usb设备类,驱动已经存在于操作系统中,我们只要按照设备类规定的协议进行操作就可以了。比如你自己做一个键盘,或者u盘,只要写写固件将你的设备在枚举阶段被识别成相应的设备可以啦。


要完成这个任务需要的知识点包括:1USB枚举,这个必须完完全全搞明白,不然一点效果也做不出来滴。我前面有几篇文章已经写过这方面的内容。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中。


这样就完成了整个开发工作,具体的内容,会在一下部分详细讲解。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)