基于linux-2.6.32.2的servfox移植

说明:这篇文章是本人在做基于web客户端的远程监控系统课题期间,在移植servfox应用服务程序费了很大周折,所以写下的。

只是介绍了基于arm的servfox移植【因为其他部分的移植没有遇到过错误】

前言:

如何移植基于linux的USB摄像头驱动,及搭建web服务器。请参考这篇文章: 点击打开链接

正文:

1.下载servfox软件,在你虚拟机下解压

2.将makefile.arm 文件名改为 makefile

3.修改 spcav4l.c 文件

/* Only jpeg webcam allowed */
(1))

if(vd->cameratype != JPEG) {

exit_fatal ("Not a JPEG webcam sorry Abort !");

2)/* if (vd->formatIn != vd->videopict.palette 
      vd->bppIn != vd->videopict.depth)
    exit_fatal ("could't set video palette Abort !");
if (erreur < 0)
    exit_fatal ("could't set video palette Abort !");*/

这两段注销掉,否则会出现wrong spca5xx device
Not a JPEG webcam sorry Abort !  

这样的错误


4.make 然后 将生成的servfox 复制到开发板目录

执行 ./servfox -d  /dev/video0  -g  -s 320*240  -w 7070

【如果复制到了usr/bin目录,则去掉前面servfox的  ./


说明:

此命令如果不加 -g 会出现

wrong spca5xx device
Waiting .... for connection. CTrl_c to stop !!!! 
cvsync err
: Invalid argument
cmcapture: Invalid argument

这样的错误。

-g表示use read method for grab instead mmap 


5.本人出现的问题

耗费本人几天的问题并不是此应用程序servfox的问题

当我执行 ./servfox -d  /dev/video0  -g  -s 320*240  -w 7070

移植提示 illegal instruction 的错误,及非法指令。

由于缺乏相关的经验,开始一直以为是此程序的问题,编译时没有加上链接库,尝试过静态编译,然后还是提示此错误。最后在朋友的提醒下,是我的交叉编译器的问题,我之前是在s3c6410的板子上开发的,所以用的交叉编译器是4.3.1for6410的,现在是基于s3c2410的平台开发的,更换了一个4.3.32for 2410的。错误解决了。


总结:其实出现上述错误,还是对交叉编译器的认知不够,当时只知道交叉编译器是用来在一个平台上开发是例外一个平台上运行的程序,如在电脑端开发基于ARM的程序,却没有理解arm的体系结构并不一样,他们的指令集有交叉【我开始有怀疑是交叉编译器的问题,用for6410的交叉编译器编译一个简单的hello程序,是可以再2410板子上正常运行的】,但是还是有很大不同的【具体有什么,暂时还不清楚】







posted @ 2013-05-06 20:11  stoneFang  阅读(82)  评论(0编辑  收藏  举报