最近一直研究USB驱动开发,看了有关USB的协议,那可是真多呀,可以让人看到吐的感觉。最关键的是对于我们的开发需要东西,少之甚少。那么我们究竟应该如何开发USB驱动呢?我谈谈我个人的开发经历和感受。有错的地方请大家指正。
首先开发USB设备驱动,我们应该知道在windows XP下USB驱动windows给我们做了哪些已有的工作,我们驱动开发人员需要做哪些工作。经过查阅资料,在windows XP下开发USB驱动我总结出有两种可选方案,我对这两种方案都进行了试验,各有优缺点。我个人感觉针对这种优缺点,应该说是应用的场合不一样而定的。第一种方案:就是自己开发一套USB驱动程序,根据windows提供的硬件层,我们驱动开发人员在windows下开发任何驱动程序也只能是开发功能层。但是需要了解windows的USB通信机制。实现复杂性有难度。第二种方案:利用HID类开发驱动,HID(人机交互设备)这个类提供了有关人机交互的驱动程序。例如我们的鼠标、键盘看上去不用安装任何驱动,windows就能识别并能使用。这实质是利用windows提供的HID驱动程序,但是这种HID类没有USB块传输方式,因此只能用于低速设备。理论上是64k/s。
第二步,我们就应该了解硬件的固化程序怎么写了,固化程序的开发,就说对芯片的开发了,如摄像采集卡。我们用采集芯片采集到的数据,通过我们开发的固化程序,通过USB驱动传输到windows上层应用程序。如何写固化程序呢?我是在基于单片机51上开发的固化程序。将采集到的数据通过USB芯片传输到上层。
第三步:就是在windows应用程序中获取固化程序传输 上来的数据啦。那么这层的调用,完全是基于windows编程的。不需要了解底层设备的运行机制,只需要知道USB设备调用函数就可以编写程序。在程序中我们需要解析上上来的数据报。然后将数据显示出来。
总结:上面就是USB开发的三个步骤。也是开发的方向。是我自己在开发过程中总结出来的,希望与同行共勉。