ov511摄像头采用的是网眼webeye3000,zc301摄像头采用的是ANC奥尼S888

因为打算做一个实际用处的东西,需要用到摄像头,所以最近开始了摄像头的移植。

我移植的摄像头的芯片是ov511 ,非常幸运的是linux内核默认支持ov511 摄像头驱动。

所以很容易的开始了我的摄像头移植之路。我用的内核是2.6.32.2

要支持USB摄像头首先需要这样一些选项,

make menuconfig 进入图形界面进行,内核的配置和裁剪。

首先

配置内核,支持 USB:

Device drivers --->

SCSI Device support --->

<*> SCSI device support

[*] legacy /proc/scsi/ support

<*> SCSI disk support

[*] HID Devices --->

<*> USB Human Interface Device (full HID) support

22

[*] /dev/hiddev raw HID device support

[*] USB support --->

<*> Support for Host-side USB

[*] USB device filesystem

[*] USB device class-devices(DEPRECATED)

<*> USB Monitor

<*> OHCI HCD support

<*> USB Mass Storage support

USB Human Interface Device (full HID) support 是对 USB 鼠标键盘的支持

SCSI disk support 和 USB Mass Storage support 是对 U 盘的支持

启动时输出:

Initializing USB Mass Storage driver...

usbcore: registered new interface driver usb-storage

USB Mass Storage support registered.

usbcore: registered new interface driver libusual

usb 1-1: configuration #1 chosen from 1 choice

hub 1-1:1.0: USB hub found

hub 1-1:1.0: 4 ports detected

如果出现这个,说明已经找到 USB HUB,可以使用四个 USB 设备。

U 盘的挂载:

插入 U 盘后会提示:

[root@TX2440A /dev]# usb 1-1.4: new full speed USB device using s3c2410-ohci

and address 3       Å 插入第三个 USB 口

usb 1-1.4: configuration #1 chosen from 1 choice

scsi0 : SCSI emulation for USB Mass Storage devices

scsi 0:0:0:0: Direct-Access     Kingston DataTraveler G2  1.00 PQ: 0 ANSI:

2

sd 0:0:0:0: [sda] 7831552 512-byte logical blocks: (4.00 GB/3.73 GiB)

sd 0:0:0:0: [sda] Write Protect is off

sd 0:0:0:0: [sda] Assuming drive cache: write through

sd 0:0:0:0: Attached scsi generic sg0 type 0

sd 0:0:0:0: [sda] Assuming drive cache: write through

23

sda: sda1    Å 设备名称

sd 0:0:0:0: [sda] Assuming drive cache: write through

sd 0:0:0:0: [sda] Attached SCSI removable disk

然后选择对于摄像头的支持

1)在arm linux的kernel目录下make menuconfig。
(2)首先

device drive->

选择Multimedia device->下的Video for linux。加载video4linux模块,
为视频采集设备提供了编程接口;
(3)然后在usb support->目录下(*)选择support for usb和usb camera ov511

这里遇到一个问题,就是我的内核只要是加载 usb camera ov511

重启根文件系统,插入摄像头没有任何反应

120S以后便会崩溃,后来发现问题

原来,linux内核有些驱动并不是很完美的,也会存在bug。而官方会把没有解决的存在bug的驱动标注出来

就会在你所要添加的驱动上添加(DEPRECATED)

< >   USB OV511 Camera support (DEPRECATED)

这个意思是可替代的废弃的。。。

查看它的help信息

CONFIG_VIDEO_OVCAMCHIP:                                                 │ 
  │                                                                         │ 
  │ Support for the OmniVision OV6xxx and OV7xxx series of camera chips.    │ 
  │ This driver is intended to be used with the ov511 and w9968cf USB       │ 
  │ camera drivers.                                                         │ 
  │                                                                         │ 
  │ To compile this driver as a module, choose M here: the                  │ 
  │ module will be called ovcamchip.                                        │ 
  │                                                                         │ 
  │ Symbol: VIDEO_OVCAMCHIP [=n]                                            │ 
  │ Prompt: OmniVision Camera Chip support                                  │ 
  │   Defined at drivers/media/video/Kconfig:941                            │ 
  │   Depends on: MEDIA_SUPPORT [=y] && VIDEO_CAPTURE_DRIVERS [=y] && VIDEO │ 
  │   Locatio -> Device Drivers                                                   │ 
  │       -> Multimedia support (MEDIA_SUPPORT [=y])                        │ 
  │         -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y])          │ 
  │           -> V4L USB devices (V4L_USB_DRIVERS [=y])n:

这段话的意思是你可以用ov519的驱动替代ov511的

ov519在  <*>   GSPCA based webcams  --->

<*>   OV519 USB Camera Drive

编译完成,下载到开发板启动后,插入摄像头

usb 1-1.3: new full speed USB device using s3c2410-ohci and address 3
usb 1-1.3: configuration #1 chosen from 1 choice
gspca: probing 05a9:a511
ov519: Device custom id 6c
ov519: Uploading quantization tables
ov519: I2C synced in 0 attempt(s)
ov519: starting OV7xx0 configuration
ov519: Sensor is an OV7620
gspca: probe ok有如下打印信息,

驱动程序移植完成。

但是遇到一个问题就是我用vidicat 测试摄像头的时候

生成的图像全是雪花。这个问题至今没有解决。

PS:仍在解决中。。。。。

在内核中已经编译进ov511的驱动了,然后就是验证它是否好使了。

在网上找到了一种测试方法。

vidcat

拿到vidcat的源码后抽取出来了三个文件:vidcat.c v4l.c ,v4l.h,

编译之前先确定交叉编译器是安装好的,然后在三个文件所在目录下建

立一个文件build,编辑之,内容如下:
arm-linux-gcc -g -o2 
-i/opt/arm/4.3.2/
-i/home/linux-2.6.32.2/include 
-dvideo_dev=\"/dev/v4l/video0\" 
-dversion=\"0.7.2\" 
-l/usr/local/arm/2.95.3/arm-linux/lib  
-o vidcat vidcat.c v4l.c
实际写的时候需要写在一行里面,注意所有“-”之前都有空格的,编辑完成后存盘退出,然后chmod +x

build
然后./build就可以顺利编译出来vidcat可执行文件了
如果你不能./build,提示什么操作拒绝之类的,就用chmod 775 build
知其然还要知其所以然,我来解释一下这行命令
-i/home/linux-2.6.32.2/include

-i/home/linux-2.6.32.2/include 这个是设定将这两个目

录作为搜索头文件的目录,前者是光盘上解出来的gcc工具,后者是光盘上解出来的kernel包,之所以有后

者,是因为前者中的一个头文件用到了linux/version.h,而这个文件只在linux的kernel里面有,所以需

要后者。
-l/ 这个是指定到这个目录下找相应的库文件。
-dvideo_dev=\"/dev/v4l/video0\" -dversion=\"0.7.2\" 这两个是将两个预定义常量传入编译器,一个

是video_dev,是指定默认的摄像头设备对应的地方,一个是version,是vidcat的版本,我拿到的板子上

的video_dev是/dev/v4l/video0,一般linux系统是/dev/video0。后面这个参数里面的0.7.2你爱写啥就写


这个带源码的vidcat对俺这样需要自己写摄像头程序的人作用挺大。

编译完成以后,将编译出来的vidcat考到开发板上,

然后查看vidcat.c

void
usage (char *pname)
{
 fprintf (stderr,
 "VidCat, Version %s\n"
 "Usage: %s <options>\n"
 " -b                          make a raw PPM instead of an ASCII one\n"
 " -d <device>                 video device (default: "VIDEO_DEV")\n"
 " -f {ppm|jpeg|png|yuv4mpeg}  output format of the image\n"
 " -g                          greayscale instead of color\n"
 " -i {tv|comp1|comp2|s-video} which input channel to use\n"
 " -l                          loop on, doesn't make sense in most cases\n"
 " -n {pal|ntsc|secam}         select video norm\n"
 " -o <file>                   write output to file instead of stdout\n"
 " -p c|g|y|Y                  videopalette to use\n"
 " -q <quality>                only for jpeg: quality setting (1-100,"
  " default: %d)\n"
 " -s NxN                      define size of the output image (default:"
  " %dx%d)\n"
 "Example: vidcat | xsetbg stdin\n",
  VERSION, (char*)basename(pname), QUAL_DEFAULT, DEF_WIDTH, DEF_HEIGHT);
 exit (1);
}

按照上面的源码,书写命令

./vidcat -d /dev/video0 -f ppm -s 640*480 >first.ppm

在当前目录下就生出了,first.ppm

PS:

由于我出来了雪花的情况,我不能确认是什么出了问题,所以便在30.4的内核上重新移植了一遍

发现,执行上面的指令可以采集出图像,但是就是只能采集黑白的。

问题依旧严峻、、、、、待解决

ov511驱动移植 2.6.32.2相关推荐

  1. linux在开发板LCD上显,W35型LCD驱动移植 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了集中屏幕的方案,我们这里主要就用一种,也就是开发板自带的W35型号.液晶驱动的源程序在src/drivers/vide ...

  2. 基于MT6752/32平台 Android L版本驱动移植步骤

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  3. 基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Medi

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  4. MT6752/32平台 Android L版本驱动移植

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  5. I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

    经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动. DTS编写 由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在 ...

  6. Lora1278驱动V4.4.2讲解一:驱动移植

    注意,Lora1278驱动sx12xxDrivers-V2.1.0,原厂已经不更新和维护了,反馈的任何软件问题, 原厂就是一句话升级新的驱动,新驱动下载地址:https://github.com/Lo ...

  7. 安卓平台下的GPS架构介绍及驱动移植记录

    一.前言 我的工作是关于汽车车机BSP部分. 汽车车机,其实基本和人们日常所用的手机一样,也是安卓平台的.所谓安卓,就是一层安卓服务包裹着Linux内核所形成的操作系统. BSP组,主要工作内容就是负 ...

  8. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

  9. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)_0

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

最新文章

  1. PL/SQL基础篇4(游标)
  2. 借助URLOS快速安装python3网站环境
  3. java学习(95):线程的优先级
  4. Sass基础知识及语法
  5. 西单女孩上春晚的8zsb是什么
  6. 逃跑吧少年辅助快乐羊儿吧
  7. 自定义选中文字背景色
  8. 讨论:多核CPU+ASIC的防火墙在以后是发展方向吗?
  9. 社区发现(三)--CMP
  10. 40线性映射07——线性变换的矩阵表示、线性变换与基的关系、线性变换坐标间的关系、线性变换在不同基下矩阵之间的关系、相似矩阵
  11. C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
  12. python可以用于工业机器人编程与操作_如何实现工业机器人编程抓取
  13. ie11不兼容 html编辑器,ewebeditor编辑器已经不能兼容IE11
  14. Transformer---RNN网络
  15. LM7805的特殊使用方法
  16. Module containing this breakpoint has not yet loaded or the breakpoint adress could not be obtained.
  17. 性能调优--gzip、缓存、content-download、逐针渲染、Queueing、动态延迟加载、最小化主线程工作
  18. AutoGPT保姆级使用教程
  19. C语言execvp实现简易Shell的两种方法
  20. 老码农回答为什么会有“在X有Y年的工作经验“这样的要求

热门文章

  1. QT + VS + C++ <Qtablewidget>
  2. Zend Framework教程-用Zend命令行快速创建Zend应用
  3. 第三讲 i.MX系列芯片简介
  4. 渐进式神经网络结构搜索技术(Progressive Neural Architecture Search)(2018年最强最智能的图像分类)详解
  5. ChatGPT 公司 CEO —— Altman 给创业公司的建议
  6. 一文看懂数据治理,谈谈数字化转型中数据治理的实践经验
  7. 基于Arduino开发板的光学指纹识别模块(FPM10A)
  8. 微信公众号用户体验分析
  9. 计算机应用英文怎么说,电脑用英文怎么写?
  10. 服务器系统盘 回写盘价格,服务器内存当回写盘