被围观了 2,773 次

USB 应用开发鸟瞰 2011年3月26日

借助于Linux系统先进的设备管理策略,开发与usb设备通信的应用程序就比较简单——就是打开usb设备获取设备句柄、然后读写句柄、最后就是关闭句柄了。不过在内核层,操作就复杂了,对于应用层递交下来的操作,要依次穿过内核层中的USB设备驱动、USB驱动和USB主控制器驱动,但是作为应用程序开发员来说,他可以不用关心这些细节。

在通用Linux系统中,usb控制芯片驱动(uhci.o|usb-ohci.o|ehci-hcd.o)和usb核心驱动(usbcore.o)都是已经准备好了的,可以随时加载,而对于大多数通用的usb设备,相应的驱动也已经以模块文件的形式安装了,当插入usb设备时自动加载这些模块(比如u盘的驱动usb-storage.o,usb鼠标的驱动usbmouse.o、mousedev.o以及usb键盘驱动usbkbd.o、keybdev.o等等)。

如果usb设备是自己开发的且不是通用的,那么就要自己编写的usb设备驱动了,对于如何编写usb设备驱动,超出了本文要讨论的范围(感兴趣的同仁可以参考linux内核源码树下的usb驱动框架文件drivers/usb/usb-skeleton.c,顺便提一下:对于开发pci插卡的设备驱动框架可以参考这个drivers/net/pci-skeleton.c)。鸟瞰图如下:

 
目前有0条回应
Comment
Trackback
你目前的身份是游客,请输入昵称和电邮!

Verify Code   If you cannot see the CheckCode image,please refresh the page again!