在RH9.0+vmware 5.xx上从开始到最后实现spca5xx驱动的安装 以及 嵌入式板上的驱动移植

因为毕业设计的关系,需要在RH9.0上安装一个支持中微星芯片的摄像头驱动。

驱动下载:到mxhaard.free.fr.
<上不去这个网站情况.> -->可以使用代理上,我用的是Torpark+Firefox,就可以上了,或者简单一点,找一个代理IP,加到IE的代理设置里

驱动说明:2.4~2.6.11(不包括2.6.11)使用spca5xx-20060501.tar.gz,或者 v4l的最终版spca5xx-v4l1goodbye.tar.gz,2.6.11开始gspcav1-20071224.tar.gz,
网站上的说明如下:
NEWS support Vimicro vc0323, upto 260 webcams ,Happy Christmas :).
until gspca v4l2 is finished, used:
gspcav1 "Generic Softwares Package for Camera Adapters" version 1.00.20 date: 24/12/2007
for kernel up from 2.6.11 : gspcav1-20071224.tar.gz
for kernel below 2.6.11: spca5xx version 0.60.00-1:spca5xx-v4l1goodbye.tar.gz

安装过程中遇到的问题解决:
<1.编译驱动>

1.1用RH9.0原来的内核2.4.20-8的时候,能编译驱动,只要修改spca5xx.c第83行以及第3234行的那个map函数
#else    /* RH9_REMAP */
 if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) {
#endif    /* RH9_REMAP */
这里会少一个参数,直接把第一个参数改成0,remap_page_range(0,start, page, PAGE_SIZE, PAGE_SHARED),于是可以编译通过;
用其他版本的驱动也是一样,我这里用的是20060501

严重的问题出现了,我用modprobe加载驱动后,摄像头没有被识别,(这里说明一下安装了驱动后/dev/video0未必能连到设备,我最后成功的时候它也是一个空的链接),于是我开始google,这里花费了我很多功夫。最后很多资料都是到Linuxsir上找到的,虽然有类似的帖子,但是都没有实际的说明,也许他们大虾太厉害了,对此不屑一顾。但是我觉得很多问题没有深入理解之前,都是一个迷,特别是对Linux这种开源的东西来说,因为别人给你的解释往往是,自己去看代码吧。(闲扯就此打住)

<2.换内核>
作者在驱动里有这样一段说明:
Supported kernel versions
=========================
The driver should compile and run successfully against most stable versions of
the official Linux kernel (from <http://www.kernel.org/>), within the range
2.4.10 to 2.6.14 inclusive. exept kernel 2.4.22, 2.4.23,  2.6.3
  --------------------------------------------------------
  -Distro patched Kernel should work but are unsupported.-
  --------------------------------------------------------
Specifically, it has been tested against:
 2.4.10   Compiles ok, with 1 warning
 2.4.25   Compiles ok, with 1 warning. 
 2.4.26   Compiles ok, with 1 warning.
 2.4.31   Compiles ok, with 1 warning. 
/lib/modules/2.4.25/build/include/linux/highmem.h: Dans la fonction ?bh_kmap ?
/lib/modules/2.4.25/build/include/linux/highmem.h:20: attention : usage en arithm閠ique d'un pointeur de type ?void * ?Don't care module should load and works fine :)
 2.6.7   Compiles ok, with no warnings.
 2.6.8.1  Compiles ok, with no warnings.
 2.6.9   Compiles ok, with no warnings.
 2.6.11.7  Compiles ok, with no warnings.
 2.6.12.6  Compiles ok, with no warnings.
 2.6.13   Compiles ok, with no warnings.
 2.6.14   Compiles ok, with no warnings.
 2.6.15 rc6 Compiles ok, with no warnings.
 2.6.15.4 Compiles ok, with no warnings.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< KERNEL 2.4.22 2.4.23 2.6.3 are UNSUPPORTED !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
这段很重要
可以大大缩短我们的实验时间

原先我很笨,开始尝试很多版本,其中包括2.4.22。后来我选取的是2.4.25和2.6.10,选2.4.25是自己的决定,2.6.10是看到Linuxsir上有人说他是用这个版本的(不过他用的好像是Debian).

VMware上编译内核需要注意的几点想必大家都知道了(不知道可以找一下,我也写过类似的东西),反正这次我们必须装上的东西是V4L,在Multimedia devices下,当然还有下面的一个小模块,至于内核里摄像头驱动可以不加。(BusLogic.o和文件系统类型的问题我不说了)

过程很简单make menuconfig ;make dep&&make bzImage&&make modules&&make modules_install&&make install(前提是你应该装的工具都装好,一般上只要选了RH的内核开发工具就可以的),然后改一下grub.conf里的root,好了 ,重启,顺利进入

#再重新编译一次驱动,make一下,depmod -a,再modprobe spca5xx(刚出炉的模块),好了,lsmod看一下,应该顺利弄上去了。

ot@localhost spca5xx-20060501]# make
Compiling drivers/usb/spcadecoder.c
Compiling drivers/usb/spca5xx.c
drivers/usb/spca5xx.c:150: warning: `bright' defined but not used
drivers/usb/spca5xx.c:151: warning: `contrast' defined but not used
Linking spca5xx.o
[root@localhost spca5xx-20060501]# ls
CHANGELOG  INSTALL   README                     README-TV8532
cutlog.py  LICENSE   README-KERNEL-UPTO-2.6.16  RGB-YUV%2fmodule-setting
drivers    Makefile  README-SONIX               spca5xx.o
[root@localhost spca5xx-20060501]# depmod -a
depmod: *** Unresolved symbols in /lib/modules/2.4.25/kernel/drivers/scsi/BusLogic.o
[root@localhost spca5xx-20060501]# make install
Linking spca5xx.o
Installing.. Your root password may be required.
su -c "make install-root"
make[1]: Entering directory `/home/rendy/spca5xx-20060501'
Installing..
depmod: *** Unresolved symbols in /lib/modules/2.4.25/kernel/drivers/scsi/BusLogic.o
make[1]: Leaving directory `/home/rendy/spca5xx-20060501'
[root@localhost spca5xx-20060501]# modprobe spca5xx.o
modprobe: Can't locate module spca5xx.o
[root@localhost spca5xx-20060501]# modprobe spca5xx
[root@localhost spca5xx-20060501]# lsmod
Module                  Size  Used by    Not tainted
spca5xx               598192   0
videodev                9440   1  [spca5xx]
pcnet32                18144   1
mousedev                5688   1
keybdev                 3136   0  (unused)
input                   6144   0  [mousedev keybdev]
[root@localhost spca5xx-20060501]# ls -ls /dev/video
total 0
   0 crw-------    1 root     root      10, 204 Jan 30  2003 em8300
   0 crw-------    1 root     root      10, 206 Jan 30  2003 em8300_ma
   0 crw-------    1 root     root      10, 205 Jan 30  2003 em8300_mv
   0 crw-------    1 root     root      10, 207 Jan 30  2003 em8300_sp
[root@localhost spca5xx-20060501]# ls -ls /dev/video0
   0 crw-------    1 root     root      81,   0 Apr  5 13:16 /dev/video0  (这个还是一个空的)

这是我拍下来的

亮度还有点问题。至于在RH9.0上升级内核到2.6.10虽然也可以成功编译,但是insmod和modprobe的版本过低,不能加载驱动,可以升级响应的软件工具。

最后希望有需要的朋友都成功,也可以联系我,如果可以帮上忙的话。sfezst@126.com


#############################
嵌入式板上的移植我原来也写过,其实谈不上移植,也就是安装一下,而且更简单。主要是去官网下载一个LE的驱动或者是弄个USB**LE**的补丁,直接patch到内核树上,编译一个带驱动的内核就OK了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值