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

时间:2022-03-16来源:佚名

1.背景及概述

近年来,随着嵌入式应用越来越复杂,应用场合越来越多,特别是多媒体功能在各个领域飞速发展,高性能计算变得无处不在,从消费电子,网络通讯到工业控制和监控,大多数应用都需要更高的数字信号处理能力。出于成本和设计难度的考虑,人们倾向于使用单颗芯片完成所有的工作,传统的DSP处理器和MCU处理器开始以多种形式进行融合:

1.传统的MCU DSP合作方案被集成到一颗芯片封装内;或者进一步实现为真正的异构多核,可以共享部分甚至全部外部设备。

2.以SoC的形式为MCU加上基于固定硬件IP模块的数据处理能力,如一些编解码器。针对一些固定标准的应用。

3.随着高端嵌入式处理器频率突破500MHz并正在挺进1GHz,MCU和DSP平台开始真正的融合,DSP处理器的外设接口数量和控制能力逐步提高,而MCU的带宽和计算能力特别是软件多媒体处理能力也越来越强,两者之间不再有质的区别。

以上三种融合的形式,实际上互相之间都有借鉴和交叉,从这里开始的未来发展,DSP和MCU之间,多核处理器的核与核之间,都不再有真正的界限。对于任何应用,对应的处理器都是灵活的软件计算能力、高效的硬件IP模块和相应外设的结合体,即所谓的“Convergent Platform”(会聚平台)。

这样的处理器平台,对于嵌入式软件开发者提出了更新更高的要求,高级语言编译器要能够最大程度的利用硬件细节来优化编译性能,减少手工优化的工作量,保持软件的通用性;DSP算法开发人员不仅仅要了解硬件平台,也要考虑到软件平台的架构对算法实现和优化的影响,例如分离硬件相关部分和无关部分以适应操作系统的结构;而软件平台开发人员也要考虑处理器的细节以便进行系统优化,例如为多核或DMA通道的并行处理抽象出系统接口。硬件设计者,算法设计者,系统软件设计者之间的界限也在消失,复合型的嵌入式系统开发者和团队才能最适应底层硬件平台的变化。

在这个DSP/MCU/硬件IP模块三者融合的大趋势中,ADI公司的Blackfin系列处理器就是一个代表产品。从最早的BF53x系列,到目前的增加了图像处理单元的BF54x系列和低功耗BF52x系列,以及双核的BF561,都是以同样的内核配置多样化的带宽和外设,针对不同的应用和市场。在这样的处理器上选择和设计软件,需要考虑的因素有很多:

1.如何保持对处理器DSP特性硬件细节的最大效率使用,以达到最优算法性能和并行性。

2.如何最大程度地保持软件通用性,避免过多的硬件相关代码和汇编代码。

3.如何降低软件平台开发成本,是否适合采用开源操作系统或模块。

4.系统是否需要实时性能,采用的软件平台是否提供这样的实时性保证。

这些因素有时候是互相矛盾的,需要考虑具体应用的特点和自身的资源,来做一个折衷的最优化设计。

ADI公司为Blackfin的软件平台做了很多的努力,提供多样化的软件生态环境。Blackfin支持uClinux,VDK,uC/OSII,Nucleus等等多种OS/RTOS,基于VDSP开发工具提供多种免费的音视频codec,硬件抽象函数库及驱动。在这个基于BF53x的智能监控系统中,我们希望最大程度地发挥芯片处理能力,达到最好的编码和智能算法能力,所以选择了一种RTOS - uC/OSII及其网络协议栈作为操作系统平台。在小型的RTOS中,一般不区分用户态和内核态,访问系统硬件资源的开销小,中断和任务切换时间有实时保证,对内存的使用和分配也比较自由,这些特点决定了在RTOS下更容易发挥Blackfin作为DSP处理器的性能,并能直接使用ADI提供的高性能H264编码库;但缺点是对比Linux这样开源资源比较丰富的操作系统,RTOS缺少某些现成的应用程序比如HTTP Server,需要更多的开发投入或第三方资源。

2.Blackfin IP Camera系统架构

整个IP Camera系统主要包括音视频采集,智能视频分析或智能音频分析,音/视频编码,流媒体打包传输,系统控制等模块(如图1所示)。

基本系统为Blackfin的视频接口PPI同数字视频流输入相连来接收视频信号,而串行的SPORT接口可以连接音频输入,音视频数据以专用DMA通道传送到SDRAM;如果需要智能监控,可以根据需要插入不同的分析模块;然后软件编码器负责对实时采集进来的音视频进行压缩,并打成TS(Transport Stream)流来传输。整个系统是数据流驱动的,下图中不同的输入,分析和编码模块可以根据需要来选择,每个模块的输入和输出的是符合标准的数据流,可以灵活地插入系统数据流的不同位置进行处理。一般的Blackfin单核芯片只能同时使用其中的一部分模块,但双核芯片如BF561或双片方案中,可以同时使用所有的模块。

图1 基于Blackfin 537处理器IP Camera系统框图

2.1 视频采集和编码

Blackfin 系列DSP专门针对高速并行数据特别是视频数据集成了并行外围接口(PPI),在传统的数据总线的基础上增加了一条专用数据吞吐通道。

PPI接口不仅可以按照BT.601视频流的“硬件同步”模式工作,还能自动解码BT.656前同步码,从而允许无缝连接到多种视频源和图像传感器,与直接存储器存取(DMA)控制器配合使用,PPI可以在完整的视频帧信息中只读入有效的视频信息,或只有消隐区域。这样当不需要完整的视频帧时显着节省了带宽。另外,PPI可以忽略隔行的BT.656视频流的所有第二场图像信息,从而提供了一种很有效的方法用于快速抽取输入信号。最后,因为PPI本身就可以解码BT.656视频流,所以它可以直接连接到流行的类似ADV7183A视频解码器。

IP Camera上主流的编码标准如H.264,MPEG4等,ADI公司都提供了免费的编码器软件。本项目采用H.264视频压缩标准,ADI的H.264编码器性能得到了最大的优化,充分利用了片内L1 内存,数据通过DMA来搬移,与处理器的运算并行执行。主要的特点有:支持YUV420和UYVY422 (CCIR-656) 视频输入格式,输出是以NAL为单位的基本视频流;对于H264编码,支持Baseline Profile和一些Main profile的特性(Interlaced encoding, CABAC),在BF53x上能达到最大实时1/2 D1,BF561上支持D1实时,支持I和P帧,自适应CBR码率控制等。对于不同的应用,ADI H.264编码器的比特率是可调整的,低比特率下甚至可以在CDMA1x这样的低带宽应用中实现实时传输。

2.2 智能监控

目前监控市场的发展越来越趋向于智能化,各种视频或音频的智能分析算法得到产业化应用,如运动目标检测和跟踪,入侵检测,特殊声音检测和定位等等。Blackfin处理器从架构到指令集都对多媒体处理有很好的支持,有专用的视频处理指令,因此特别适合于实现灵活的多媒体智能分析算法。ADI公司推出了“Image Tool Box”智能监控软件包,针对智能监控算法中的一些常用和基本函数做了专门的优化,有很好的性能,可以加速上层算法的实现和优化。

一般智能分析的实现是针对未编码的媒体流进行分析,但也有利用编码器输出结果的算法。本项目因为直接使用ADI公司给定的编码库,因此使用前置的智能模块直接分析输入的媒体流,并输出结果。音视频的智能处理种类比较多,并在不断地改进,所以用一般都用高性能DSP来实现。在Blackfin上目前有多种智能处理模块,如鱼眼矫正,运动物体检测及基于运动检测的上层算法如遗留物检测、入侵检测,枪声检测和定位等等。根据智能模块的输出结果,系统控制和编码部分都可以做相应的智能处理,如勾勒运动物体边框,调高编码器分辨率,根据音源位置调整摄像头方向,等等。这些模块一般都有比较标准的输入输出接口,便于二次开发中的系统集成。

2.3 媒体流传输

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

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

2.4 软件架构

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

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

下表(表1)列出了系统中各模块的来源:

表1 IP Camera系统模块来源

    相关阅读

    城市亮化工程如何设计才能具有层次感?

    城市亮化工程 的主要目地是为夜间带来一体化照明,考虑基础的视觉识别规定,自然环境照明的光层级与光线总数的多少相关,假如空间中的自然环境照明比工作照明低许多 ,在工作...
    2022-10-11
    城市亮化工程如何设计才能具有层次感?

    城市道路照明工程主要有哪些?

    在城市建设中,道路照明 是必不可少的基础设施,也是城市夜景的重要组成部分。在某种程度上,它还反映了城市的经济实力,社会进步和现代化的标志。它为夜间在城市中的车辆和行...
    2022-07-12
    城市道路照明工程主要有哪些?

    安全出口指示标志灯为什么是绿色而不是红色?

    对于安全出口指示标志灯相信大家都不陌生,我们在日常生活中在任何公众场所的紧急疏散的安全出口都可以看到这个安全出口指示标志灯,大家有没有想过安全出口的指示标志为什么...
    2022-05-21
    安全出口指示标志灯为什么是绿色而不是红色?

    路灯照明合理的布置方式

    路灯的布置方式主要有单侧布置、双侧交错布置、双侧对称布置、中心对称布置、横向悬索布置五种形式,随着城市道路的不断拓宽,平交路口转弯半径越来越大,根据《城市道路亮化...
    2022-07-15

    泛光照明工程是什么?应用范围有哪些?

    很多人提及 泛光照明工程 会有一些生疏,不理解泛光照明包含哪些,也不知道 泛光照明工程 跟普通照明工程有哪些不一样。 实际上泛光照明工程便是归属于城市景观照明工程或环境...
    2022-10-17
    泛光照明工程是什么?应用范围有哪些?

    消防应急灯的寿命有多长?一般可以使用多长时间?

    对于消防应急灯的使用寿命相信很多人都想了解这个问题,因为消防应急灯安装了就不需要时时刻刻盯着,这需要定时检查就可以了,但是很多人都不知道消防应急灯的寿命有多长,不...
    2022-05-21
    消防应急灯的寿命有多长?一般可以使用多长时间?

    快投派智能无线投屏器,让无线互联更加简单便捷

    没有WiFi的情况下可以进行无线投屏吗? 长期使用投屏功能的人,或多或少都知道自己的手机可以通过【无线投屏】【屏幕镜像】功能,直接连接到智能电视或无线投屏器,下意识地认...
    2022-05-11
    快投派智能无线投屏器,让无线互联更加简单便捷

    广场照明的设计技巧

    广场照明设计 主要包括休闲广场、集会活动广场、商业广场的照明设计。 1)休闲广场。主要是为人们提供休息、社交和举行小型文化娱乐活动的地方,由于人们活动方式不同,有些区...
    2022-07-15

    网站栏目