摄像头总结

时间:2024.5.2

摄像头总结

摄像头总结


第二篇:摄像头移植总结


网络视频服务器移植

一、环境

1、 主机:Ubuntu 10.10发行版

2、 目标机:FS_S5PC100平台

3、 交叉编译工具:arm-none-linux-gnueabi-4.5.1

4、 摄像头模块:OV9650

6、内核:linux-2.6.35-farsigt

二、移植过程

①修改、配置内核

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) --->

<*> USB Video Class (UVC)

[*] UVC input events device support (NEW)

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

②重新编译内核

make zImage

cp arch/arm/boot/zImage /tftpboot

③jpeg库的移植

对于内核linux-2.6.35,不能再使用servfox,如果要使用的需要修改大量的代码。在此选用新的方法来移植,需要两个文件jpeg,mjpg-stream.移植如下: jpeg源码包通过下面这个网址下载

/files/jpegsrc.v8b.tar.gz

1) 解压源码包

tar xvf jpegsrc.v8b.tar.gz

2) 配置源码

cd jpeg-8b

./configure --prefix=/home/linux/jpeg --host=arm-none-linux-gnueabi

摄像头移植总结

注:./configure 配置源代码树

安装目录:

--prefix=PREFIX

体系无关文件的顶级安装目录PREFIX(自己的主机用户目录下 /home/XXX),也就Apache的安装目录。[/usr/local/apache2]

系统类型:

--host=HOST

指定Apache HTTP服务器将要运行的目标系统类型HOST 。

[BUILD]

3)编译

make

4)安装

make install

5)拷贝库到文件系统中

cp /home/linux/jpeg/lib/libjpeg.so.8 /source/rootfs/lib

④mjpg-stream的移植

1)下载源码

mjpg-stream源码包通过下面这个网址下载

http://sourceforge.net/projects/mjpg-streamer/

2)解压源码

tar xvf mjpg-streamer-r63.tar.gz

mkdir /home/linux/mjpg-streamer-r63

3)修改源码

cd mjpg-streamer-r63

修改顶层makefile及plugins目录中的各级makefile,将所有

CC=gcc

修改为

摄像头移植总结

修改完后,特别修改处:

修改plugins/input_uvc/Makfile

修改

CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC 为

修改

$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo 为

摄像头移植总结

4)编译、移植

make

mkdir /source/rootfs/mjpg

cp *.so /source/rootfs/mjpg

cp mjpg_streamer /source/rootfs/bin

5)编译驱动

将s5pc100_camera文件夹放到ubuntu系统中,进入文件夹,修改Makefile, cd s5pc100_camera

vi Makefile

KERNELDIR ?= /media/MQ/farsight/S5PC100/kernel/linux-2.6.35/

CC = /media/MQ/toolchain/arm-2010.09/bin/arm-none-linux-gnueabi-gcc

改为:

KERNELDIR ?= /home/linux/kernel/linux-2.6.35-farsight

CC = arm-none-linux-gnueabi-gcc

cp s5pc100_cam.ko /source/rootfs-S5PC100/

改为:

cp s5pc100_cam.ko /source/rootfs

编译驱动

make

6)摄像头测试

插入摄像头,启动开发板,先加载驱动程序:

#insmod s5pc100_camera.ko

再运行boa服务器 /etc/boa/boa &

最后运行mjpg_stream

mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_http.so -w 192.168.0.110:8080" & (注意:这里是板子的ip 192.168.1.236)

使用视频连接软件,进行连接,会看到摄像头采集到了清晰地景象!!!

或者

mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_http.so –w /www" &

浏览器上执行: http://192.168.1.236:8080/?action=snapshot (每次回车单张抓拍)

或者 http://192.168.1.236:8080/?action=stream

⑤拍照功能的实现

由于mjpg_stream中output-file.so能实现连续拍照的功能,不能实现单拍或连拍几张的功能所以需要对output_file原码进行修改。

# cd mjpg-streamer-rc63/plugins/output_file

# vim output_file.c

在96行 函数 void *worker_thread(void *arg) 体中加入以下代码:

char buf[10]; //用于存放从管道读取的命令

int flags = 0; //拍照标志,1:表示11张照片,2:表示1张照片

int fd_com = 0; //打开管道的文件描述符

stop_num = 0; //拍照计数

if ( access(“/tmp/webcom”,F_OK) < 0 ) //创建有名管道用于接收拍照命令 {

if ( mkfifo(“/tmp/webcom”,0666 ) < 0)

{

Printf(“ photo fifo create failed\n”);

}

}

fd_com = open (“/tmp/webcom”,O_RDONLY,0666);

if (fd_com < 0)

{

perror (“open the file webcom error”);

}

在while( ok >= 0 && !pglobal->stop){ 后加入

if (flags == 0)

{

while(1)

{

read(fd_com,buf,sizeof(buf));

if (strncmp(buf,”danger”,6) == 0) //拍11张照片

{

flags = 1;

bzero(buf,sizeof(buf));

break;

}

if (strncmp(buf,”one”,3) == 0) //拍1张照片

{

flags = 2;

bzero(buf,sizeof(buf));

break;

}

}

}

在if (delay > 0){

usleep(1000*delay);

}后加入

stop_num++

if (flags == 1) //判断拍照的数量

{

if ( stop_num > 9)

{

stop_num = 0;

flags = 0;

}

}

else if (flags == 2)

{

stop_num = 0;

flags = 0;

}

测试

所以只要向有名管道/tmp/webcom写入danger就能连拍11张照片,写入one就拍一张照片。

摄像头移植总结

注:拍照功能实现:

mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_http.so -w /www" -o

摄像头移植总结

"/mjpg/output_file.so -f /www/pice -d 15000" &

更多相关推荐:
摄像总结报告

影视创作实习总结报告余谦摄像是一门用光的艺术光影交织中体味摄像百味少一点点遗憾少一点点不足摄像在一次次升华中进步要想拍好东西想欣赏美就要学会发现美创造美本次实习是期待已久的大家早就想拍点东西来记录自己的大学生活...

摄像课总结

摄像课结课总结摄像课结课总结这是我接触电视摄像的第二年,与起一个学期的相比,自己对摄像的理解加深了,在小的方面来讲,在看电视或是电影时能从专业的角度去分析镜头中的构图,色彩,或是景别,从大的来讲自己对自己所学习…

摄影摄像总结

1数码单反相机数码单反相机是数码单镜头反光相机的简称其将现代数码技术和传统单镜头反光相机的优势有机的结合在一起他通过镜头将景物反射到取景器中按下快门按钮后镜头翻起快门打开感光元件感光经过一系列处理后形成图像2微...

摄像技巧总结

摄像基本要领1平画面要平应保持画面中的水平线条和垂直线条符合生活中的真实情况画面与地平线或水平线保持水平方法借助三角架水平仪校正水平以景物的地平线或寻像器的边框作为水平参考拍摄草原大海等2稳镜头运动要力求稳定不...

电视摄像课程小结

电视摄像课程小结何峻峰20xx210722课程小结通过本学期对于《电视摄像》课程的学习和几次非常宝贵的实验实践学习经历,我对电视摄像在技术层面有了基本的了解和掌握。我不但掌握了一些摄像机设备如SONY1500C…

摄像与后期制作部个人工作总结

时间过得很快,不知不觉中在电视中心已经待了一个月了。由于我是新成员,工作能力有限,很多事情自己还得适应,在这段时间里我出现了很多问题,在以后的工作中,会尽量锻炼和培养自己。下面我来具体的回顾和检讨:一、我过去所…

电视台摄像记者年终工作总结

光阴荏苒,日月如梭,转眼一年的时间就匆匆过去了。在这短暂的一年中,由于各位领导和同事的帮助,我圆满完成了自已的本职工作。为了在新的一年里更好地完成任务,我将本年度工作情况总结如下:一、努力提高自身素质与修养。作…

电视摄像知识重点总结

CCDCCD是英文ChargeCoupledDevice即电荷耦合器件的缩写它是一种特殊半导体器件上面有很多一样的感光元件每个感光元件叫一个像素CCD在摄像机里是一个极其重要的部件它起到将光线转换成电信号的作用...

20xx年爱拍摄影协会工作总结

20xx年爱拍摄影协会工作总结转眼又到了期末而摄影协会10年度的工作至此正式宣告告一段落回顾本学年摄影协会走过的路程现总结如下学期开始时我们的各项活动就有序的进行着经过09年下半年的接触也使我们08和09届的成...

摄影助理每周个人工作小结

罗马假日婚纱摄影广场填表人年月日至年月日

电视摄像要点总结

电视摄像要点总结第一章电视画面1摄像机是由光学系统光电转换系统图像信号处理系统自动控制系统等组成摄像机的技术进展经历过了真空管晶体管和集成电路微电子固体摄像器件等几个阶段2根据质量性能和各自用途的不同摄像机可以...

摄影协会社团工作总结

社团协会学期工作总结

摄像总结(21篇)