Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4568712
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2007-01-19 17:19:43


最近开始准备搞摄像头了,按装spca5xx时,出现没有jiffies_to_msec 符号的警告,别看这个只是一个警告,
但在内核的驱动里面出现,就有可能导致驱动加载不上的错误哦。
 
 看INSTALL上说kernel 的高版本没有警告, 再加上前一段时间学驱动程序的编写,说最好用自己的内核,
不要用发行版的内核。

所以准备把内核升级了,版本为2.6.18.4
升级过程中,参考了下面的文档

Linux-2.4.20-8升级内核到Linux-2.6.13实战:

首先,在编译之前,要做以下几个准备工作:

1、  下载module-init-tools-3.1.tar.bz2,

下载地址:

下载完后进行如下操作:

tar –zxvf module-init-tools-3.1.tar.bz2

./configure --prefix=/
        make moveold
        make all install
        ./generate-modprobe.conf /etc/modprobe.conf

2、  下载mkinitrd-4.1.18-2.i386.rpm,

下载地址:

 

3、  下载lvm2-2.00.25-1.01.i386.rpm和device-mapper-1.00.19-2.i386.rpm

下载地址:

http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm

4、  删除旧的软件,方法如下

rpm –e  (旧的软件名,这里是软件名,不是软件包,如mkinitrd-4.1.18-2) --nodeps

接下来两步和上面一样,把旧的lvm和device-mapper删掉,记住,这里要加――nodeps参数,不然是删不掉的[*浏览了很多的资料,发现都是没有提及这一步的,都说使用――nodeps强制安装就可以,可我装的时候却出现了错误,所以大家可以先省略这一步,先做第五步,出了问题再做一下第4步]

5、  如果已执行了第四步,直接使用rpm –ivh package-name

如果未执行第四步,使用rpm –ivh package-name ――nodeps

6、OK,编译前的准备工作做好了,如果不更新以上几个包在make install时会提示以下错误:mkinitrd failed
        make[1]: *** [install] Error 1
        make: *** [install] Error 2

7、现在可以编译了吧!!NO,还得去下内核呢!

8、把下载的tar包CP到/usr/src目录下,并使用tar –zxvf linux-2.6.13.tar.gz

9、cd /usr/src/linux-2.6.13

10、好了,万事俱备!!哦,对了,忘了提醒一点了,请确保你有足够的磁盘空间,具体要求多少空间我不知道,记得大一点的好,有一次编译到最后就提示空间不足

11、OK,接下来就正式开始make了:

  #make menuconfig

    使用这个命令后会打开一个编译对话框,以后的事就你自己慢慢去发挥吧,我也是新手,对那里面的东西也不是很熟悉,大家可以到网上去找一下关于那方面的资料,但是针对于在vmware5.0中做的朋友来说,以下几点是要特别注意的

A:Device Drivers  --->SCSI device support  ---><*>   SCSI disk support

Device Drivers  --->SCSI device support  --->SCSI low-level drivers  --->

<*> BusLogic SCSI support,如果这几项不选,等编译完成后重启后会发现系统会提示:No module BusLogic found for kernel的错误,然后死掉

   B:Device Drivers  ---> Fusion MPT device support  ---> Fusion MPT (base + ScsiHost) drivers和   Fusion MPT misc device (ioctl) driver(这个要不要,不确定)
注意:只能选模块方式,直接编译进内核,就出错,不知道为什么,这个浪费了我好多时间才找到,编译了几十次的成果。
出错信息如下:No module mptbase found for kernel vmware(*我使用默认方式并没有出现这个提示,这一段是一个网友所述,不知为何!)

   C:Device Drivers  ---> USB support  ---><*>   USB Mass Storage support
Device Drivers  ---> Networking support  --->Ethernet (10 or 100Mbit)  ---> <*>   AMD PCnet32 PCI support(*这两段也是从那位网友那CP来的,不知这个USB不设会不会启不来,第二段是设置网卡的,VMWARE是使用AMD PCnet32的)

   D:还有一点切记,把所有的有关ext3(Ext3 journalling file system support, Ext3 Security Labels和JBD (ext3) debugging support等等)的选项都编译到内核里面去,记住,是内核<*>不是模块,否则重启系统后会提示:Mount: error 19 mounting ext3

   E:差不多了,还有其它的一些什么自己看看吧,或者上网搜一下,介绍一个不错的网站。

12、     make 
         make modules_install      //如果没有模块就不需要。

13、make install       //update  grub

14、OK,这样就行了,init 6你的系统,会发现在重启后,在引导的时候会有两个不同内核的系统可选,我们当然要选刚编译的系统啦。

重启发现usbfs 错误
fs type usbdevfs not supported by kernel

usbdevfs 这个名字已经改了 改为usbfs
于是 打开/etc/rc/rc.sysinit 找到这里:

if [ $usb = 1 -a ! -f /proc/bus/usb/devices ];
then action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs /proc/bus/usb
fi


修改其中的 usbdevfs 为 usbfs  。即可解决。




哪知在2.6.18.4下面编译驱动, 错误有7,8个,好像是 videodev.h中的数据结构名字变了, 结果webcamera也没
搞成功。

重新进到2.6.5下面,自己分析了一下,出警告的原因, 对照内核源码,改了一句代码,把
jiffies_to_msec(x)  换成x*10 ,make 顺利通过。

插上摄像头,终于成功,
[root@hujunlinux camera]#
spcaview
 Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr
Initializing SDL.
SDL initialized.
bpp 3 format 15
Using video device /dev/video0.
Initializing v4l.
**************** PROBING CAMERA *********************
Camera found: Z-star Vimicro zc0301p
Bridge found: ZC301-2
Bridge find ZC301-2 number 13
StreamId: JPEG Camera
wrong spca5xx device
Bridge find ZC301-2 number 13
Available Resolutions width 640  heigth 480 native
Available Resolutions width 352  heigth 288 decoded
Available Resolutions width 320  heigth 240 native *
Available Resolutions width 176  heigth 144 decoded
*****************************************************
 grabbing method default MMAP asked
VIDIOCGMBUF size 2457616  frames 2  offets[0]=0 offsets[1]=1228808
VIDIOCGPICT
brightnes=32768 hue=0 color=0 contrast=32768 whiteness=0
depth=12 palette=4
VIDIOCSPICT
brightness=32768 hue=0 color=0 contrast=32768 whiteness=0
depth=24 palette=15
 
 
Used 18994ms for 472 images => 40ms/image 24fps.
Quiting SDL.
Decoded frames:472 Average decode time: 3.000000
unmapping
closing
closed
Destroy Picture thread ...
Quiting....




看到了自己的头像。


感觉linux就是好阿, 自己懂得越多,系统就用得越顺, 有什么问题,找出问题的原因, 一定能够解决!
 Linux video capture interface: v1.00
Jan 20 15:04:33 hujunLinux kernel: /public/camera/spca5xx-20060501/drivers/usb/spca5xx.c: USB SPCA5XX camera found. Type Vimicro Zc301P 0x301b
Jan 20 15:04:33 hujunLinux kernel: /public/camera/spca5xx-20060501/drivers/usb/spca5xx.c: [spca5xx_probe:5482] Camera type JPEG
Jan 20 15:04:33 hujunLinux kernel: EXT3 FS on hdb2, internal journal
Jan 20 15:04:33 hujunLinux kernel: device-mapper: 4.1.0-ioctl (2003-12-10) initialised: dm@uk.sistina.com
Jan 20 15:04:33 hujunLinux kernel: /public/camera/spca5xx-20060501/drivers/usb/zc3xx.h: [zc3xx_config:558] Find Sensor HV7131R(c)

后记: 上面是用的2.6.5的内核 加载spca5xx.o驱动的
             后来又在2.6.18.4的内核加载gspca.ko驱动成功用摄像头看到了自己哦, 关键是要配置内核,
刚开始加载驱动也是不成功,说是

Jan 23 21:01:18 hujunLinux kernel: usb 3-1: new full speed USB device using ohci_hcd and address 2
Jan 23 21:01:18 hujunLinux kernel: usb 3-1: configuration #1 chosen from 1 choice
Jan 23 21:01:25 hujunLinux kernel: gspca: Unknown symbol video_devdata
Jan 23 21:01:25 hujunLinux kernel: gspca: Unknown symbol video_unregister_device
Jan 23 21:01:25 hujunLinux kernel: gspca: Unknown symbol video_device_alloc
Jan 23 21:01:25 hujunLinux kernel: gspca: Unknown symbol video_register_device
Jan 23 21:01:25 hujunLinux kernel: gspca: Unknown symbol video_usercopy
Jan 23 21:01:25 hujunLinux kernel: gspca: Unknown symbol video_device_release




后来把ov511, zc0301  usb camera作为了模块,编译内核, 在那个网站上下载针对
2.6.11的摄像头驱动gspcav1-20070110.tar.gz, 成功了, 而且图像更清晰。

Linux video capture interface: v2.00
26611 Jan 23 22:31:36 hujunLinux kernel: zc0301: V4L2 driver for ZC0301[P] Image Processor
 and Control Chip v1:1.05
26612 Jan 23 22:31:36 hujunLinux kernel: usb 3-1: ZC0301[P] Image Processor and Control Ch
ip detected (vid/pid 0x0AC8/0x301B)

阅读(5117) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~