搜索
您的当前位置:首页正文

嵌入式系统课程设计:基于ARM11的嵌入式视频监控系统设计

来源:六九路网


嵌入式系统课程设计

题目:基于(报告)

ARM11的嵌入式视频监控系统设计

院 系: 专 业: 班 级: 姓 名: 学 号: 指导教师:

二〇 年 月

嵌入式系统课程设计(报告)

摘 要

当今世界科学技术飞速发展,越来越多的技术面世,给我们的生产生活带来了巨大的便利,监控摄像头随处可见,成为生活中不可缺少的工具之一。

为了更好地运用高科技带来的便利以及发展最新科技,了解学习是首要任务。本课题设计选题就是基于当下流行的视频监控技术来完成的,选用的服务器是较为简单的boa服务器辅以基于ARM11架构的S3C6410开发平台,其搭载的操作系统为Linux系统,能够实现我们想要的数据采集与传输的功能。

基于Linux操作使用USB摄像头作为采集终端进行数据的收集,应用程序通过操作设备文件实现对内核驱动的控制,使用C语言编写基于B/S模式下的服务器应用程序,在传输阶段用到了TCP/IP通信协议,最终能够实现对视频数据的一系列操作,从采集、压缩、传递、解压到最后的网页播放等。基本实现了实时视频监控的需求。

关键词 ARM11 嵌入式 视频监控 Linux操作系统

嵌入式系统课程设计(报告)

目录

第1章 绪论 ........................................................................................................................ 1

1.1 目的与意义 ......................................................................................................... 1 1.2 发展与趋势 ......................................................................................................... 1 1.3 设计任务 ............................................................................................................. 2 第2章 硬件设计 ............................................................................................................... 3

2.1 视屏监控系统的结构设计 .................................................................................. 3 2.2 ARM处理器简介 ................................................................................................ 3 2.3 S3C6410体系结构 .............................................................................................. 4 2.4 定制嵌入式Linux内核 ...................................................................................... 5 2.5 嵌入式文件系统 .................................................................................................. 6 第3章 软件设计 ............................................................................................................... 9

3.1 Linux操作系统简介 ........................................................................................... 9 3.2 交叉编译环境的建立 .......................................................................................... 9 3.3 嵌入式Linux移植 ............................................................................................ 10 第4章 视频采集 ............................................................................................................. 11

4.1 V4L2简介 .......................................................................................................... 11 4.2 采集数据的操作 ................................................................................................ 11 4.3 数据采集函数及解析 ........................................................................................ 12 第5章 视频处理 ............................................................................................................. 14

5.1 格式比较 ............................................................................................................ 14 5.2 JPEG压缩 ........................................................................................................... 14

5.2.1 JPEG简介 ............................................................................................... 14 5.2.2 JPEG库简介 ........................................................................................... 15

第6章 系统测试 ............................................................................................................. 17

嵌入式系统课程设计(报告)

6.1 测试方法 ............................................................................................................ 17 6.2 测试结果 ............................................................................................................ 17 结论 ..................................................................................................................................... 18 参考文献 ............................................................................................................................. 19

嵌入式系统课程设计(报告)

第1章 绪论

1.1 目的与意义

网络视频监控系统由基于ARM11架构体系嵌入式开发平台和网络客户端组成,实现通过摄像头对图像进行高帧率采集形成的视频数据获取功能,通过硬件开发平台接入以太网网络把视频数据展现到网页上。基本的实现过程是:摄像头采集信息,并通过以太网网络传输模块传送给客户端,监控人员可以通过登录指定网址观看实时视频图像,达到监控效果。

1.2 发展与趋势

目前市场上流行的视频监控系统有两大类,第一类是模拟数据视频监控,第二类是数字数据视频监控。第一个种类的技术已经发展的非常成熟,因为其稳定性高等优点在实际生活生产曾上得到非常广泛应用;第二个视频监控系统是当前比较主流的,且其是以视频压缩技术为主要支持的新型监控系统,这个系统因解决了前者的大部分的缺点而迅速兴起,但其技术仍有待进一步发展,功能有待进一步提高。

步入21世纪以来,嵌入式技术发展得更加完善,视频图像处理取得很大程度发展且日益完善,为二者结合的监控技术提供了坚实技术支持。嵌入式系统是围绕应用辅以可添加裁减的软硬件组成的专用计算机系统,其系统具有市场成本价格低和高度稳定性的特点,该系统组成主要有微处理器、配套硬件、相关应用等软硬件,且其软硬件集成度极高,能够具备单独完成任务的能力。嵌入式系统的实时性与稳定性等优势特点,使得嵌入式监控系统在网络视频监控中能够快速发展。

ARM11处理器是ARMv6架构的第一代实现,ARM的合作伙伴可以从不同的方面(功耗、性能或面积)优化和实现差异化的ARM11内核,也可以根据自己特定的工艺技术来开发不同的特性。这些ARM11处理器瞄准的是下一代高端的移动无线,消费类电子,网络和汽车电子应用。而且ARM11内核的很多特性使它还能充分适应高端嵌入式实时应用系统,如:未来的网络和家庭娱乐产品。

1

嵌入式系统课程设计(报告)

1.3 设计任务

设计一个基于ARM11架构的硬件开发平台,内部采用Linux系统的嵌入式视频监控器。主要功能有:

(1)嵌入式系统信息采集处理的利用与实现;

(2)利用V4Linux2框架技术实现CMOS摄像头对视频场景进行数据采集的过程;

(3)将压缩后的视频流数据送到ARM11嵌入式开发板上内置的boa服务器;能够将视频数据传输给局域网的远端用户,通过网络浏览器远程客户机可以实时地直接观看boa服务器上由远程摄像头采集传输来的视频图像。

2

嵌入式系统课程设计(报告)

第2章 硬件设计

2.1 视屏监控系统的结构设计

基于嵌入式技术采用网络摄像机获取视频流,然后运用以太网网络传送到服务器,再由服务器传送给客户端。整体结构如图2.1所示。

图2.1 嵌入式视频结构框

该系统的信息处理是用S3C6410X微处理器来实现的,通过运行Linux操作系统使得在处理器上能够构建一个服务器,由摄像头采集数据传输给服务器,再对接收来的数据进行压缩、编码和传送,从而实现实时的视频传输功能。

2.2 ARM处理器简介

ARM既可以当做是公司的称呼,你也能够把它认为是对ARM架构的微处理器的通俗称呼,你还能认为是对此类相关微处理器技术的简称。此类微处理器架构为32位元精简指令集处理器架构,而且其应用非常广泛。ARM处理器的特点有以下几点。 (1)空间占据使用率低、功率消耗小、使用成本小、功能齐全; (2)兼容Thumb/ARM这两种指令集,并且其代码的跨平台可复用率高; (3)具有非常多的各种功能寄存器,能够加速完成任务;

3

嵌入式系统课程设计(报告)

(4)得到的数据很大部分是在寄存器里简化完成的,减小开发者的任务量; (5)具有简单且灵活的寻址方式,方便快捷的执行效率。 2.3 S3C6410体系结构

S3C64xx这一系列的微处理器是三星公司发版推行的,基于ARM11架构的芯片有00和10这两种型号的,而且这两款芯片的功能相差不多,两者相比较S3C6410这款芯片具有最大的优点就是具有2D/3D硬件加速。S3C6410是一款功能相当强大的处理器芯片,该芯片的整机电路图如图2.2所示:

图2.2 S3C6410整机电路图

4

嵌入式系统课程设计(报告)

该芯片架构如图2.3所示。

图2.3 S3C6410架构

2.4 定制嵌入式Linux内核

值得注意的是工作在S3C2440开发平台上的Linux内核与官方版本略有不同,就需要我们自己定制基于S3C2440开发平台的Linux内核,其进行过程的步骤与其它硬件开发平台的步骤基本相同,都具有共通性,有以下几项事项需要注意。

(1)首先Linux内核源码解压缩后需要在S3C2440开发平台上下载支持的补丁:sudo

apt-get install %gzip-dc patch-2.6.29-tar.gz|patch-p0。

(2)进行内核的限定时使用make menuconfig打开限定内核的面板,在配置时候要注意一些事项,首先需要让内核来支持USB类型的采集终端,具体的操作有:然后在限定目录中选定Multimedia devices目录下的Video for Linux选项,此操作为内核配置了Video4Linux选项的上层应用可直接调用的函数;并且在限定目

5

嵌入式系统课程设计(报告)

录中选定USB OV511 Camera Support选项,USB OV511 Camera Support选项存在于USB Support目录下的USB Multimedia devices目录下的,为内核添USB数字采集终端的驱动。

2.5 嵌入式文件系统

定制好内核后,更改系统的引导程序启动地址到闪存空间地址下,选择NAND FLASH是因为其具有存储空间大、市场价格低的特点。致使系统的引导程序更具性价比。可以通过配置S3C2440X芯片相关管脚设置成我们想要的启动模式。设置引脚OM为00就能让处理器从我们更改好的NAND FLASH启动;设置引脚OM为01就是让系统选择只读存储器的16位寻址启动;设置引脚OM为10就是让系统选择只读存储器的32位寻址启动。

因为我们设置了系统的启动地址为NAND FLASH存储地址,所以文件系统也要做出相应的更改选为YAFFS形式:这种文件系统被特别设定为应用于从NAND闪存启动系统的架构,具有比较常见的掉电自动保护功能和特别设计的损耗平衡保护机制,使得文件系统内部不被破坏,能够有效地保护文件系统且保障文件系统的特性和功能。YAFFS形式的文件系统其实现的依赖是使用十分广泛的分层设计思想,YAFFS的设计粗略的分为三层,第一层为管理界面层,第二层为实现层,第三层为接口层,如此结构使得YAFFS能很容易的集成到整个系统中去。在与JYFFS形式的文件系统作比较时,YAFFS少了某些不需要的特定功能,因此使得YAFFS的有效运行速度快了很多,而且运行时所占用的内存也相应地大大减少。

实现YAFFS到嵌入式开发环境下的移植过程如下。

(1) 创建目录/home/fs/yaffs用于存放YAFFS文件系统,然后把YAFFS的代码文件移存到新建的目录下(其中包括devextras.h, yaffs_fs.c, yaffs_guts.c, tyaffs_guts.h,

tyaffs_mtdif.c,

tyaffs_mtdif.h,

tyaffsinterface.h,

typortenv.h,

tyaffs_config.h, Makefile )。

(2) 修改/home/fs/makefile,添加以下内容。 O_TARGET := yaffs.o

obj-y := yaffs_fs.o yaffs_guts.o yaffs_mtdif.o yaffs_ecc.o obj-m := $(O_TARGET)

6

嵌入式系统课程设计(报告)

include $(TOPDIR)/Rules.make (3)fs/Config.in

if [ \"CONFIG_MTD_NAND\" = \"y\" ]; then tristate \"Yaffs filesystem on NAND\" CONFIG_YAFFS_FS fi

(4) /fs/Makefile subdir-$(CONFIG_YAFFS_FS) += yaffs (5)Make menuconfig and select Y.

(6)make dep -> make and download kernel image. #cat /proc/filesystems结果显示如下图2.4所示。

图2.4 命令结果显示

测试YAFFS能否正常运行

(1)在内核启动后,打印的消息应包含以下字段的内容: Scanning device for bad blocks 0x00000000-0x00020000 : \"vivi\" 0x00020000-0x00030000 : \"param\" 0x00030000-0x00130000 : \"kernel\" 0x00130000-0x01a30000 : \"root\" 0x01a30000-0x04100000 : \"user\"

(2)假如我们在内核中实现了/proc文件系统的话,其中就应该涵盖了YAFFS的有关内容。

(3)Dev目录下会有NAND的设备文件。 (4)建立mount目录

7

嵌入式系统课程设计(报告)

#mkdir /mnt/flash0

mount blockdevice设备

#mount -t yaffs /dev/mtdblock/3 /mnt/flash0 #cp 1.txt /mnt/flash0

(5)在Flash上创建根文件系统: # mount -t yaffs /dev/mtdblock/3 /mnt/flash0 #cp (your rootfs) /mnt/flash0 #umount /mnt/flash0

重启开发硬件平台,并且更改开发硬件平台的一些相关启动参数为:param set linux_cmd_line \"noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0\",当重新启动后,开发硬件平台的内核就是从外部Flash里启动根文件系统了。

8

嵌入式系统课程设计(报告)

第3章 软件设计

3.1 Linux操作系统简介

我们选择Linux操作系统原因是其拥有着高度自由性的特性,并且它的所有源码都是开放性的这也致使其发展更新相当快速。现如今世界流通着很多各种专属性能的Linux版本,但是它们都是基于Linux内核通过增减删改得来的。Linux操作系统能够支持在各式各样的计算机、类计算机的硬件设备上运行,小到智能手机、移动平板终端,大到台式计算机、大型机甚至是超级计算机都能运用到Linux。高度开放性的特性使得它成为一个领先的操作系统。

Linux操作系统具有非常好的移植性这使得它能在很多不同类型的硬件平台上都能正常运行;举个例子,具有x86和Alpha整两中不同的架构硬件开发平台都能正常运行Linux系统。除此以外Linux还可以作为嵌入式操作系统运用于各类微处理器终端是哪个。在此之上Linux操作系统也能够对当前主流的多核处理技术提供支持。可以实现多个CPU同时工作的功能,这样就能使系统的性能得到非常大提升。Linux结合ARM技术满足了开发者对嵌入式平台功能覆盖全、功率消耗小、使用成本小的需求。

3.2 交叉编译环境的建立

通常情况下我们对软件的编译是在上位机上实现的,而对软件的运行则是放到执行平台去运行;在电脑上安装的Linux虚拟机上进行编译,然后在S3C6410硬件开发平台上执行。一般是在Linux虚拟机通过交叉编译器把我们自己写的代码文件编译进行编译,在S3C6410硬件开发平台执行编译生成的二进制文件。通过U转串数据线经由串口下载至S3C6410硬件开发平台的FLASH或者其他存储介质,然后软件的运行是在S3C6410硬件开发平台上完成的。

本系统采用基于ARM11框架结构,搭载S3C6410硬件开发环境,所以我们使用ARM交叉编译器实现跨平台的环境搭建,在环境搭建成功之后安装各种需要的工具软件,然后就可以用于开发我们自己的视频监控系统了。

9

嵌入式系统课程设计(报告)

3.3 嵌入式Linux移植

在对Linux进行移植的时候,我们需要明白其各个部分是如何工作的。首先是引导程序BootLoader,它是用来引导内核的启动环境初始化的代码。通过这段引导代码我们能配置好开发环境的硬件设备,为内核的启动建立其所必须的寻址映射图,让系统的硬件处于最优的状态等待软件运行,给系统内核的启动提供了方便且舒适的环境。

总体的系统启动的过程可以分为以下几个层次。

(1) 最初代码启动层:加载BootLoader到指定位置运行,配置硬件所需的舒适环境。

(2) 内部核心层:在嵌入式硬件开发平台上需要更改相应的启动参数。 (3) 操作文件功能层:创建根文件系统以及启动NAND设备之上的YAFFS文件系统。

(4) 最上层用户模式层:是在内核之上的应用程序用来实现用户需求和与内核进行通信的载体。

Boorloader执行依赖于它所在的存储设备处于被整个体系结构的位置,通常来说要想启动Boorloader需分为两个阶段:

第一阶段的启动过程取决于所处体系CPU的代码,比如说最基础的设备的初始化代码与环境初始化代码。在此阶段要完成的任务有以下几条。

(1)实现第二段代码启动所需的硬件设备的最佳环境; (2)为第二阶段引导程序所需的主存空间进行环境设置;

(3)复制引导程序里第二阶段的代码到第一阶段配置好的主存空间中; (4)配置执行引导程序的二段代码所需要使用到的堆和栈并调用第二阶段的入口函数。

一般情况下引导程序的二段代码都是用C编写完成的,因为C具有灵活的语句结构所以它可以实现较为复杂的功能,而且C是最基础代码编写语言之一所以具有很好的可持续性和移植性。第二阶段需要实现的任务有。 (1)实现最初内核启动所需的各项准备的最佳环境; (2)检查我们需要的环境是否搭建成功;

10

嵌入式系统课程设计(报告)

第4章 视频采集

4.1 V4L2简介

V4L2支持多种方式获取从串口传输过来的数据,本课程设计中我们主要使用存储地址映射的方式采集连续视频数据。

应用层的执行程序接收由串口传递的数据需要完成以下操作,首先,打开USB设备文件,初始化采集端口;其次,申请足够大的视频数据缓存空间,通过映射的方式实现用户访问内核的内存,再次,将通过串口缓存到视频数据空间的视频数据添加到队列中;再次,调用内核驱动开始采集摄像头数据,应用层执行程序队列取出缓冲数据,最后,停止接收数据关闭内核驱动的调用。

4.2 采集数据的操作 数据采集流程如图4.1所示。

打开设备文件 开 设置视频格式 查询并映射到用 采集视频数据 从输出队列 中 N

停止 终止 图4.1 数据采集流程图

(1)以读写的方式打开USB摄像头的设备文件:open(\"/dev/ttyUSB0\RW)。 (2)检查输入设备的具体功能。输入指令行VIDIOC_QUERYCAP。

11

嵌入式系统课程设计(报告)

(3)将USB摄像头接收到的数据进行读取。输入指令行VIDIOC_S_INPUT。 (4)设置采集终端采集的数据格式,参数包括长宽和帧率等。分别输入指令行为VIDIOC_S_STD和VIDIOC_S_FMT。

(5)输入命令行VIDIOC_REQBUFS向系统内核中的内存区域申请帧缓冲区。 (6)申请成功后配置需要用到的内存映射。然后配置相应的内存映射文件使用户对内存的操作变为对文件的操作。

(7)实现将USB摄像头采集的数据自适应到缓冲区队列中。输入指令行VIDIOC_QBUF。

(8)启动USB摄像头去采集实时图像信息。输入指令行VIDIOC_STREAMON。 (9)输入指令行VIDIOC_DQBUF把存储满实时图像数据的帧缓冲区的内容上报。

(10)输入指令行VIDIOC_QBUF将空闲出来的帧缓冲区重新添加到队列中去。 (11)输入指令行VIDIOC_STREAMOFF用来停止USB摄像头采集实时图像信息的动作。

4.3 数据采集函数及解析 (1) 摄像头初始化函数init_V4L2 (2) static int init_V4L(struct vdIn *vd) {

int i; int ret = 0;

if ((vd->fd = open(vd->videodevice, O_RDWR)) == -1) {

perror(\"ERROR opening V4L2 interface\"); return -1; }

/*2:获取摄像头设备属性*/

memset(&vd->cap, 0, sizeof(struct v4l2_capability)); ret = ioctl(vd->fd, VIDIOC_QUERYCAP, &vd->cap);

12

嵌入式系统课程设计(报告)

if (ret < 0) {

goto fatal; } }

(3) 抓取一帧图像 int uvcGrab(struct vdIn *vd) {

if (!vd->isstreaming)// 启动抓图后isstreaming会赋值为1 if (video_enable(vd))/*开始抓图*/ goto err;

memset(&vd->buf, 0, sizeof(struct v4l2_buffer)); vd->buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; vd->buf.memory = V4L2_MEMORY_MMAP; ret = ioctl(vd->fd, VIDIOC_DQBUF, &vd->buf); switch (vd->formatIn) { case V4L2_PIX_FMT_MJPEG:

/*MJPEG输入则拷贝帧缓冲的数据到vd->tmpbuffer*/ memcpy(vd->tmpbuffer, break;

case V4L2_PIX_FMT_YUYV:

/*YUYV输入则拷贝帧缓冲的数据到vd->framebuffer */

memcpy (vd->framebuffer, vd->mem[vd->buf.index], (size_t) vd->framesizeIn); break;

default: goto err; break;}

vd->mem[vd->buf.index],

vd->buf.bytesused);

13

嵌入式系统课程设计(报告)

第5章 视频处理

5.1 格式比较 (1)RGB格式简介

RGB就是对颜色进行代码编写技术的简称,人眼可识别的颜色都可以用红色、绿色、蓝色进行不同组合来实现,其原理就是根据红色、绿色、蓝色各自占据的比例进行颜色的组合。当我们用这种方式进行编写代码的时候,颜色的比重可以用三个变量来进行配置。RBG是比较通用且常用的图像色彩显示方案。但是当遇到黑白显示系统的时候会将RGB转换成YUV编码用来兼容黑白显示系统,做黑白图片显示。

(2)RGB格式的选择

RGB与传统电视YUV相比较的话,RGB具有很多方面优势,从颜色丰富度的角度来说RGB拥有无与伦比的优越程度,RGB格式最多具有16777216种像素颜色。从兼容性的角度来说RGB在处理黑白图片方面略有欠缺,但其在数据压缩方面兼容性很强。

5.2 JPEG压缩 5.2.1 JPEG简介

JPEG是第一个明确规定为国际图像压缩标准的图像压缩格式。JPEG图像压缩技术已经在我们的生活中无处不在,其良好的算法结构能够帮助我们更快的更方便的进行压缩操作,凡是涉及到图像或者是视频处理的领域都受到JPEG技术的恩泽。其压缩编码过程要完成以下任务:

(1) 运用的编码器是基于不等长编码技术的编码器来进行数据的编码压缩。 (2) 运用专业接口对DCT系数进行加权函数量化。 (3) 运用离散余弦变换域表示的空间图转换为频域。

JPEG格式支持的颜色非常的丰富,能够圆满的表示出整张图片的像素颜色,所以这种格式保存的图片或是视频文件具有良好的还原度,基于这种特性JPEG压

14

嵌入式系统课程设计(报告)

缩技术在实际生活中拥有着非常大的比重。

5.2.2 JPEG库简介

LibJPEG是JPEG的函数接口库并且是用C语言编写的,是一个变准的C库,内部拥有着基本的JPEG的编码和解码接口方法以及其他相关功能。我们使用的是RedHat Linux发行版所使用的LibJpeg库。

JPEG库实现压缩和解压缩分为两部分。 压缩流程:

(1)配置我们选择将要压缩的对象相关环境。 (2)分配给被我们压缩的数据存储位置。 (3)在压缩的时候设置我们所需求的参数。

(4)进行数据的压缩循环已达到完成对整体的压缩操作。 (5)在进行数据压缩的时候从行开始。 (6)当整个数据压缩完成后停止循环。 (7)释放被我们初始化的压缩对象。 解压缩流程:

(1)分配给被我们压缩的数据存储位置。

(2)配置和初始化我们选择将要解压缩的对象。 (3)读取将要被解压的文件数据

(4)在解压缩的时候设置我们所需求的参数。 (5)启用解压缩操作。

(6)当解压缩操作完毕后,结束其操作。 (7)解除被我们初始化的解压缩对象的控制。

据了解JPEG专家小组推出了两种现行的压缩算法,其中一种是基于离散余弦变换的有损压缩算法技术,另外一种是基于预测的无损压缩算法技术。

下面介绍JPEG压缩算法的主要计算步骤如下:

(1)首先要使用离散余弦变换将对我们来说非重要的数据过滤掉。 (2)在我们要实现量化DCT系数的时候,要通过量化表去进行操作。 (3)从图像文件左上角第一个像素开始以Z字形进行Z字编码。

15

嵌入式系统课程设计(报告)

JPEG压缩的实现流程如图5.3所示。

开始 上锁全局缓冲区 N

YUYV格式输 Y Y

压缩到最后一 N

解锁全局缓冲区 通知所有线程有一帧数据 行加一 将一行RGB压缩成JPEG 将一行YUYV转成RGB 找到帧起始标记 插入霍夫曼压缩编码表 (Huffman) 结束 图5.3 JPEG压缩的实现流程

16

嵌入式系统课程设计(报告)

第6章 系统测试

6.1 测试方法

因为Linux系统下的程序编写具有极高的灵活性和便捷性,导致程序的简易程度参差不齐,并且方法多种多样。本课程设计主要用串口打印信息调试为主。

在调试服务器主程序时,如果我们的代码出现问题而我们无法根据现象推测出错误在哪,可以在关键函数内部添加printf()函数进行辅助信息输出。通常经过几次这种方法就可以找到问题所在。

在调试驱动程序时,可以在关键函数内部添加DBG(\"there is a error\")语句;当找到问题所在时可以利用set args修改硬件开发平台驱动的参数。

6.2 测试结果

启动pc端的虚拟机运行基于Linux的Ubuntu操作系统,同时boa服务器自动开启,启动ARM硬件开发平台,运行mount_nfs.sh脚本将ARM硬件开发平台挂载到虚拟机,在ARM硬件开发平台输入以下命令。

#cd /sdcard/my-mjpg-streamer

#./export LD_LIBRARY_PATH=/my-mjpg-streamer:$LD_LIBRARY_PATH #./mjpg_streamer -o \"output_http.so -w ./www\" -i \"input_uvc.so -d /dev/video0\" 客户端pc机打开自带的浏览器:输入网址10.0.108.130;就能随时观看USB摄像头传输过来的当前视频图像了。

17

嵌入式系统课程设计(报告)

结论

本文分析了当前市场上视频监控系统的发展前景,并且依据所得数据设计了基于Linux的嵌入式硬件开发平台的监控系统的开发流程,主要完成了以下的任务。

经过大量的调试工作,熟悉了Linux在ARM架构的开发平台的移植过程;用C语言编写了系统摄像头驱动的内核代码;实现了运用基于V4L结构的终端数据采集程序的设计;运用JPEG实现了图像压缩与解压需求;在pc端的虚拟机上移植服务器,通过虚拟机进行数据的桥接传输功能。

由于自身技术的局限,本文所设计的视频监控系统还存在不合理与待优化的地方,以下提出两点自己的想法,希望以后提升自身的过程中能够逐步实现:

(1)将视频的压缩与解压缩等操作换成当前主流的芯片来处理,选用更为适合进行网络传输的数据格式代替当前的格式,选择更为优秀的算法优化自己的代码,减小代码的冗余度。

(2)开发相应的线上APP来接收实时的视频数据。

18

嵌入式系统课程设计(报告)

参考文献

[1] 张仕海,周颖.基于ARM的嵌入式视频监控系统的硬件设计[J].物联网技术,2017,

(5):12-17.

[2] 王亚杰.嵌入式网络视频监控系统设计[D],武汉:武汉理工大学,2016. [3] 张君.Linux操作系统构建原理与应用[J] .制造业自动化.2015, (4):154-156. [4] 苏艳苹,姜凌.基于ARM9_2410EP的嵌入式Linux的研究和移植[J].数字技术与

应用.2017,(2):24-25.

[5] 刘治红,骆云志.智能视频监控技术及其在安防领域的应用[J],中国兵器工业第

五八研究所,2018,3(2):8-11.

[6] 刘京.基于ARM的嵌入式视频监控系统的设计与实现[D].中国科学院大学,201

5.

[7] 徐向东.基于Linux的USB摄像头的探索使用和编程实现[J].科技创新导报.201

4,(36):13-14.

[8] 许彬,张海涛,胡豆豆.云计算平台中监控视频摘要任务 调度方法研究[J].计算机

应用与软件,2017,34(7):7-10.

[9] 赵路伟.网络视频监控技术在高速铁路中的规划构想[J].铁路通信信号工程技术,

2016,11(1):1-6.

[10] 王燕乐.网箱远程监控终端的设计与实现[D] .浙江海洋学院,2016.

[11] 杨建国,蔡立志,郑红.基于ARM的嵌入式视频监控系统的设计与实现[J].无线

互联科技,2018(4):224-285.

[12] 姚正纲,闫敏.智能视频监控技术与应用微探[J].中外交流,2017(43):73-75.

19

因篇幅问题不能全部显示,请点此查看更多更全内容

Top