`
saybody
  • 浏览: 891805 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Linux2.6.33下ZC301USB摄像头使用教程

阅读更多

Linux2.6.33ZC301USB摄像头使用教程

华清远见-嵌入式领域著名讲师 O(_)O 牛牛猛

点击链接加我好友!

http://student.csdn.net/invite.php?u=111047&c=758a60d66d3a92d1

欢迎大家去CSDN博客上踩踩

我的个人主页

要想在中芯优电TE-2440开发板上使用使用USB接口的USB摄像头,需要作出比较多的工作,如:内核配置,编译器配置,依赖库编译,应用程序的编译等等,下面的这个教程主要用来介绍如何远程使用TE-2440下的摄像头。

1. 编译器配置

编译器配置编译器采用的版本是<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">4.3.3</font></span></chsdate>,具体文件名为EABI-Top-Elec-Gcc-4.3.3.tar.bz2,将其拷贝到linux目录下,解压,并配置环境变量。

// 解压

tar –xf EABI-Top-Elec-Gcc-<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">4.3.3</chsdate>.tar.bz2

// 配置环境变量,将bin目录添加到PATH环境变量中

gedit /etc/environment

// 使其生效,注意此命令只会使当前终端生效,并不影响其它终端中的执行

source /etc/environment

// 检测安装成功,显示arm-linux-gcc所在文件位置

which arm-linux-gcc

2. 内核配置

教程需要的是基于<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">2.6.33</font></span></chsdate>的内核,为了言简意赅,我们使用的是内核文件是linux-2.6.33.2-TE2440.tar.gz,所以如果是从www.kernel.org官网上下载linux-2.6.33.2.tar.bz2,还需要修改针对开发板的如分区、网卡、MMC的详细配置。

由于我们使用的摄像头是基于ZC301芯片的,以前由于<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">2.6.12</font></span></chsdate>的内核只有针对OV511芯片的驱动,所以需要我们查找对应的驱动并添加到内核中;后来,2.6.27左右版本的内核中增加了针对ZC301芯片的驱动,统称为Linux UVC。那么它的驱动实现了Video4Linux API,并不计划支持V<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4L</chmetcnv>1。下面是关于Linux UVC的文档网址:http://linux-uvc.berlios.de/

所以在<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">2.6.33</font></span></chsdate>版本中我们只需要对内核进行简单配置,就实现功能了,如有不明白可参考下面截图说明:

1.进入内核文件,执行make menuconfig

make menuconfig

2.选择Device Drivers ---->进入

Linux-2.6.30.4 的内核中,我们没有从外部移植USB 摄像头的驱动,而直接采用了内核自带的USB摄像头驱动,那么我们以前针对USB 摄像头做的网络摄像头控制程序就不能使用了(原来的servfox 代码需要修改),下面我们使用新的方法测试我们的摄像驱动。

我们选用ZC301 系列摄像头为例调试自己的摄像头驱动,最后完成我的测试功能。

配置内核时有两个关于ZC301的驱动要选中!参考下图

Device Drivers --->

Multimedia devices --->

*** Multimedia core support ***

<*> Video For Linux

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

[*] Video capture adapters --->

--- Video capture adapters

<*> OV9650 Drivers for EmbedSky SKY2440/TQ2440 Board

[*] V4L USB devices --->

--- V4L USB devices

<*> USB Video Class (UVC)

[*] UVC input events device support

<*> GSPCA based webcams --->

--- GSPCA based webcams

<*> ZC3XX USB Camera Driver

<*> USB ZC0301[P] Image Processor and Control Chip support

修改Makefile文件:

#ARCH ?= $(SUBARCH)

#CROSS_COMPILE ?=

ARCH ?= arm

CROSS_COMPILE ?= arm-softfloat-linux-gnu-

之后便可编译,由于上面采用的是生成了模块,所以我们可以在drivers/media目录下找到*.ko文件,等我们将内核在开发板上运行起来后,便可插入模块,为了方便,我建立了v4lkoes文件夹,加入了ko文件,并写了对应的Shell文件,如下:

#!/bin/bash

cd /v4lkoes

insmod v<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4l</chmetcnv>1-compat.ko

echo "insmod v<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4l</chmetcnv>1-compat.ko"

insmod videodev.ko

echo "insmod videodev.ko"

insmod v<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4l</chmetcnv>2-int-device.ko

echo "insmod v<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4l</chmetcnv>2-int-device.ko"

insmod v<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4l</chmetcnv>2-common.ko

echo "insmod v<chmetcnv w:st="on" unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4l</chmetcnv>2-common.ko"

insmod uvcvideo.ko

echo "insmod uvcvideo.ko"

insmod zc0301.ko

echo "insmod zc0301.ko"

insmod gspca_main.ko

echo "insmod gspca_main.ko"

insmod gspca_zc3xx.ko

echo "insmod gspca_zc3xx.ko"

运行这个Shell之后,然后插入摄像头,运行一下命令,如果发现/dev/video0文件,说明我们已经正确的配置成功了:

ls /dev/v*

1. 编译jpeg

下载jpeg源文件,文件名jpegsrc.v6b.tar.tar,步骤有三,解压,编译,安装:

解压:

tar –xf jpegsrc.v6b.tar.tar

编译:

修改Makefile文件,设置CC交叉编译器名称,和安装的库及头文件的位置

make

安装:

make install

经过查看安装目录后,发现并没有将头文件、库文件复制到该目录下,所以我们还需要查看Makefile,发现安装库文件、头文件,还需要运行以下命令即可;另外需要注意的一点是在安装时可能会出现文件夹无法建立,所以我们需要自己根据提示在安装目录下创建libincludesman/man1bin文件夹。

mke install-libs

下载SDL源文件,文件名SDL-<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">1.2.14</chsdate>.tar.gz或者SDL-1.2.13..gz步骤有三,解压,编译,安装,同上面的过程一样,故此处不再介绍。

下载mjpg-streamer源文件,文件名为mjpg-streamer-r63.tar.gz,步骤有三:

解压:

tar –xf jpegsrc.v6b.tar.tar

编译,由于mjpg-streamer采用基于插件的方式运行,所以我们在修改顶层目录Makefile时,还需要修改plugins文件夹下的Makefile文件,首先需要修改顶层和plugins文件夹下的Makefile,设置交叉编译器:

CC ?= arm -linux-gcc

当我们如此编译时,可能会报错,错误来源于plugins目录下input_uvc文件夹,缺少头文件,于是我们需要进入到该目录下,修改器Makefile文件:

此时,可建立文件夹mjpg,然后将*.somjpg_streamer放入其中,然后移到开发板中,运行:

mkdir mjpg

mv *.so mjpg

mv mjpg_streamer mjpg

运行如下命令,即可将程序运行起来,之后,我们便可在Windows下运行windows端测试程序.exe,连接开发板的IP地址,即可查看到图像:

mjpg_streamer -i ". /input_uvc.so –d /dev/video0" -o "./output_http.so -w 192.168.1.6:8080"

下载pdf格式文件www.top-elec.com/admin/Download/File/20100620023051摄像头使用教程.pdf

分享到:
评论

相关推荐

    Linux2.6.33 下ZC301USB 摄像头使用教程

    ### Linux2.6.33下ZC301USB摄像头使用教程 #### 一、概述 本教程旨在详细介绍如何在Linux2.6.33环境下配置与使用ZC301USB摄像头,特别是针对中芯优电的TE-2440开发板。文章分为几个部分:编译器配置、内核配置、...

    最新linux2.6.33内核移植到s3c2410平台详细步骤

    ### Linux 2.6.33 内核移植到 S3C2410 平台详解 #### 一、前言 随着嵌入式系统的不断发展,Linux内核的移植成为了一个重要的研究方向。本文主要介绍了如何将最新的Linux 2.6.33内核移植到S3C2410平台上,包括搭建...

    基于linux2.6.33的spi flash 驱动移植总结

    ### 基于Linux 2.6.33的SPI Flash驱动移植总结 #### SPI驱动架构概述 在基于Linux 2.6.33的SPI Flash驱动移植过程中,主要涉及到了三个关键组件:SPI主机驱动(dm644x上的SPI功能模块驱动)、SPI Flash芯片驱动...

    S3C2410的 Linux2.6.33内核移植以及搭建交叉编译

    ### S3C2410的 Linux2.6.33 内核移植与搭建交叉编译环境 #### 概述 本篇文章旨在详细介绍如何针对S3C2410平台进行Linux2.6.33内核移植,并在此基础上构建交叉编译环境的过程。整个流程分为几个关键步骤,包括环境...

    linux-2.6.33

    linux 2.6.33源码,官方版本。

    基于linux-2.6.33网卡驱动之cs8900

    在Linux-2.6.33内核环境下,驱动程序需要遵循特定的内核API和编程规范。比如,它必须实现`init_module()`和`cleanup_module()`函数,分别对应驱动加载和卸载时的回调。此外,驱动需要注册到内核的设备模型,通过`...

    ubuntu下编译linux kernel 2.6.38

    在Ubuntu 10.10环境下编译Linux内核2.6.38涉及一系列步骤,需要对操作系统、内核版本、编译工具和配置选项有深入理解。以下是详细的编译流程和注意事项: 首先,确保你的环境是Pentium 4架构的Ubuntu 10.10(内核...

    2.6.33-at91.patch.gz

    2.6.33-at91.patch.gz arm linux补丁

    linux-2.6.33.2

    linux 2.6.33.2源码,官方版本。

    linux虚拟网卡设备驱动

    2.6.33linux虚拟网卡设备驱动

    linux-headers-2.6.32-25元代码

    《Linux内核学习:深入解析2.6.32-25元代码》 在Linux的世界里,了解和研究内核源代码是提升技术水平的重要途径。"linux-headers-2.6.32-25元代码"这个压缩包为我们提供了一个宝贵的资源,让我们能够深入探索Linux...

    Smarty v2.6.33.zip

    8. ** docs**:文档可能位于此目录下,提供了API参考和用户指南。 对于毕业设计论文或计算机案例,使用Smarty可以帮助学生理解MVC(模型-视图-控制器)架构和前后端分离的原则。通过学习如何使用SMARTY,学生可以...

    Android和Linux内核版本对应关系

    - **备注**: 移除了Android代码的Linux Kernel 2.6.33版代码库。 ##### 8. Honeycomb (蜂巢) - **Android系统版本**: 3.0 - **发布时间**: 2011年2月2日 - **Linux Kernel内核版本**: 2.6.36 - **备注**: 专门针对...

    嵌入式Linux帧缓冲设备驱动程序.pdf

    本文将深入探讨嵌入式Linux帧缓冲驱动的体系结构、关键数据结构和编写方法,并结合具体的ARM9处理器S3C2440平台上的开发实例,介绍Linux 2.6.33内核基于Platform总线的帧缓冲驱动的实现原理和开发流程。 首先,帧...

    disconf-web-2.6.33简化版

    disconf-web-2.6.33简化版, 官方地址:https://github.com/knightliao/disconf 简化版主要不用依赖Nginx,部署步骤如下: 1.按照disconf-web.war/sql/readme.md执行SQL脚本创建库表和基础数据。 2.修改war包下的...

    便携中文系统tinycorelinux_3.8.cn.plus.iso

    便携中文linux操作系统,约35M,以tiny core linux 3.8.4 为基础,内核是2.6.33。集成了常用的基本功能,可进行文件管理,文字、图像处理,简单的网络浏览和下载,硬盘分区维护等,同时支持一些常用的压缩格式。更多...

    OMAPL138编译Linux内核方法

    本文档将涵盖Linux 3.3、2.6.33以及2.6.37这三个版本的内核编译流程。 #### 1.1 编译linux-3.3内核 **1.1.1 清理内核** 在开始编译之前,首先需要清理之前的编译结果,确保此次编译的纯净性。执行以下命令: ```...

    cs8900.c和cs8900.h

    关于cs8900驱动移植基于linux2.6.33 s3c2410开发板

Global site tag (gtag.js) - Google Analytics