高级嵌入式论文.docx

上传人:b****7 文档编号:26034838 上传时间:2023-06-17 格式:DOCX 页数:24 大小:685.42KB
下载 相关 举报
高级嵌入式论文.docx_第1页
第1页 / 共24页
高级嵌入式论文.docx_第2页
第2页 / 共24页
高级嵌入式论文.docx_第3页
第3页 / 共24页
高级嵌入式论文.docx_第4页
第4页 / 共24页
高级嵌入式论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

高级嵌入式论文.docx

《高级嵌入式论文.docx》由会员分享,可在线阅读,更多相关《高级嵌入式论文.docx(24页珍藏版)》请在冰豆网上搜索。

高级嵌入式论文.docx

高级嵌入式论文

华东理工大学2016—2017学年第1学期

《高级嵌入式系统》课程论文

开课学院:

信息学院任课教师:

成绩_______

成员:

姓名学号

姓名学号

论文题目:

基于ARM的视频采集系统设计

论文摘要:

21世纪以来,科学技术的迅速发展,尤其是在计算机技术方面的进步更是突飞猛进,同时伴随着嵌入式系统和ARM技术的出现。

嵌入式系统的应用可谓是无处不在,它所涉及的领域包括工业控制、消费电子、网络通信、科学研究、军事国防、医疗卫生、航空航天等方方面面。

教师评语:

 

教师签字:

年月日

 

 

摘要

21世纪以来,科学技术的迅速发展,尤其是在计算机技术方面的进步更是突飞猛进,同时伴随着嵌入式系统和ARM技术的出现。

嵌入式系统的应用可谓是无处不在,它所涉及的领域包括工业控制、消费电子、网络通信、科学研究、军事国防、医疗卫生、航空航天等方方面面。

另外,基于嵌入式技术的飞速发展,各种嵌入式芯片如DSP、ARM、SOC等也相继出现,优劣互补,把嵌入式技术

方便人类推向了一个新的高度。

本文将采用理论与实践相结合的方式,通过对ARM系统的设计与调试,从而掌握了对嵌入式系统的设计与开发。

本文作者成功利用了USB摄像头作为视频监控系统的终端,USB摄像头和嵌入式开发板的组合更加可以方便的实现中间数据的处理、保存和查询等功能。

同时将动态Web技术应用到嵌入式网络监控系统中,利用Web浏览器实现了用户和嵌入式系统的交互。

本系统经测试在实验室条件下比较稳定,图像清晰流畅。

达到了预期的设计要求。

关键字:

嵌入式系统,ARM,视频服务器,视频采集

第1章绪论

1.1课题背景

随着嵌入式系统不断地发展,它所涉及的领域包括生活中的方方面面,从医疗卫生、消费电子、网络通信,到工业控制、科学研究、军事国防、航空航天。

而我们所熟悉的电子产品几乎都可以找到嵌入式系统的影子。

随着ARM(AdvanceRISCMachines)技术的推广,嵌入式芯片从原来的8位、16位等升级到了32位,可见嵌入式的发展前景一片光明。

而Linux操作系统以其源代码的开放性、可裁减性,对多处理器的支持,尤其是ARM体系结构的广泛支持,以及对多任务多文件系统的支持,解决了限制嵌入式系统发展的软件瓶颈问题。

同时,嵌入式系统设计是一门综合性的课程,涉及电子、计算机、自动控制等诸多专业知识,综合性强,可包括微机原理、单片机设计、操作系统等课程内容。

嵌入式系统设计需要软件和硬件紧密配合,协调工作,共同完成系统的预定功能。

而在目前计算机技术和网络技术逐渐普及的情况下,现在监控技术已经达到了网络多媒体监控阶段。

从第一代的全模拟监控到准数字监控系统,再到全数字监控系统。

计算机技术和网络技术目前都在高速的发展,现在监控系统已经发展到网络视频监控系统,网络视频监控具有数字视频监控和网络传输技术的优点,不被地理位置的约束,扩展方便简单,信息处理比较容易,可以使远程的管理和维护变成现实,只要网络覆盖的地方,就能实现网络监控。

1.2论文总体思路

首先通过简介视频开发的相关技术,网络通信技术,图像压缩技术,然后介绍嵌入式WEB服务器的原理,Video4Linux的编程原理,最后引出嵌入式视频服务器的总体结构。

总体的设计结构包括:

系统硬件电路设计(主要包括核心电路板的介绍和扩展板部分电路设计)、建立ARMLinux系统软件开发平台、嵌入式WEB服务器的设计等等。

当然,该设计存在优点与不足,最后会从未来的研究与发展方向对该设计进行分析与拓展。

 

第2章相关技术及原理介绍

2.1视频监控框架介绍

本系统有监控现场摄像头、嵌入式视频服务器、客户端三部分组成。

具体的结构示意图如图2-1。

图2-1嵌入式视频监控系统总体结构图

而对于本系统的设计流程,则如下图2-2所示。

图2-2嵌入式视频监控系统流程图

2.2网络通信技术

众所周知,Web网页传输是建立在HTTP协议的基础之上的,但是,HTTP有着自己的局限性。

首先,HTTP是无连接的协议,每次连接只能处理一个客户请求,服务器把客户的请求处理完,收到应答后,就会把连接断开,虽然这种方式可以节约时间,但却不能使用广播功能。

其次,HTTP是无状态的协议,无状态的协议意味着对数据没有记忆功能,也就是说,如果后面对前面的数据有需求,则必须进行重新传输,极大的造成了资源浪费,特别是带宽浪费。

因此,对于实时性要求较高的视频传输,传统的HTTP似乎不再适用,那么,针对本文,将采取用RTP/RTCP代替HTTP进行通信的方法来解决这一问题。

实时传输协议RTP(Real-timeTransportProtocol)是一个网络传输协议,RTP为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。

在实时传输协议RTP协议会话期间,各参加者一遍一遍地传送RTCP包,RTCP包中含有已发送包的数量和流失包的数量,因此服务器可利用这些信息动态地改变传输速率。

2.3图像压缩技术

数字化视频采集是嵌入式系统的典型应用,由于数字信号的数据量很大,标准的PAL信号的速率为216Mb/S,如果不压缩,基本上不可能传输,即使压缩到2Mb/s时,也只能在通信干线上传输,不能扩展到终端用户,因此需要提高压缩效率,一方面通过图像降级实现,但主要还是提高编码效率[5]。

JPEG是目前网络最流行的压缩格式,可以把图像压缩到最小的图像格式,经常用potoshop的人会知道,在存图像格式时有个分级压缩,共分为11级压缩,就是最小压缩比的10级压缩,压缩比例也可以到5:

1,在压缩比例最大的0级压缩可以达到0:

1。

通常我们选用的8级压缩压缩比达到24:

1,这个比例压缩出来的图片我们肉眼几乎分辨不出和原图的差距,虽然数据量大大的减少,但是图像我们看不出有任何的变化。

JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。

目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快。

2.4嵌入式WEB服务器的原理

嵌入式WEB服务器一般由五个主要模块组成:

嵌入式HTTP引擎,安全模块,应用程序接口,文件系统和配置模块[26]。

由于本嵌入式视频监控系统的操作系统选用ARMlinux嵌入式操作系统,它的文件系统比较成熟,提供了可以使文件访问的接口,可以直接使用文件系统提供的读写接口访问嵌入式WEB资源文件,解决了专门设计文件系统的麻烦。

本系统中嵌入式服务器选用适合嵌入式系统的Boa服务器,它是单任务的嵌入式HTTP服务器,它占用内存小,另外支持动态CGI技术,源代码开放,功能强大。

2.5Video4Linux的编程原理

Video4linux的简称是V4L,是Linux系统中的影像串流系统与嵌入式影像系统的基础,它是Linux内核里免支持影像设备的一组应用程序的接口,配合恰当的视频采集工具与视频采集工具的驱动程序,V4L可以实现视频图像的采集的功能[23]。

V4L为二层式结构,上层为V4L的驱动程序,下层构成则是影音设备的驱动程序。

这里我们用到的是V4L的上层驱动程序,即V4L本身所提供给程序开发人员的一组应用程序开发接口。

Video4Linux视频图像采集流程图如图2-3。

图2-3Video4Linux视频图像采集流程图

 

第3章系统硬件电路设计

嵌入式系统的开发中分为硬件开发和软件开发两部分,且两者是可以裁剪的,功能专一,其中硬件是软件的载体,没有硬件的支持软件没办法运行,只有搭建好了硬件平台,才能进行软件的开发。

3.1硬件的选择

嵌入式系统的硬件主要包括处理器和外围设备接口,,不同的项目所需要的外围设备不一样,这样使得嵌入式系统的灵活性和专业性大大提高,不同的嵌入式系统需要的操作系统不完全一致,系统内核要根据具体的设备进行裁剪,这样可以保证系统高效稳定的运行。

本系统中将采用S3C2410处理器。

之所以选择这款由韩国三星公司推出的S3C2410处理器,首先是它的市场认可度较高,其次,S3C2410采用的是ARM920内核,属于ARM9系列的处理器,2410的主频可以达到206MHz,通过提供一系列完整的系统外围设备,S3C2410大大减少了系统的设计成本,消除了为系统配置额外设备的需要,其结构框图如图3-1。

图3-1S3C2410结构框图

3.2硬件框架设计

为了降低开发的成本,降低开发的难度,本系统采用核心板和扩展板的模式,核心板包括主要包括微处理器S3C2410A,随机存储器SDRAM和FLASH。

256M的SDRAM用作操作系统和程序运行的空间,FLASH保存系统所需要的根文件系统和用户开发的应用软件程序。

扩展板包括系统电源、USB模块、以太网模块、JTAG模块和串口。

电源模块用于5V输入,提供3.3V和1.8V输出的直流供电。

USB模块负责接收USB摄像头采集到的数字图像信息,通过内部总线传送给处理设备,以太网模块将硬件系统与互联网相连接,将采集到的图像通过网络传送给客户端。

JTAG和串口主要用于对嵌入式系统硬件电路的开发、调试和后期维护。

整个嵌入式视频服务器的系统硬件结构如图3-2所示。

图3-2硬件系统框架图

(1)电源模块

电源的输入端采用的是5V的直流电源供电,考虑到处理器中需要的电源包括3.3V和1.8V电压,分别采用LM1085-33和AS1117-1.8V电源芯片进行电压的转换,USB部分需要5V电源供电,引出5V的电压,在本硬件系统中一共包括5V,3.3V和1.8V三种电压模式。

(2)存储模块

Nand-flash内存是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。

本系统系统采用三星公司64MB容量的NandFlashK9F1208。

(3)网络模块

本文选用DM9000A芯片作为S3C2410的外扩网络芯片,DM9000A提供10M/100M自适应的以太网功能,内建有PHY和8K×16位的SRAM。

DM9000A支持8位和16位的数据接口,DM900A提供了介质无关接口用于支持一些提供介质无关接口的设备。

这是完支持802.3u规格协议,它的自动调节功能可以动态的适应带宽的要求。

(4)其他外围接口

嵌入式系统的开发调试一般采用宿主机和目标板的交叉编译的方式进行。

这种方式的特点就是软件程序的开发全部在宿主机上进行,这样使得开发的难度降低,开发程序所需的一些系统资源可以得到很好的解决。

(5)复位电路

采用专门的复位芯片IMP811为系统提供可靠的复位信号nRESET,通过反相器74HC04将nRESET反相,提供另外一种电平的复位信号RESET。

RESET在系统中供网络控制器DM9000A使用。

 

第4章操作系统的建立

只有建立起了操作系统,嵌入式视频服务器的应用软件才可以在嵌入式系统中运行,本章内容是建立在硬件设计的基础上,为应用软件的开发搭建的桥梁。

4.1交叉编译环境的建立

由于嵌入式系统的资源有限,无法运行一些大型的开发程序,通常嵌入式程序的开发都是在宿主机PC机上开发,在PC机上安装交叉编译器,写好程序之后,经过交叉编译器编译成嵌入式系统可以运行的软件,然后通过串口或者网络接口下载到嵌入式系统目标板。

图4-1是编译调试的开发方法示意图。

图4-1交叉开发模式图

具体的步骤如下:

(1)从Handhelds.org的FTP上下载交叉编译工具的源代码包arm-linux-gcc-3.3.1.tar.bz2。

(2)把开发包放到虚拟光驱上,执行命令:

mount/dev/cdrom/mnt,成功后会生成install.sh文件。

(3)安装,执行命令:

./install.sh。

(4)在PC机系统linux系统终端上输入armv,按一下Tab键,会自动显示

armv4l-unknown-linux这时表明交叉编译环境已经建立,交叉编译器已经安装完毕。

4.2BootLoader移植

BootLoader的作用是引导系统程序的运行,此程序的功能是建立系统的映射表,初始化系统的硬件资源,为运行内核资源做好准备。

BootLoader在NandFlash中的分布如下图4-2所示。

图4-2NandFlash空间分配结构图

具体的一直过程如下:

(1)移植可以从Norflash启动的uboot,这个阶段是移植一个最简单的uboot,可以烧在Norflash内运行.

(2)移植支持Nandflash驱动的uboot,加入Nandflash驱动的支持,可以在uboot

命令行下操作Nandflash.但还未能从Nandflash启动,只能在Norflash内运行.

(3)移植可以从Norflash启动的uboot,可以烧录在Nandflash,并设置从Nandflash启动运行uboot.

4.3Linux2.6.12内核的移植

Linux内核版目前比较常用的有2.2,2.4和2.6三种内核版本,Linux版本分为主版本号和次版本号,次版本号尾数为偶数的版本比较稳定,为基数的是测试版本,ARM9处理器常用的版本是2.4内核和2.6版本的内核,其中2.6内核是新版本的内核,比2.4版本的功能要强大,其中2.6版本的内核在系统稳定行和功能上都要比之前的版本强大很多,目前也是比较流行的版本,应用越来越广泛。

本着加快运行速度、合理、节省内存等因素的原则,可按如下配置配置内核:

(1)下载内核软件包

下载内核软件包linux-2.6.12.tar.gz,下载完成后进行解压,解压后保存在src目录下面。

(2)修改Makefile文件

找到ARCH和CROSS_COMPILE,修改为:

ARCH?

=arm

CROSS_COMPILE?

=/opt/eldk/usr/bin/arm-linux-

(3)设置Flash分区

修改arch/arm/mach-s3c2410/devs.c文件,添加如下内容:

#include

#include

#include

/*NANDController*/

/*建立flash分区表*/

staticstructmtd_partitionpartition_info[]={

{/*128k*/

name:

"vivi",

size:

0x00020000,

offset:

0x00000000

},{/*64k*/

name:

"param",

size:

0x00010000,

offset:

0x00020000

},{/*2m+832k*/

name:

"kernel",

size:

0x002d0000,

offset:

0x00030000

},{/*3m*/

name:

"root",

size:

0x0030000,

offset:

0x00300000

},{/*48*/

name:

"user",

size:

0x03000000,

offset:

0x00600000

}

};

/*加入NANDFLASH分区*/

staticstructs3c2410_nand_setnandset={

nr_partitions:

5,/*thenumberofpartition*/

partitions:

partition_info,

};

(4)配置内核

修改fs/Kconfig,支持启动时挂载devfs

$vimfs/Kconfig

找到menu“Pseudofilesystem”

在其中添加:

configDEVFS_FS

bool“/devfilesystemsupport(OBSOLETE)”

defaulty

configDEVFS_MOUNT

bool“Automaticallymountatboot”

defaulty

dependsonDEVFS_FS

(5)执行内核配置命令

[root@localhostlinux_2.6.12]#makemenuconfig

编译完成时,linux2.6内核压缩镜像zImage已经生成在/usr/src/linux_2.6.12/arch/arm/boot文件夹下。

4.4移植cramfs根文件系统

根文件系统是构成Linux嵌入式系统的重要组成部分,目前嵌入式系统可以应用的根文件系统有:

Romfs、Cramfs、Ramfs、Jffs2、Ext2等。

Cramfs系统一般是只读的系统,在系统操作过程中如果对文件系统进行写操作,将会产生系统错误,本文提出的配置根文件系统的方法经多次试验验证可以进行写操作,系统比较稳定,可以节省系统的内存空间。

具体的构造根文件系统的具体过程如下:

(1)建立相应文件夹

创建rootfs文件夹并在下面建立如下文件夹

[root@localhostrootfs]#mkdirbinsbinetclibdevusrmntprocramdiskvar

(2)创建busybox工具

本文所应用busybox-1.00来作为Linux内核的命令工具集。

Busybox的配置如下:

[root@localhostbusybox-1.00-pre10]#makemenuconfig

打开配置界面,如图4-3所示。

图4-3busybox配置界面

在编辑选项中选择静态编译器和交叉编译器arm-linux,在在安装选项(InstallationOptions)中选择Don’tuse/usr,然后进行编译安装:

[root@localhostbusybox-1.00-pre10]#makedep

[root@localhostbusybox-1.00-pre10]#make编译

[root@localhostbusybox-1.00-pre10]#makeinstall安装

安装完成后,在busybox-1.00-pre10目录下生成_install文件夹,所选工具全部在此文件夹下。

(3)利用mkcramfs工具生成cramfs压缩文件系统

mkcramfs能把相应的Cramfs目录树压缩成为单一的映象文件,这样就能生成我们需要的镜像文件。

 

第5章系统软件设计

本嵌入式远程视频监控系统软件由摄像头驱动模块,图像采集模块,JPEG图像压缩模块,网络传输模块,嵌入式WEB服务器组成。

摄像头驱动模块的作用是使得摄像头在Linux操作系统下可以正常工作,为应用程序的编写提供底层系统的编程接口。

图像采集程序使用驱动程序提供的编程接口获取摄像头采集来的图像信息并进行暂时存储。

JPEG压缩模块的功能是完成对采集到的原始图像信息进行编码处理,使得图像达到最小化,清晰化,为网络传输解决带宽不足的问题。

WEB服务器通过HTTP协议与远程监控计算机端的浏览器进行信息交流,它提供了应用程序模块的编程接口以及视频监控的界面。

该系统的总体软件框架如图5-1所示。

图5-1嵌入式视频采集系统软件框架图

5.1摄像头驱动程序模块

图像的采集是利用OV511数字摄像头实现的,OV511通过USB串行总线和S3C2410相连,因此驱动程序的开发主要是对Linux系统下USB驱动程序的开发,OV511的驱动独立开发难度比较大,主要是既要涉及图像采集芯片的驱动开发,还要涉及USB的驱动的开发。

在Linux2.6内核中有OV511的驱动程序的开源代码,根据自己的系统的开发平台进行相应,移植,重新配置编译内核等操作可以实现OV511的驱动程序集成到Linux内核之中。

5.2图像采集模块设计

图像采集模块设计的具体的流程在第2章已经介绍过,这里将根据流程图进行相应的代码实现。

(1)视频设备打开

structvdIn*vf;

if((vF->fd=open(vf->videodevice,O_RDWR))==-1)

exit_fatal("ERRORopenv4l");

(2)获取图像信息和视频信息

structvdIn*vf;//获取设备相关信息

if(ioctl(vf->fd,VIDIOCGCAP,&(vf->videocap))==-1)

exit_fatal("Couldn'tgetvideodevicecapability");

//获取图像相关信息

if(ioctl(vf->fd,VIDIOCGPICT,&vf->videopict)<0)

exit_fatal(“cannotgethVIDIOCGPICT");

(3)初始化采集窗口、颜色模式、帧状态

vf->hdrwidthl=320;

vf->hdrheightl=240;

vf->formatInl=format;

//设置图像格式位为JPEG格式,大小为320×240。

(4)捕捉视频帧数据

read(videoIn.fd,videoIn.pFramebuffer,size);

(5)关闭视频设备

close(vf->fd);

5.3JPEG图像压缩模块设计

JPEG是目前网络最流行的压缩格式,可以把图像压缩到最小的图像格式,接收到图像数据后进行JPEG压缩,其主要处理过程包括:

色彩模型转换、离散余弦—DCT变换、重排DCT结果、量化、编码等[25]。

编码流程如5-2所示。

图5-2JPEG编码流程

(1)色彩模型转换

由于JPEG只支持YUV格式的数据,不支持GDB格式,所以在进行数据处理之前,要先进行数据格式的转化,具体的转化方法如下:

Y=0.299R+0.587G+0.114B

U=-0.169R-0.3313G+0.5B

V=0.5R-0.4187G-0.0813B

其中,Y表示亮度,U和V表示颜色。

转换完数据要进行采样,一般进行采样的比例是2:

1:

1或者是4:

2:

2,由于是采用隔行采样的方式,所以采样后的数据比原来减少1倍,图像的大小自然也要比原来少一半。

(2)DCT变换

DCT变换是使得图像信号在频率域上进行相应的变化,从而可以分离出高频和低频信息。

然后再对图像的高频部分所谓的高频部分就是图像的细节部分进行压缩,从而可以使得图像的数据信息得到压缩[26]。

首先将获取的图像划分为多个8*8的矩阵。

然后再对每1个矩阵作DCT变换。

变换后可以得到一个频率系数矩阵,其中的频率系数都是浮点数。

(3)量化

量化的目的是为了把频率系数转化为整数,这是因为在变换的过程中,产生的码数都是浮点数,只有进行量化才能进行后续的操作。

在进行量化后,由于量化使得矩阵中的数值和原数据有差异,所以就造成了图片的失真,这是图片失真的最主要原因。

在这一过程中,质量因子的选取至为重要。

质量因子的值越大可以大幅提高压缩的比率,但是图像质量就比较差;反之,质量因子越小,图像重建质量越好,但是压缩率比越低。

(4)编码

色彩模型转化,DCT变换和量化都是为了编码做准备,在上述的过程中图像的压缩率并没有多少改变,编码才是真正的实现压缩率的改变。

编码采用两种机制:

一是0值的行程长度编码;二是熵编码[26]。

在JPEG编码中,采用的方法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1