这两天照着网上的帖子,很辛苦的找到了所需要的源代码,具体流程如下:
1、修改drivers/usb/Makefile文件,在
obj-$(CONFIG_USB_W9968CF)
+= media/
之后添加一行:
obj-$(CONFIG_USB_SPCA5XX) += media/
2、修改drivers/usb/media/Kconfig文件,在最后添加:
config USB_SPCA5XX
tristate "USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras"
depends on
USB && VIDEO_DEV
---help---
Say Y or M here if
you want to use one of these webcams:
The built-in microphone is
enabled by selecting USB Audio support.
This driver uses the Video
For Linux API. You must say Y or M to
"Video For Linux" (under
Character Devices) to use this driver.
Information on this API and
pointers to "v4l" programs may be found
at
.
To compile this
driver as a module, choose M here: the
module will be called
spca5xx.
3、修改drivers/usb/media/Makefile
,添加:
obj-$(CONFIG_USB_SPCA5XX) += spca5xx/
4、在usb/media目录下建立spca5xx目录
#mkdir drivers/usb/media/spca5xx
5、在drivers/usb/media/spca5xx添加如下文件:这些代码可以从 ...
2.6.12.patch.tar.gz
中下载
(1)、cs2102.h
(2)、hdcs2020.h
(3)、hv7131b.h
(4)、hv7131c.h
(5)、icm105a.h
(6)、Makefile
(7)、Makefile.2.4
(8)、Makefile.org
(9)、pas106b.h
(10)、pb0330.h
(11)、sn9cxxx.h
(12)、sp5xxfw2.dat
(13)、sp5xxfw2.h
(14)、spca5xx.h
(15)、spcaCompat.h
(16)、spca_core.c
(17)、spcadecoder.c
(19)、spcadecoder.h
(20)、spcausb.h
(21)、tas5130c.h
(22)、zc3xx.h
6、配置内核
(1)Multimedia devices --->
Video For
Linux
(2) USB support --->
Support for Host-side
USB
--- USB Host Controller Drivers
OHCI HCD
support
(3)--- USB Multimedia devices
USB SPCA5XX
Sunplus/Vimicro/Sonix jpeg Cameras
7、编译内核及模块
#make uImage
#make modules
8、拷贝模块文件到开发板文件系统目录下
walker/
walker/module_file
以上两个目录为手动建立的目录
cp
drivers/media/video/v4l1-compat.ko
/friendly-arm/rootfs_netserv/home/walker/module_file
cp
drivers/media/video/v4l2-common.ko
/friendly-arm/rootfs_netserv/home/walker/module_file
cp
drivers/media/video/videodev.ko
/friendly-arm/rootfs_netserv/home/walker/module_file
cp
drivers/usb/core/usbcore.ko
/friendly-arm/rootfs_netserv/home/walker/module_file
cp
drivers/usb/media/spca5xx/spca5xx.ko
/friendly-arm/rootfs_netserv/home/walker/module_file
9、将USB摄像头插入开发板(注:必须先插入摄像头才能插入模块文件,否则系统会出现kernel oops)
10、重新启动开发板
11、插入模块文件(注:这里必须注意模块的插入顺序,这是因为模块的依赖关系)
/sbin/insmod
/home/walker/usbcore.ko
/sbin/insmod /home/walker/ohci-hcd.ko
/sbin/insmod
/home/walker/v4l1-compat.ko
/sbin/insmod
/home/walker/v4l2-common.ko
/sbin/insmod
/home/walker/videodev.ko
/sbin/insmod
/home/walker/spca5xx.ko
这里再次多谢这篇帖子的作者写得这么详细。。
可以说没有什么问题。不知道为什么法国那个网站我上不去了,上面提到的源代码我是东一个西一个不同的论坛上下的。这里上传不了,如果有需要源码可以发邮件给我:
末了,提出自己的问题,希望有经验的大侠能够指点指点,我的模块加载没问题,mknod /dev/video0 c 81
0之后运行serfox也没问题,但是在客户端用spcaview连接的时候就提示找不到设备,不知道是为什么?
我用的是cramfs文件系统,也就是说是只读文件系统,是不是由于这里的原因呢?
谢谢
哦 已经可以看到设备节点,我开始故意少加载一个模块,这时候运行servfox就会出现错误,但是当我所有模块加进去之后就没有出现错误,而且用cat
/dev/v4l/video0 > /tmp/a.jpg 也可以获取,故此断定驱动应该是没有问题的。
由于我的主机是2.4内核,而armlinux是2.6.1内核,试了也不一样,所以就没有在主机上捣鼓,还是也试试呢。。 再去网上看看。。
刚吃饭去了.....呵呵..
是这样的... 按照前面帖子的做法..
已经把驱动模块都挂上了..
这个时候需要一个服务器视频采集程序,就是我发过去的那个代码servfox-R1_3_0.tar.gz
把这个代码解压之后,里面有个Makefile.arm,把这个文件改成Makefile
然后修改Makefile里面的交叉编译器,Make之后得到servfox文件,拷到我的armlinux文件系统的/bin目录下
mknod
/dev/video0 c 81 0 创建设备节点..
servfox -g -d /dev/video0 -w 7070
在armlinux下运行刚刚移植进去的servfox
这个时候服务端已经起来了.
客户端,我是在RH9中,记住,一定是X-windows界面下哦... 这里用到那个源代码spcaview,这个好编译,直接make
makeinstall一下就完了..
然后在客户端运行 spcaview -g -w 192.168.0.1:7070
激动了...
看到了吧....
这次说说用web页面观看的问题了,呵呵
一鼓作气啊..
在主机上,进入spcaview安装的目录下,是不是看到有个目录叫做http-java-applet呢,对了就是它.
我们需要把它拷贝到boa的主目录下,也就是你的DocumentRoot
的目录下,但是在做这个工作之前我们需要把这个目录的权限修改一下,chmod -R 755
/home/spcaview/http-java-applet(之前我就是没做这一步导致applet程序不能运行)这时把这个文件夹整个拷贝到boa的主目录下,然后启动boa服务器..
进web浏览器 ,便可以看到了
你在网站上显示图片的话,别人必须不断的刷新才能看见新的图片撒。。
所以在我提供的源程序中有个JwebPlayer的程序,是个applet小程序,可以加载到web页面中用来播放视频流
非常感谢楼主,我的问题解决了,现在可以在网页上看到视频流了
之前我看不到的原因,第一次是网址设置不对,后来是程序里的端口和./servfox时不一致
中途还碰到过小应用程序加载失败的问题,那是没有将.jar包和index-sample.html放在同一目录下
再次感谢楼主~~~
要用到的软件包
摄像头驱动: ...
31LE06.patch.tar.gz
服务器视频采集: ...
rvfox-R1_0_0.tar.gz
客户端播放视频:
浏览器java
plugs: ...
-linux-i586-rpm.bin
一、硬件平台:
2410开发板
摄像头:zc301p
二、软件平台:
armLinux
三、驱动程序:
编译
zc301驱动
主要的思路是重新编译内核,将对应的摄像头支持模块选上.
但是LINUX内核中系统中没有ZC301P摄像头驱动,要下载对应的内核补丁,其补丁和驱动在中有对应的驱动下载,此处用到的是: ...
31LE06.patch.tar.gz,此patch是为令重编内核时,有spcaxx系列摄像头的支持。
(1)把它复制到/armlinux/kernel/driver/usb下,解压,打补丁.
tar -xvzf
usb-2.4.31.patch.gz
patch -p1 <
usb-2.4.31.patch
此时就会在此目录下看到spca5xx文件夹了.不知是何原因,估计是KERNEL版本的原因,在/armlinux/kernel/driver/usb
的目录中的Makefile 和config.in中找不到对应的关键字,此时会有一些错误,并将错误放在Makefile.rej 和config.in.rej
两文件中,打开两个文件,分别将其中前面有+的文字加到
Makefile和config.in中
对应的分类中即可.
(2)编译内核,进入/armlinux/kernel,
make
menuconfig.
在arm linux的kernel目录下make menuconfig,
首先<*>选择Multimedia
device->下的Video for linux,
然后 USB support ---> USB Multimedia
devices 选项下应该有
USB SPCA5XX Sunplus Vimicro Sonix
Cameras,要把它配置成module。
(3)make dep;make zImage;make
modules.就会在/armlinux/kernel/arch/arm/boot下生成zImage,这就是我们生成最新的内核,将此内核通过终端下载到开发板中,/armlinux/kernel/driver/usb/spca5xx中生成spca5xx.o,spcadecoder.o,spca_core.o.这就是我们要的驱动.
(4)用新内核启动,insmod这三个.o文件(可以不用加载spcadecoder.o),摄像
头就加载成功,也可用modprobe
spca5xx.o 命令,此命令会自动去加载其要支持的.o文件.
如果一切顺利的话,此时将在看到类似下面的信息,
Using /mydev/spca5xx.o
usb.c: registered new
driver spca5xx
spca_core.c: USB SPCA5XX camera found. Type Vimicro Zc301P
0x301b
spca_core.c: spca5xx driver 00.57.06LE registered
此时会在/dev/成生成 v4l/video0表明摄像头成功安装。
四、应用程序:
1、移植视频采集程序servfox
移植此程序是最简单的,从 ...
rvfox-R1_0_0.tar.gz下载后,解压后,会发现在其目录中会有一个Makefile.arm文件,将此文件修改成Makefile,再make就可生成我们要用到的serfox程序了,将
此程序上传到我们的板中,运行就行了。
另外在运行servfox前,一定要运行"mknod /dev/video0 c 81
0"这步,
不写"mknod /dev/video0 c 81 0"这步,出现 ERROR opening V4L interface错误。
#
servfox -d /dev/video0 -s 320x240 -w 7070
在服务器端运行servfox,图像大小为320x240,端口号为
7070
2、客户端spcaview
到下载spcaviev
,make生成目标文件,
在PC上,spcaview –w
192.168.1.186:7070就可以看到摄像头采集来的图片了。Servfox和spcaview还有很多选项,可以通过spcaview –h
和servfox –h查阅,其中.
解压后,还会产生,此是WEB客户端,将此客户端上传到开发板上的WEB文件夹中,则在浏览器输入 则可看到摄像头采集来的图片了。
web
SERVER是移植 boa,移植方法略
3、web浏览器安装jre
1、去这里: ...
-linux-i586-rpm.bin
下载最新自解压安装包,其自解压出来的rpm包是不能够直接使用的,要不就直接提供rpm包安装了;
2、使用命令如下:
chmod +x
./jre-1_5_0_09-linux-i586-rpm.bin
./jre-1_5_0_09-linux-i586-rpm.bin
按空格查看下面的条款,然后输入yes安装完毕后,进行下一步;
3、 到firefox/lugins目录(在我的NeoShine-Linux下是
/usr/local/firefox/plugins)或者~/.mozilla/plugins下执行:
ln -s
$JAVA_HOME/jre/plugin/i386/ns7/libjavaplugin_oji.so
./
如果是安装的jre,可能命令语句如下:
ln -s
$JAVA_HOME/plugin/i386/ns7/libjavaplugin_oji.so
如果是安装的jre就是jre文件夹地址。
这样就安装完成了。可以在firefox地址栏里输入about:plugins查看是否安装成功。
将连接创建在~/.mozilla/plugins下是放在当前用户下,不需要root权限,不影响其他用户。
从视频的效果来看,是很流畅和清楚,比想象中要好。