- 论坛徽章:
- 0
|
本人认真阅读了spca5xx摄像头驱动程序的源码主要文件spca5xx.c,把自己的一些理解写出来,希望对大家有所帮助,同时不对之处,希望大家指出 ,以求共同进步! 本源码得下在地址http://mxhaard.free.fr/embedded.html 本源码是真对usb摄像头的驱动程序,也是一种usb设备驱动程序,结构上按照usb设备驱动程序的写法: 1。该设备驱动程序支持的设备列表 static __devinitdata struct usb_device_id device_table[] = { {USB_DEVICE(0x0733, 0x0430)}, /* Intel PC Camera Pro */ {} /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, device_table);//允许用户空间的工具判断出该设备驱动程序可以控制什么设备。 2。实现struct usb_driver中的核心函数探测函数和断开函数,有关实现细节以后再讲述!以下是2.6版本的接口函数 static int spca5xx_probe(struct usb_interface *intf, const struct usb_device_id *id) static void spca5xx_disconnect(struct usb_interface *intf) 3。struct usb_driver 结构体初始化 static struct usb_driver spca5xx_driver = { .owner = THIS_MODULE, .name = "spca5xx", .id_table = device_table, .probe = spca5xx_probe, .disconnect = spca5xx_disconnect }; 4。利用usb_register(usb_driver *)函数把3初始化的结构体注册到usb core,传统的实现是在usb驱动程序的模块初始化代码中完成该工作的。驱动程序卸载时利用usb_deregister(usb_driver *)把结构体struct usb_driver 从内核中注销掉 static int __init usb_spca5xx_init(void) { if (usb_register(&spca5xx_driver) < 0) return 0; } static void __exit usb_spca5xx_exit(void) { usb_deregister(&spca5xx_driver); } 5。module_init(usb_spca5xx_init); module_exit(usb_spca5xx_exit); 至此,好像所讲的东西还没有和摄像头有什么关系!!我也有这样的感触!!!下边就让我们从spca5xx_probe地实现看起,逐步了解摄像头是如何工作的!!!!尽快写出来,太累了!!!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/16013/showart_188823.html |
|