新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Blackfin的智能IP Camera系统设计和优化

基于Blackfin的智能IP Camera系统设计和优化

作者:杨晔,ADI DSP | 嵌入式处理器高级技术应用工程师;张铁虎,ADI视频监控技术市场经理时间:2008-09-01来源:EDN China收藏

  媒体流传输

本文引用地址:http://www.eepw.com.cn/article/87576.htm

  IP Camera的主要用途就是通过网络实时传输远程的视频信息,本项目采用传输流(TS)通过UDP或上层的RTP协议来传输。传送流是根据ITU-T Rec.H.222.0 | ISO/IEC 13818-2和ISO/IEC 13818-3协议而定义的一种数据流,其目的是为了在有可能发生严重错误的环境下进行一道或多道程序的编码数据的传输和存储。TS主要应用于实时传送的节目,比如实时广播的电视节目,主要特点就是要求从视频流的任一片段开始都是可以独立解码的。所以在接收端可以随时接入。目前视频监控领域还没有统一的媒体流标准,但采用TS over RTP/UDP这一标准有利于将来的系统整合。的一些第三方提供了完整的RTP协议栈产品,网络上也有一些开源的实例可供参考。

  数据链路方面,对于压缩视频传输,一般的网络接口芯片都能满足带宽要求,但是在评估网络性能的时候,占用比也是一个非常重要的标准。BF53x系列中的BF537芯片有内置的10/100M MAC接口,并有专用的DMA 数据通道,因此传输和占用比性能都非常好,在基于BF537的IP Camera上每1Mbps的网络流量只消耗约1%的性能,例如传输 H.264 D1分辨率的监控码流,消耗处理器不到10MIPS。  

  软件架构

  mC/OSII是Blackfin所支持的RTOS之一,在高速的Blackfin处理器上有很强的硬实时性能,OS中断响应时间约为110 cycles(600MHz下约0.18ms)。系统首先创建一个主任务(main task),负责系统的初始化和创建其他的模块任务。各模块任务独立运行,处理自己的输入和输出数据流,模块之间的耦合程度较低,可以灵活的取舍。网络协议栈方面,Blackfin上也有多种选择,除了各商业RTOS配套提供的TCP/IP协议栈外,LWIP作为开源网络协议栈中的佼佼者,也在Blackfin处理器上有移植版本。本项目采用了mC/OSII配套的mC/IP协议栈。

  软件架构分为音视频采集,智能分析,编码打包和网络传输,系统控制等模块,每个模块负责不同优先级的任务,这非常有利于系统的集成和模块化设计。模块之间相互独立,用信号量进行同步,模块之间的数据结构都设计成双缓冲或者多缓冲,保证I/O模块和运算模块并行执行。对于高系统负荷下的容错,程序和数据结构也考虑在内,偶然出现的丢帧现象不会影响系统的继续运行,并且向系统控制部分报告错误。

  表1列出了系统中各模块的来源。

   系统优化

  在系统中,一旦算法确定下来,实现过程中的优化思路一般也是固定的,首先利用编译器的一些优化开关和手段,其次对算法做分析,找出关键代码和数据,对关键部分做一些手工的调整,如改写成汇编等。但在实现一个包括多路输入输出,多种算法并行的完整的系统时,如何达到整体运行的最优化,除了传统的算法优化外,还需要从系统的角度考虑一些因素。


  系统带宽的最大化和最优化

  在这样的一个复杂系统中,视频和音频数据的多路输入输出带来了冲突和延迟,对片外内存的使用效率有很大影响。Blackfin的SDRAM控制器支持多Bank的数据并行传输,因此我们要尽量把不同通道的I/O数据放在内存的不同Bank上。因此在音视频和网络数据结构的设计上,不光要保证高效的同步,还要利用Blackfin开发工具提供的特性把数据分散在不同的Bank上。


  片内L1内存的高效分配

  传统上,处理器内部的L1高速内存可以直接访问,存放关键代码和数据,提高算法运行效率。而MCU的L1一般全部用来做Cache,软件不能直接控制。在Blackfin等高性能处理器上,L1可以灵活地配置成Cache或者直接访问。在一个完整的系统中,我们要兼顾到各个模块和操作系统本身,L1内存一部分用作Cache,以保证整体cache命中率;另一部分作为SRAM用于算法的关键模块。这里需要做一些反复的调整和测试,来找出一个最优化的L1配置方案,最终目的是达到L1 内存使用效率(命中率)最大。


  最大效率地使用DMA通道

  越来越多的处理器为I/O接口提供专用的DMA通道,以减轻处理器做数据输入输出的负担。Blackfin上除了音视频接口的DMA外,还有专用的内存DMA通道。但是要最优化地使用DMA,最重要的是使用乒乓缓冲,使处理器和DMA通道流水化工作。在数据输入,算法内部的内存DMA,数据输出等每个环节上都要使用DMA和乒乓缓冲,才能保证系统效率最高。这需要每个驱动和软件模块都支持这样的数据结构和运行模型。

  综合起来,新型处理器上往往集成了多种提高性能的机制,软件系统优化的思路,就是保证系统总带宽(如多总线,多DMA通道)和总运算单元(如多核,多乘法器)的并行化、流水化,这需要开发人员从系统和应用不同的层面来保证。


  性能分析

  系统使用的RTOS带来的额外开销主要就是定时为10ms的Timer Tick,可以忽略不计。而由于BF537高超的网络性能,网络传输所占用的处理器时间也非常小。主要的处理器时间消耗在音视频的智能分析和编码上。

  本项目可以运行在单核或双核Blackfin平台上,接收端用开源项目Video Lan Client(VLC)来接收并播放。对于单周期指令集的600MHz Blackfin内核,我们一般用600MIPS表示单核的总处理器能力,表2列出的部分系统模块消耗处理器能力也用MIPS表示。

  从上面的性能列表可以看出,对于系统中可以使用的每一个模块,都可以有一个不同参数下的性能分析,在此基础上,使用不同性能的处理器,不同的模块,不同的编码格式,甚至不同的帧率。我们可以针对各种应用组合出不同的系统,实现产品的差异化。比如我们可以完全运行智能处理算法,只在必要的时候启动编码模块发送关键部分的媒体流;也可以平时以低码率、低帧率运行编码模块,由智能模块动态控制提高关键帧的码率和帧率。这样的智能监控系统,会更加实用化,最大程度地减轻人工负担。

  小结

  未来处理器的发展,以高计算性能、硬件IP协处理、多核、面向应用等特点,软件平台和软件开发人员需要适应这样的变化和特点,正向着智能化方向快速发展的监控领域,正需要这样的软硬件平台提供支持。Blackfin处理器家族作为新一代处理能力和控制能力融合处理器的代表,需要设计更新更完善的软件平台与其相配合,才能充分发挥其性能和灵活性,既能最快满足市场的需要,又能保证各厂商之间的区别和创新。同时公司及其合作伙伴提供多样化的工具和支持,保证客户能够快速、低成本地开发出市场需要的各种产品。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

关键词: 嵌入式 处理器 DSP ADI

评论


相关推荐

技术专区

关闭