微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ARM的嵌入式监控系统设计与实现

基于ARM的嵌入式监控系统设计与实现

时间:10-18 来源:互联网 点击:
3 系统硬件设计

网络服务器是系统硬件的核心部件,它由运行嵌入式操作系统的嵌入式计算机构成,在嵌入式操作系统之上运行着系统的核心软件。网络服务器采用的是基于ARM7内核的CPU—STR710F-Z2T6 。该芯片是一款基于ARM 芯片。它一方面具有ARM处理器的:低功耗、高性能等优点;同时又具有丰富的片上资源,非常适合嵌入式产品的开发。

MPEG-4多媒体编码芯片则采用北京九为安泰科技有限公司的Mpeg4全D1 网络视频服务器(编码)EN4000,该芯片提供了丰富的外围硬件接口:支持CCIR601 建议的16Bit 视频解码器接口、32Bit数据、81MHz的SDRAM数据总线接口、I2C总线接口、I2C外部音频/PCM编码器/DSP 接口以及灵活的主机接口,可以支持多种类型的CPU。 图2简单介绍了MPEG-4硬件视频压缩处理的结构和网络接口。



图 2 MPEG-4 硬件视频压缩处理的结构和网络接口图  

MPEG-4 视频采集压缩模块以 EN4000 芯片为核心,完成 对标准视频信号(PAL 或 NTSC 信号)的 A/D 转换, MPEG-4 压缩 图 以及与 S3C44B0X 之间的通信功能. 2 中视频解码 ADC 把从 摄像头输入的模拟视频信号转化为数字视频信号, 然后进行编码预处理, 即把视频解码输出的 CCIR601 格式的信号转化为编 码器可以处理的 CIF 或 QCIF 格式,然后再进行 MPEG-4 压缩 编码.S3C44B0X 上的软件则通过总线接口单元来控制编码器 的参数设置和读取编码压缩后的码流数据.

视频数据处理模块包括以下功能单元: BT829 为核心的 以 以 视频 ADC 单元; EN4000 为核心的 M PEG-4 视频压缩单元; 以 S3C44B0X 为核心构成的控制逻辑和总线接口单元.总线接 口单元是视频数据处理模块与 S3C44B0X 进行交互的通道, 可 以和主机进行视频码流和控制数据的交换.控制逻辑是视频采 集压缩模块的核心, 它控制并协调各模块工作, 提供控制信号, 通过指令实现系统各模块所需要的选通, 缓冲, 读/写使能, 数据 总线和地址总线的切换等等.镜头云台控制是通过 S3C44B0X 上的 RS-232 口进行的, 允许用户根据自己的要求调节系统. 用 户可以通过调节镜头的景深,焦距以及光圈来调整图像质量, 还可以通过云台的上下左右调节来获取不同角度的图像.由监 控中心的客户机端软件通过 SOCKET 网络接口, 把调整信息发 送给服务器端, 服务器接收到控制指令后, 进行指令识别, 然后 完成调整任务. 向对应的 RS-232 口发送指令去控制云台, 技术创新

4 视频数据发送,指令控制模块的设计与实现

监控现场主机通过视频数据发送模块,将现场采集到的视 频流数据经过编码后, IP 组播的形式通过计算机网络发送出 以 去. 对于发送来的视频数据, 运行在监控中心主机端的视频数据 接收播放模块一方面可以将其保存起来,作为资料库便于以后 查询及回放; 另一方面还可以实时播放出来. 本系统的软件结构采用了客户机服务器结构,两端通过网络建立 TCP/IP 连接, 按 照自定义的数据通信协议交换数据,完成数据通信和系统控制 功能. 监控中心的客户端向服务器端申请建立连接, 服务器* 客户端向服务器 到连接请求之后, 和客户端建立 SOCKET 连接, 发送控制信号, 服务器端向客户端发送视频码流. 服务器端软件 软件设计的主要思想如下: 读取线程, 发送 运行 S3C44B0X 上, 线程和控制线程之间的同步, 防止有限资源的浪费.

为了充分利用 CPU 计算能力, 提高系统的整体性能, 在该 系统中采用多线程技术实现任务的调度.考虑到监控中心主机 要同时监控多个现场, 需要加入多个组播组的情况. 我们在设计 系统时要求监控中心端在接收视频数据前应向相应的监控现场 发送数据请求.为此, 我们要建立两个通讯通道: 一个是控制通 道, 一个为数据通道. 控制通道用来在发送端和接收端之间建立 会话, 包括发送一些数据请求和确认控制等信息. 接收端在接收 视频流数据前先向相应的发送端发送数据请求,发送端在接收 到数据请求后向接收端发回相应的 IP 组播地址和端口, 接收端 则加入该组接收视频流数据.为了保证这些控制信息准确无误 地到达对方,对于控制通道我们选择可靠性较高的 TCP 协议. 数据通道用于视频流数据的通信, 我们选用 VxWorks IP 组播组 来实现.这两个通讯通道互不相关, 各自执行自己的任务.

4.1 视频数据发送模块的设计

在视频传输中,服务器端要求码流读取和发送互不干扰, 在 避免读取和发送相互等待或者相互冲突的情况出现.同样, 客户端解码和接收也存在这个关系, 我们可以采用任务间的通 信功能来协调多个独立任务间的活动.VxWorks 提供了一套丰 信号量, 消息队列和管道 富的任务间通信机制, 包括共享内存, 任务间通信最直接, 最明显的方法是访问共享数据结构. 等等. 由于所有 VxWorks 任务共存单一的线性地址空间, 在多个任务 间共享数据结构是非常容易的, 任一程序中定义的各种类型的 全局变量, 都可以被所有任务直接访问.由于实时组播的视频 所以首先要从编码器中获得视频数 流来自于 MPEG-4 编码器, 本设计采 据, 这主要通过访问编码器所提供的 I/O 端口来完成. 用了一种基于环形缓冲区的多任务视频传输技术, 较好的解决 了码流读取和发送互不干扰的问题. 系统的环形缓冲区除了达 到数据分离互斥作用外, 还可以起到平滑码流的作用.读取任 务和发送任务是互斥的关系, 读取任务一次从编码模块中读入 使 4 K 的视频数据供发送任务处理.在读取时为了避免竞争, 用信号量对该环形缓冲区进行上锁,以保证访问的互斥进行. 发送任务的访问环形缓冲区的情况也类似. 通过利用环形缓冲 区和互斥锁完全可以解决这两个任务的同步问题.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top