基于Blackfin的智能IP Camera系統(tǒng)設(shè)計(jì)和優(yōu)化
本文基于一套智能IP Camera監(jiān)控系統(tǒng)的具體實(shí)現(xiàn),討論了在新型高性能處理器對(duì)軟件系統(tǒng)實(shí)現(xiàn)的挑戰(zhàn)和思路,軟件系統(tǒng)如何利用現(xiàn)有模塊做整合設(shè)計(jì),保證靈活性和通用性,并討論了一系列系統(tǒng)優(yōu)化手段,以達(dá)到系統(tǒng)性能的最優(yōu)化。
本文引用地址:http://m.butianyuan.cn/article/87576.htm項(xiàng)目背景及概述
近年來(lái),隨著嵌入式應(yīng)用越來(lái)越復(fù)雜,應(yīng)用場(chǎng)合越來(lái)越多,特別是多媒體功能在各個(gè)領(lǐng)域的飛速發(fā)展,高性能計(jì)算變得無(wú)處不在,從消費(fèi)電子,網(wǎng)絡(luò)通訊到工業(yè)控制和監(jiān)控,大多數(shù)應(yīng)用都需要更高的數(shù)字信號(hào)處理能力。出于成本和設(shè)計(jì)難度的考慮,人們傾向于使用單顆芯片完成所有的工作,傳統(tǒng)的DSP處理器和MCU處理器開(kāi)始以多種形式進(jìn)行融合。
1. 傳統(tǒng)的MCU+DSP合作方案被集成到一顆芯片封裝內(nèi);或者進(jìn)一步實(shí)現(xiàn)為真正的異構(gòu)多核,可以共享部分甚至全部外部設(shè)備。
2. 以SoC的形式為MCU加上基于固定硬件IP模塊的數(shù)據(jù)處理能力,如一些編解碼器,針對(duì)一些固定標(biāo)準(zhǔn)的應(yīng)用。
3. 隨著高端嵌入式處理器頻率突破500MHz并正在挺進(jìn)1GHz,MCU和DSP平臺(tái)開(kāi)始真正的融合, DSP處理器的外設(shè)接口數(shù)量和控制能力逐步提高,而MCU的帶寬和計(jì)算能力特別是軟件多媒體處理能力也越來(lái)越強(qiáng),兩者之間不再有本質(zhì)的區(qū)別。
以上三種融合的形式,實(shí)際上互相之間都有借鑒和交叉,從這里開(kāi)始的未來(lái)發(fā)展,DSP和MCU之間,多核處理器的核與核之間,都不再有真正的界限。對(duì)于任何應(yīng)用,對(duì)應(yīng)的處理器都是靈活的軟件計(jì)算能力、高效的硬件IP模塊和相應(yīng)外設(shè)的結(jié)合體,即所謂的“Convergent Platform”(匯聚平臺(tái))。
這樣的處理器平臺(tái),對(duì)于嵌入式軟件開(kāi)發(fā)者提出了更新更高的要求,高級(jí)語(yǔ)言編譯器要能夠最大程度地利用硬件細(xì)節(jié)來(lái)優(yōu)化編譯性能,減少手工優(yōu)化的工作量,保持軟件的通用性;DSP算法開(kāi)發(fā)人員不僅僅要了解硬件平臺(tái),也要考慮到軟件平臺(tái)的架構(gòu)對(duì)算法實(shí)現(xiàn)和優(yōu)化的影響,例如分離硬件相關(guān)部分和無(wú)關(guān)部分以適應(yīng)操作系統(tǒng)的結(jié)構(gòu);而軟件平臺(tái)開(kāi)發(fā)人員也要考慮處理器的細(xì)節(jié)以便進(jìn)行系統(tǒng)優(yōu)化,例如為多核或DMA通道的并行處理抽象出系統(tǒng)接口。硬件設(shè)計(jì)者、算法設(shè)計(jì)者、系統(tǒng)軟件設(shè)計(jì)者之間的界限也在消失,復(fù)合型的嵌入式系統(tǒng)開(kāi)發(fā)者和團(tuán)隊(duì)才能最適應(yīng)底層硬件平臺(tái)的變化。
在這個(gè)DSP/MCU/硬件IP模塊三者融合的大趨勢(shì)中,ADI公司的Blackfin系列處理器就是一個(gè)代表產(chǎn)品。從最早的BF53x系列,到目前的增加了圖像處理單元的BF54x系列和低功耗BF52x系列,以及雙核的BF561,都是以同樣的內(nèi)核配置多樣化的帶寬和外設(shè),針對(duì)不同的應(yīng)用和市場(chǎng)。在這樣的處理器上選擇和設(shè)計(jì)軟件,需要考慮的因素有很多。
1. 如何保持對(duì)處理器DSP特性硬件細(xì)節(jié)的最大效率使用,以達(dá)到最優(yōu)算法性能和并行性。
2. 如何最大程度地保持軟件通用性,避免過(guò)多的硬件相關(guān)代碼和匯編代碼。
3. 如何降低軟件平臺(tái)開(kāi)發(fā)成本,是否適合采用開(kāi)源操作系統(tǒng)或模塊。
4. 系統(tǒng)是否需要實(shí)時(shí)性能,采用的軟件平臺(tái)是否提供這樣的實(shí)時(shí)性保證。
這些因素有時(shí)候是互相矛盾的,需要考慮具體應(yīng)用的特點(diǎn)和自身的資源做一個(gè)折衷的最優(yōu)化設(shè)計(jì)。
ADI公司為Blackfin的軟件平臺(tái)做了很多的努力,提供多樣化的軟件生態(tài)環(huán)境。Blackfin支持mClinux,VDK,mC/OSII,Nucleus等多種OS/RTOS,基于VDSP開(kāi)發(fā)工具提供多種免費(fèi)的音視頻codec,硬件抽象函數(shù)庫(kù)及驅(qū)動(dòng)。在這個(gè)基于BF53x的智能監(jiān)控系統(tǒng)中,我們希望最大程度地發(fā)揮芯片處理能力,達(dá)到最好的編碼和智能算法能力,所以選擇了一種RTOS mC/OSII及其網(wǎng)絡(luò)協(xié)議棧作為操作系統(tǒng)平臺(tái)。在小型的RTOS中,一般不區(qū)分用戶態(tài)和內(nèi)核態(tài),訪問(wèn)系統(tǒng)硬件資源的開(kāi)銷(xiāo)小,中斷和任務(wù)切換時(shí)間有實(shí)時(shí)保證,對(duì)內(nèi)存的使用和分配也比較自由,這些特點(diǎn)決定了在RTOS下更容易發(fā)揮Blackfin作為DSP處理器的性能,并能直接使用ADI提供的高性能H.264編碼庫(kù);但缺點(diǎn)是對(duì)比Linux這樣開(kāi)源資源比較豐富的操作系統(tǒng),RTOS缺少某些現(xiàn)成的應(yīng)用程序比如HTTP Server,需要更多的開(kāi)發(fā)投入或第三方資源。
Blackfin IP Camera 系統(tǒng)架構(gòu)
整個(gè)IP Camera系統(tǒng)主要包括音視頻采集,智能視頻分析或智能音頻分析,音/視頻編碼,流媒體打包傳輸,系統(tǒng)控制等模塊(如圖1所示)。
基本系統(tǒng)為Blackfin的視頻接口PPI同數(shù)字視頻流輸入相連,用來(lái)接收視頻信號(hào),而串行的SPORT接口可以連接音頻輸入,音視頻數(shù)據(jù)以專(zhuān)用DMA通道傳送到SDRAM;如果需要智能監(jiān)控,可以根據(jù)需要插入不同的分析模塊;然后軟件編碼器負(fù)責(zé)對(duì)實(shí)時(shí)采集進(jìn)來(lái)的音視頻進(jìn)行壓縮,并打成TS(Transport Stream)流進(jìn)行傳輸。整個(gè)系統(tǒng)是數(shù)據(jù)流驅(qū)動(dòng)的,圖1中不同的輸入,分析和編碼模塊可以根據(jù)需要來(lái)選擇,每個(gè)模塊的輸入和輸出的是符合標(biāo)準(zhǔn)的數(shù)據(jù)流,可以靈活地插入系統(tǒng)數(shù)據(jù)流的不同位置進(jìn)行處理。一般的Blackfin單核芯片只能同時(shí)使用其中的一部分模塊,但雙核芯片如BF561或雙片方案中,可以同時(shí)使用所有的模塊。
視頻采集和編碼
Blackfin 系列DSP專(zhuān)門(mén)針對(duì)高速并行數(shù)據(jù)特別是視頻數(shù)據(jù)集成了并行外圍接口(PPI),在傳統(tǒng)的數(shù)據(jù)總線的基礎(chǔ)上增加了一條專(zhuān)用數(shù)據(jù)吞吐通道。
PPI接口不僅可以按照BT.601視頻流的“硬件同步”模式工作,還能自動(dòng)解碼BT.656前同步碼,從而允許無(wú)縫連接到多種視頻源和圖像傳感器,與直接存儲(chǔ)器存?。―MA)控制器配合使用,PPI可以在完整的視頻幀信息中只讀入有效的視頻信息,或只有消隱區(qū)域。這樣當(dāng)不需要完整的視頻幀時(shí)顯著節(jié)省了帶寬。另外,PPI可以忽略隔行的BT.656視頻流的所有第二場(chǎng)圖像信息,從而提供了一種很有效的方法用于快速抽取輸入信號(hào)。最后,因?yàn)镻PI本身就可以解BT.656視頻流,所以它可以直接連接到流行的類(lèi)似ADV7183A視頻解碼器。
IP Camera適應(yīng)主流的編碼標(biāo)準(zhǔn)如H.264,MPEG-4等,ADI公司都提供免費(fèi)的編碼器軟件。本項(xiàng)目采用H.264視頻壓縮標(biāo)準(zhǔn),ADI的H.264編碼器性能得到了最大的優(yōu)化,充分利用了片內(nèi)L1 內(nèi)存,數(shù)據(jù)通過(guò)DMA搬移,與處理器的運(yùn)算并行執(zhí)行。主要的特點(diǎn)有:支持YUV420和UYVY422 (CCIR-656) 視頻輸入格式,輸出是以NAL為單位的基本視頻流;對(duì)于H.264編碼,支持Baseline Profile和一些Main profile的特性(Interlaced encoding, CABAC),BF53x能達(dá)到最大實(shí)時(shí)1/2 D1,BF561支持D1實(shí)時(shí),支持I和P幀,自適應(yīng)CBR碼率控制等。對(duì)于不同的應(yīng)用,ADI H.264編碼器的比特率是可調(diào)整的,低比特率下甚至可以在CDMA1x這樣的低帶寬應(yīng)用中實(shí)現(xiàn)實(shí)時(shí)傳輸。
智能監(jiān)控
目前監(jiān)控市場(chǎng)的發(fā)展越來(lái)越趨向于智能化,各種視頻或音頻的智能分析算法得到產(chǎn)業(yè)化應(yīng)用,如運(yùn)動(dòng)目標(biāo)檢測(cè)和跟蹤,入侵檢測(cè),特殊聲音檢測(cè)和定位等等。Blackfin處理器從架構(gòu)到指令集都對(duì)多媒體處理有很好的支持,有專(zhuān)用的視頻處理指令,因此特別適合于實(shí)現(xiàn)靈活的多媒體智能分析算法。ADI公司推出了“Image Tool Box”智能監(jiān)控軟件包,針對(duì)智能監(jiān)控算法中的一些常用和基本函數(shù)做了專(zhuān)門(mén)的優(yōu)化,有很好的性能,可以加速上層算法的實(shí)現(xiàn)和優(yōu)化。
一般智能分析的實(shí)現(xiàn)是針對(duì)未編碼的媒體流進(jìn)行分析,但也有利用編碼器輸出結(jié)果的算法。本項(xiàng)目因?yàn)橹苯邮褂肁DI公司給定的編碼庫(kù),因此使用前置的智能模塊直接分析輸入的媒體流,并輸出結(jié)果。音視頻的智能處理種類(lèi)比較多,并在不斷地改進(jìn),所以一般都用高性能的DSP來(lái)實(shí)現(xiàn)。在Blackfin上目前有多種智能處理模塊,如魚(yú)眼矯正、運(yùn)動(dòng)物體檢測(cè)及基于運(yùn)動(dòng)檢測(cè)的上層算法如遺留物檢測(cè)、入侵檢測(cè)、槍聲檢測(cè)和定位等等。根據(jù)智能模塊的輸出結(jié)果,系統(tǒng)控制和編碼部分都可以做相應(yīng)的智能處理,如勾勒運(yùn)動(dòng)物體邊框,調(diào)高編碼器分辨率,根據(jù)音源位置調(diào)整攝像頭方向,等等。這些模塊一般都有比較標(biāo)準(zhǔn)的輸入輸出接口,便于二次開(kāi)發(fā)中的系統(tǒng)集成。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論