现在的位置: 首页 > 综合 > 正文

z301摄像头的驱动移植

2014年01月05日 ⁄ 综合 ⁄ 共 1681字 ⁄ 字号 评论关闭

下面说一下使用的2.6.28内核里的驱动文件编译的过程

首先make menuconfig,主要需要选的配置项如下:

Device Drivers ->

   Multimedia devices->

        <*>video for linux

         [*]video capture adapters->

              [*]V4l USB devices ->

                   <*>USB video class (UVC)

                    [*]  UVC input events device support

                   <*>GSPCA based webcams ->

                             <*>ZC3XX USB Camera Driver

做好如上配置后就make,产生zImage,烧入板子,启动

插入usb摄像头,产生提示信息:

drivers/usb/media/gspcav1-20071224/gspca_core.c: USB GSPCA camera found.(ZC3XX)

 configuration #1 chosen from 1 choice 

gspca:probing 0ac8:304b

zc3xx:probe 2wr ov vga 0x7648

zc3xx:probe 3wr vga 1 0x4001

zc3xx:probe sensor ->7648

zc3xx:Find Sensor OV7648

gspca:probe ok

至此说明系统发现usb设备,并且自动将驱动文件加入内核,设备可以使用了

输入命令mdev -s 更新设备节点,ls /dev 查看设备节点,应该看见设备节点video0 ,输入命令 cat video0 > 2.img,将摄像头数据输出到2.img文件中,将该数据使用ftp或者u盘移到pc上,查看,可以看见摄像头工作了,振奋人心的时刻……

昨天两次编译都成功,但是使用自动加载驱动的内核后,使用servfox 程序的时候被告知不是jpeg webcam。之前大致看过servfox的源码,因为它主要使用jpeg格式数据作为操作对象,所以如果设备输出不是jpeg格式的话,它不能正常工作。google之后看了一篇文章(该文章地址http://blogold.chinaunix.net/u/16942/showart_96045.html),虽然不是很懂,但是受到启发,感觉这个问题应该是跟驱动有关系,因为文中说中星微芯片支持压缩jpeg格式,而且还说道控制中星微芯片的jpeg压缩比是在zc3xx.h中的函数,所以我认为应该跟驱动有关系。抱着试一试的想法,将之前由gspcav1-20071224单独编译出来的驱动加载到板子上,调用servfox命令,正常运行,证明之前的假设。下面是加载gspcav1-20071224过程。

首先我将gspcav1-20071224中编译好的gspcav.ko移到nfs目录下
开发板挂载
insmod gspcav.ko失败,提示信息如下
usb 3-1: new full speed USB device using ohci_hcd and address 2
usb 3-1: configuration #1 chosen from 1 choice
gspca: Unknown symbol video_devdata
gspca: Unknown symbol video_unregister_device
gspca: Unknown symbol video_device_alloc
gspca: Unknown symbol video_register_device
gspca: Unknown symbol video_usercopy
gspca: Unknown symbol video_device_release

google一下,有很多,应该是在配置内核的时候没有选v4l的缘故,重新配置内核,选好v4l,将驱动项选为模块加载
重新make,烧写内核
重新insmod gspca.ko,加载成功
使用servfox,成功……

抱歉!评论已关闭.