相关软件下载地址:http://pan.baidu.com/s/16yo8Y

1.使用摄像头型号ov9650

①修改、配置内核

1.修改vi drivers/i2c/busses/Kconfig

(参考实验二十六 I2C驱动编写及测试)

修改

config I2C_S3C2410

tristate "S3C2410 I2C Driver"

depends on ARCH_S3C2410 || ARCH_S3C64XX

help

Say Y here to include support for I2C controller in the

Samsung S3C2410 based System-on-Chip devices.

为:

config I2C_S3C2410

tristate "S3C2410 I2C Driver"

depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100

help

Say Y here to include support for I2C controller in the

Samsung S3C2410 based System-on-Chip devices.

配置内核驱动:

$ make menuconfig

Device Drivers  --->

<*> I2C support  --->

<*>   I2C device interface

I2C Hardware Bus support  --->

<*> S3C2410 I2C Driver

修改arch/arm/mach-s5pc100/mach-smdkc100.c

查看原理图可以知道我们的摄像头是接在I2C-1上所以修改i2c_devs1添加ov9650的内容,主要是ov9650的地址,这个在芯片手册上可以查到是0x30

修改:

static struct i2c_board_info i2c_devs1[] __initdata = {

};

为:

static struct i2c_board_info i2c_devs1[] __initdata = {

{

I2C_BOARD_INFO("ov9650", 0x30),

},

};

添加s5pc100 摄像头控制器平台设备相关内容,这些内容我们可以通过查看S5PC100的芯片手册查到.

static struct resource s3c_camif_resource[] = {

[0] = {

.start = 0xEE200000,

.end   = 0xEE200000 + SZ_1M - 1,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = IRQ_FIMC0,

.end   = IRQ_FIMC0,

.flags = IORESOURCE_IRQ,

}

};

static u64 s3c_device_camif_dmamask = 0xffffffffUL;

struct platform_device s3c_device_camif = {

.name        = "s5pc100-camif",

.id      = 0,

.num_resources      = ARRAY_SIZE(s3c_camif_resource),

.resource    = s3c_camif_resource,

.dev              = {

.dma_mask = &s3c_device_camif_dmamask,

.coherent_dma_mask = 0xffffffffUL

}

};

EXPORT_SYMBOL(s3c_device_camif);

注册摄像头控制平台设备:

在smdkc100_devices中添加s3c_device_camif.

static struct platform_device *smdkc100_devices[] __initdata = {

&s3c_device_camif, //添加内容

};

添加驱动(video):

Make menuconfig

Device Drivers  --->

<*> Multimedia support  --->

<*>   Video For Linux

[*]     Enable Video For Linux API 1 (DEPRECATED) (NEW)

[*]   Video capture adapters (NEW)  --->

[*]   V4L USB devices (NEW)  --->   make

<*>   USB Video Class (UVC)

[*]     UVC input events device support (NEW)

<*>   USB ZC0301[P] webcam support (DEPRECATED)

②重新编译内核

make zImage

cp arch/arm/boot/zImage /tftpboot

2.使用摄像头型号ZC3XX

1、配置内核是内核支持芯片为ZC3xx的摄像头(必须先配置USB驱动,否则[*] V4L USB devices (NEW) --->出不来)

Make menuconfig
  Device Drivers --->
       <*> Multimedia support
--->
             <*> Video For Linux
             [*] Enable Video For Linux API 1 (DEPRECATED) (NEW)
             [*] Video capture adapters (NEW) --->
                    [*] V4L USB
devices (NEW) --->
                           <*> GSPCA based webcams--->
 
                                  <*>
ZC3XX USB Camera Driver  
                            <*>
USB Video Class (UVC)
                           [*] UVC input events device support (NEW)
                     <*> USB ZC0301[P] webcam support
(DEPRECATED)


2
、重新编译内核
修改文件drivers/media/video/gspac/gspca.c添加红色语句:


              220
goto error_buffer;
              221
}
               urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
              222
usb_fill_int_urb(urb, dev,
              223
usb_rcvintpipe(dev, ep->

make  zImage重新编译内核


       通过上面两个步骤就可以驱动我们的摄像头了。但是这个驱动是基于V4l2的。以前基于V4L的一些上层应用就不能用了,或需要做大量的修改!这里我们要实现网络视频的功能,以前都是用servfox这个网络视频服务器,但是这个服务器就是基于V4L的,我们如果想用的话就得对servfox的源码进行修改。这里我们选用另外一种方案mjpg-stream。

usb摄像头驱动的移植的更多相关文章

  1. Linux USB摄像头驱动【转】

    本文转载自:http://www.itdadao.com/articles/c15a509940p0.html 在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 ...

  2. Linux USB 摄像头驱动

    在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头.这一章主要是介绍 USB 摄像头的设备驱动程序.在我们印象中,驱动程序都是一个萝卜一个坑, ...

  3. 2.6 USB摄像头驱动之USB描述符

    学习目标:分析USB摄像头驱动的描述符: 一.USB设备描述符 在usb设备驱动分析那一节,也用到了usb描述符. usb描述符可分为: USB设备描述符(usb_device_descriptor) ...

  4. USB摄像头驱动框架分析(五)

    一.USB摄像头驱动框架如下所示:1.构造一个usb_driver2.设置   probe:        2.1. 分配video_device:video_device_alloc        ...

  5. Hi3559AV100外接UVC/MJPEG相机实时采图设计(一):Linux USB摄像头驱动分析

    下面将给出Hi3559AV100外接UVC/MJPEG相机实时采图设计的整体流程,主要实现是通过V4L2接口将UVC/MJPEG相机采集的数据送入至MPP平台,经过VDEC.VPSS.VO最后通过HD ...

  6. USB摄像头驱动框架分析

    usb摄像头驱动程序,里面涉及硬件的操作.比如说,想设置亮度的时候,需要把亮度的参数发给硬件.去得到真正视频数据的时候,需要访问硬件得到数据.usb摄像头驱动程序框架与虚拟摄像头驱动程序的框架是一样的 ...

  7. 29、从零写USB摄像头驱动之通过urb接受数据后上报数据是函数中fid的作用

    原因分析如下: 视频数据是由一帧一帧数据组成,为了防止数据错乱,会给每一帧数据分配一个frameid,从第0帧开始,接着是第1帧,接着又是第0帧这样交错进行的,对usb摄像头来说每一帧数据来源于多个包 ...

  8. centos下安装usb摄像头驱动

    centos安装在虚拟机下,win7下能正常使用摄像头. 虚拟机显示监测到摄像头,但驱动安装失败. terminal下输入yum install cheese,提示是否安装,输入y确认下载,大概100 ...

  9. 嵌入式Linux USB WIFI驱动的移植

    硬件平台:飞思卡尔MX258开发板 操作系统:Linux2.6.31 WIFI:    RT2860 USB WIFI模组 交叉编译环境:gcc version 4.1.2 调试步骤: 第一步:测试U ...

随机推荐

  1. Codeforces1307C. Cow and Message

    读题,我们知道选1个.选2个的时候是没有冲突的,大于2个的时候就有限制,那么我们观察是否可以把大于2个的情况都转换一下,可以发现,如果有一个串的长度大于2,且出现的次数大于2,那么,组成这个串里必定有 ...

  2. 「luogu3810」陌上花开

    「luogu3810」陌上花开 传送门 三维偏序, \(\text{CDQ}\) 分治板子题. 判重的地方注意一下,别的就都是板子了. 参考代码: #include <algorithm> ...

  3. Python 基础之循环结构 while

    一.while循环介绍 while 循环 可以提高代码的效率,减少代码的冗余 while 条件表达式:    code1    code2如果条件表达式成立,返回Ture,就执行其中的代码块 1.基本 ...

  4. 使用MyCat实现MySQL读写分离

    说明 配置MyCat读写分类前需要先配置MySQL的主从复制,参考我上一篇的文章,已经做了比较详细地讲解了. 环境 centos7.MySQL5.7.mycat1.6 配置MyCat账号密码和数据库名 ...

  5. CSS盒模型的组成部分及实际大小

    盒模型的组成? 盒模型由内容区域.内边距.边框.外边距四部分组成. 盒模型实际大小? 盒模型实际大小由内容区域.内边距.边框三部分组成. 盒模型的box-sizing属性? 如果对盒子不进行设置(或者 ...

  6. mac访问mysql

    常用操作 开启Mysql服务 1.在终端中输入添加MySQL路径的命令: PATH="$PATH":/usr/local/mysql/bin; 2.在终端输入 mysql -uro ...

  7. SSH Secure Shell 编码设置-----支持中文

    参考:https://www.cnblogs.com/hupf/p/6920323.html #vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB1803 ...

  8. C语言书籍入门---第三章

    =======变量和数据类型========= 说      明:字符型   短整型 整型 长整型 单精度浮点型 双精度浮点型 无类型 数据类型:char short int long float d ...

  9. ubuntu18.04 复制或剪切某文件夹下的前x个文件到另一个文件夹下

    该代码可以将file_path_src文件夹中的前cnt个文件,剪切或复制到file_path_tar文件夹下,前提是file_path_src中的文件名可以排序.如VOC数据集提取某个类的图片和xm ...

  10. boost::property_tree 读取ini配置

    应用场景: 在后端服务器项目开发中,需要初始化一个Socket服务器,需要IP地址与对应端口号等参数:另外还可能因为对接数据库,就还需要数据库的相关配置参数,如我使用的是MySql数据库,就需要数据库 ...