嵌入式开发实验报告

上传人:博****1 文档编号:497938094 上传时间:2022-12-26 格式:DOCX 页数:18 大小:66.89KB
返回 下载 相关 举报
嵌入式开发实验报告_第1页
第1页 / 共18页
嵌入式开发实验报告_第2页
第2页 / 共18页
嵌入式开发实验报告_第3页
第3页 / 共18页
嵌入式开发实验报告_第4页
第4页 / 共18页
嵌入式开发实验报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《嵌入式开发实验报告》由会员分享,可在线阅读,更多相关《嵌入式开发实验报告(18页珍藏版)》请在金锄头文库上搜索。

1、目录1绪论12课程设计的目标23课程设计的意义24需求分析35概要设计41. 分配内存42. 获取并记录缓存的物理空间53. 处理采集数据74. 关闭视频设备86相关技术说明81视频采集应用程序流程82.设定属性及采集方式87详细设计101. 监控前端10162. 监控终端128总结绪论当今,随着工厂的建设、管理向着信息化、智能化方向发展,在厂区安装闭路监控系 统就成了许多生产企业必不可少的管理措施之一,在企业内部安装一整套局域网上的网络 视频监控系统,可以很清楚方便地了解本企业的生产工作情况。另外,在某些工业生产现 场,需要对流水线上的产品或是机械机床上的刀具等进行实时的监控,发现异常情况就

2、会 产生及时的反应措施和报警,这样可以有效地保障生产的顺利进行。目前,在我国各行业中广泛使用的闭路监控系统大多为模拟系统,其主要特点是:采 用矩阵主机控制,通过电视墙监视前端目标,采用长延时模拟录像机系统进行录像和回 放;其主要缺点是:当录像资料需要长时间备份时,需要大量的录像带,消耗大量的人力 和物力,并且在录像回放、检索时操作不方便。因此,基于数字存储技术的硬盘录像系统应运而生,经过几年的发展,至今技术已经 完全成熟,很好地解决了传统图像存储及回放等技术难题。数字硬盘录像系统不仅存储费 用低、效率高,而且还具有网络传输、远程传输和循环存储等优点。与此同时,硬盘录像 系统的数字化和传输网络化

3、等先进技术可以实现与防盗报警等系统联网联动,及时准确地 反馈现场信息,为报警事件提供充分可靠的依据。我们选用的研华视频监控系统就是一个典型的数字式的录像系统,存储量大,回放和 检索都非常地方便。第一章课程设计的目标1. 了解闭路电视监控系统的设计目标、原则、依据及基本设计方案。2. 熟悉数字视频监控系统的硬件组成及接线和布线。熟悉数字视频监控系统的软件系 统。3. 熟悉图像的采集、传输以及后继的处理等步骤的硬件支持部分。4掌握所有实验器材的性能及其具体的使用规则,完成具体设备的连接,组成一个四 通道的实时数字视频采集监控系统。第二章课程设计的意义随着计算机网络技术、视频压缩技术以及嵌入式技术在

4、近些年来的迅速发展,网络视 频监控系统进入快速发展期,市场上出现了很多网络视频监控产品,以满足人们对安全的 各种要求。采用嵌入式Web技术的网络视频监控系统,目前正成为网络视频监控系统的一个重要 发展方向。用户通过浏览器或其他专门的客户端软件,就可远程访问监控摄像机,实现对 现场的远程视频监控。在系统设计中采用B/S结构,将视频采集功能模块和PC机客户端监 控功能模块相分离,采用TCP协议对视频数据进行网络传输。视频采集,对目前Linux下USB摄像头驱动的两种接口标准Video for-Linux和Videofor Linux Two分别进行了研究,分别实现了基于这两种标准的驱动下的图像采集

5、,并在最 终的系统中采用了基于Video for Linux标准的驱动程序,完成了图像采集功能。通过在嵌 入式视频采集上建立嵌入式Web服务器,使用户通过Web页面查看图像视频。第三章需求分析在本实验中,我们要达到的设计要求是:组成一个4通道画面的实时数字录像监控系 统,通过4路摄像系统将各自采集的数字图像在显示器上用4分屏方式分别显示出来并用硬 盘予以记录便于回放和查询:同时,可以将其中任一路摄像系统采集来的连续视频图像或 是单一图片通过网络传送至局域网上的另外一台计算机上,这样使得通过网络远距离查看 录像资料成为可能,而且也可以在另外的计算机上对这些传送过来的图像、图片信息进行 一定的图像

6、处理及比对,若是发现异常情况可以将一定反馈报警信号通过局域网发送给图 像采集系统,实时图像采集系统的管理员据此检查各现场的情况,这样就可以尽早发现监 控现场的异常情况。这套数字视频硬盘监控录像系统可以用于工厂厂房现场的监控;也可用于机械加工机 床上对刀具进行多角度的观测和图像采集,在对采集来的图像进行比对和检查,可以尽早 发现刀具表面的裂纹以及其他可能产生的失效形式。在一些对软、硬实时性要求并不高的 场合都可以考虑应用。1. 架构合理:采用先进合理的技术来架构系统,使整个系统安全平稳地运行,并具 备良好的未来扩展条件。2. 稳定性和安全性:只有稳定运行的系统才能确保企业闭路监控系统平稳运行,只

7、 有拥有较高的安全性才能保证整个系统不会被非管理人员和非法恶意操作所破 坏。3. 产品主流:系统是否采用当今的主流产品,关系到系统的整体质量和未来能否得 到良好的技术支持以及完整的技术文档资料。4. 低成本低维护量:力争有良好的性能价格比,所采用的产品应是简单、易操作、易维护和高可靠度的。系统的易操作性和易维护性是保证非专业人员使用的一个 重要条件。5. 功能完善:录像、监控、预警、查询等功能的运用应简单、方便。第四章概要设计监控系统由监控前端,监控终端,网络三部分组成,监控前端是一个嵌入式Linux系 统,它通过S3C6410的Camera IF接收摄像头(SAA7113)采集的数据,并传送

8、给硬件编解码 (MFC)模块,并把得到的经过H264压缩的数据打包发送到IP网络上,监控终端(Linux)通过 网络接收数据包,经过解码实时播放。总体框架如图1:应用软件:视频采集压缩BootloaderS3C6410UARTMFCCamera IFSAA7113揚像头整个嵌入式视频采集系统由软件和硬件两部分组成。硬件方面,以S3C6410处理器为 核心通过Camera IF接口接收摄像头数据,经过MFC硬件编码后通过DM9000发送,UART作 为开发调试接口;软件方面,引导程序和Linux内核,设备驱动程序形成基本的嵌入式运 行环境,应用层负责视频采集,压缩及传输。4.1分配内存接下来可以

9、为视频捕获分配内存:struct v4l2_requestbuffers req;if (ioctl(fd, VIDIOC_REQBUFS, &req) = -1) return T; v4l2_requestbuffers结构如下:struct v4l2_requestbuffers_u32 count; /缓存数量,也就是说在缓存队列里保持多少张照片enum v4l2_buf_type type; / 数据流类型,必须永远是 V4L2_BUF_TYPE_VIDE0_CAPTUREenum v4l2_memory memory; / V4L2_MEM0RY_MMAP 或 V4L2_MEM0R

10、Y_USERPTR_u32 reserved2;4.2获取并记录缓存的物理空间使用VIDIOC_REQBUFS,我们获取了 req.count个缓存,下一步通过调用VIDIOC_QUERYBUF命令来获取这些缓存的地址,然后使用mmap函数转换成应用程序中的绝对地址,最后把这段缓存放入缓存队列: typedef struct VideoBuffer void *start;size_t length; VideoBuffer;VideoBuffer* buffers = calloc( req.count, sizeof(*buffers);struct v4l2_buffer buf;for

11、 (numBufs = 0; numBufs req.count; numBufs+) memse t( & buf, 0, sizeof(buf);buf. type = V4L2_BUF_TYPE_VIDE0_CAPTURE;buf.memory = V4L2_MEMORY_MMAP;buf.index = numBufs;/读取缓存辻(ioctl(fd, VIDIOC_QUERYBUF, &buf) = -1) return T; buffersnumBufs.length =buf.leng th;/转换成相对地址buffersnumBufs.start = mmap(NULL, bu

12、f.length, PROT_READ | PROT_WRITE, MAP_SHARED,fd, buf.m.offse t);if (buffersnumBufs.start = MAP_FAILED) return T; /放入缓存队列if (ioctl(fd, VIDIOC_QBUF, &buf) = -1) return T;操作系统一般把系统使用的内存划分成用户空间和内核空间,分别由应用程序管理和 操作系统管理。应用程序可以直接访问内存的地址,而内核空间存放的是供内核访问的代 码和数据,用户不能直接访问。v4l2捕获的数据,最初是存放在内核空间的,这意味着用户不能直接访问该段内存,必

13、须 通过某些手段来转换地址。一共有三种视频采集方式:使用read、write方式;内存映射 方式和用户指针模式。read、write方式,在用户空间和内核空间不断拷贝数据,占用了大量用户内存空间,效率不高;内存映射方式:把设备里的内存映射到应用程序中的内存控件,直接处理设 备内存,这是一种有效的方式。上面的mmap函数就是使用这种方式;用户指针模式:内存 片段由应用程序自己分配。这点需要在v4l2_requestbuffers里将memory字段设置成 V4L2_MEM0RY_USERPTR。4.3处理采集数据V4L2有一个数据缓存,存放req.count数量的缓存数据。数据缓存采用FIFO的

14、方式, 当应用程序调用缓存数据时,缓存队列将最先采集到的视频数据缓存送出,并重新采集- 张视频数据。这个过程需要用到两个ioctl命令,VIDIOC_DQBUF和VIDIOC_QBUF:struct v4l2_buffer buf;memse t(&buf,0,sizeof(buf);buf. type=V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory二V4L2_MEMORY_MMAP;buf.index=0;/读取缓存 f (ioctl(cameraFd, VIDIOC_DQBUF, &buf) = -1) return T; /视频处理算法/重新放入缓存队列f

15、(ioctl(cameraFd, VIDIOC_QBUF, &buf) = -1) return -1;4.4关闭视频设备使用close函数关闭一个视频设备 close(cameraFd)第五章相关技术说明51视频采集应用程序流程5.2设定属性及采集方式打开视频设备后,可以设置该视频设备的属性,例如裁剪、缩放等。这一步是可选的。在Linux编程中,一般使用ioctl函数来对设备的I/O通道进行管理: extern int ioctl (int _fd, unsigned long int _request,)_THROW;_fd :设备 的ID,例如刚才用open函数打开视频通道后返回的cameraFd ; _request :具体的命 令标志符设备参数设置示例:设置帧率struct v4l2_streamparm parm;memset(&parm, 0, sizeof(struct v4l2_streamparm);parm. type = V4L2_BUF_TYPE_VIDE0_CAPTURE;parm.parm.cap tur

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号