struct usb_config_descriptor* actconfig ;/ * the active configuration * /
. . .
struct usb_device_descriptordescriptor ;/ * Descriptor * /
struct usb_config_descriptor* config ; / * 所有的参数 * /
}
usb_device 结构是所有USB专门的描述符的根节点。在用驱动配置设备或者请求传输的时候发表论文,就必须分解描述符。
5.2标准的设备申请
为了查询或者设置一个特殊的配置或可选设置,可以用一个整型函数。并用这个函数建立标准的设备申请(指定设备的控制传输)。
(1)intusb_set_configuration (struct usb_device* dev , int configuration); 此函数是激活特殊的配置。0 < =configuration < dev - > descriptor .bNumConfigurations.
设configuration为0将设备设为无地址状态。这个意思是设备脱离这个设备地址并准备接受一个新的。一般不要设0。因为你将不能访问设备,直到被物理的重新连接到总线上。
(2) intusb_set_interface ( struct usb_device *dev , int interface , int alternate) ; 这个函数激活指定接口的可选设置。
(3) intusb_get_device_descriptor ( struct usb_device * dev) ; 这个函数取出了设备完整的描述符结构树。当一个设备连上总线时,这个函数就会自动被唤醒。或者当一个USB描述符改变时,此函数被调用。
(4) intusb_get_string ( struct usb_device *dev , unsigned short langid , unsigned charindex , void* buf , int size) ; 如果一个设备,配置或者接口描述符涉及到字符串索引值,这个函数可以用来重新获得字符描述符。标准的USB字符串是以UNICODE编码的。如果成功就返回0,要不然返回一个错误值。
6.结束语
USB的应用越来越广泛,传输速率越来越高。而Linux作为一种新的操作系统,其发展前景是无法估量的,同时也为USB总线与各种新型设备互连成为可能。在Linux下编写驱动程序的原理和思想与window环境下的驱动程序有很大的区别,在Linux环境下设计驱动程序发表论文,思想简洁,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便,还要考虑内核的前后兼容性,因此在设计和实现USB设备时应该注意这些问题。
参考文献:
[1]毛德操,胡希明.Linux内核源代码情景分析[M].杭州:浙江大学出版社,2003.
[2]Universal Serial Bus SpecificationRevision[Z]. Compaq, IBM, Intel, Microsoft, NEC, Northern Telecom, 1995.
[3]王伟,王自强,都思丹.USB设备上构建Linux系统的关键问题[J].电子测量技术,2008,(06).
[4]沈玉伟,杨永杰,房立鑫.基于μClinux嵌入式网络打印机服务器[J].计算机时代,2008,(05).
[5]吴丽丽.嵌入式平台下USB摄像头驱动的开发与加载[J].科技信息(学术研究),2008,(26).
[6]杜敏杰,马彦恒,刘利民.Linux下基于CY7C68013芯片的USB设备驱动程序开发[J].科学、技术与工程,2008,(21).
[7]卢志刚,刘建华,刘宝旭,许榕生.基于HID的USB监控技术的设计与实现[J].计算机工程,2010,(04).
[8]宋丽华,高珂.嵌入式Linux下USB摄像头驱动实现[J].计算机工程,2010,(09).
[9]孙永刚,张学勇,迟欢欢.基于Linux的USB设备驱动的实现[].信息技术,2010,(08).
[10]刘飞,张曦煌.基于嵌入式平台的USB摄像头驱动程序的实现[J].计算机工程与设计,2008,(08).
[11]肖珂,欧东梅,郭书军.嵌入式Linux下高速USB主控制器的设计与实现[J].现代电子技术,2009,(24).
[12]熊春杰.Linux内核移植与USB驱动开发[D].电子科技大学,2007.
[13]程科.嵌入式Linux设备驱动程序的设计与研究[D].电子科技大学,2007.
[14]王强东.面向嵌入式系统的多功能USB设备驱动研究[D].华中科技大学,2007.
2/2 首页 上一页 1 2 |