USB设备驱动程序导读(9)


以Bot.c文件中的BOT_DataTransfer()函数为例,在这个函数中,读写操作全部是调用了IssueBulkTransfer()函数,这个函数是由USBD提供的接口并且被usbclient.c程序进行了再次封装,它可以完成对物理USB设备的数据存取操作,这就要根据不同的设备来进行了,而且还要区分是命令操作还是数据操作,是命令状态操作还是其他操作等等,需要与设备及USB标准来对应。因为只是学习一个框架,所以有兴趣的话可以深入研究一下。

到此为止,一个USB设备驱动程序的最基本框架就已经浏览了一遍,很粗糙也很烦杂,到头来废话说了太多,也不知是否能说到关键之处。为了留下一个整体的印象,我们使用下面的图示进行回顾。

下面的两层是与硬件设备相关的,上面的两层是硬件无关的,这样,所有的同类硬件设备都可以共用上面设备无关的驱动部分,向操作系统和应用程序提供统一的接口,而硬件相关部分则要根据不同的硬件加以实现。这就是我们最近了解到的USBMSC的驱动程序。如果有什么需要可以发邮件给我,我对此也只是略知一点,大家相互探讨才能有更大的收获,期待与更多的朋友交流。