基于Blackfin的智能IP Camera系統(tǒng)設(shè)計(jì)和優(yōu)化
媒體流傳輸
本文引用地址:http://m.butianyuan.cn/article/87576.htmIP Camera的主要用途就是通過(guò)網(wǎng)絡(luò)實(shí)時(shí)傳輸遠(yuǎn)程的視頻信息,本項(xiàng)目采用傳輸流(TS)通過(guò)UDP或上層的RTP協(xié)議來(lái)傳輸。傳送流是根據(jù)ITU-T Rec.H.222.0 | ISO/IEC 13818-2和ISO/IEC 13818-3協(xié)議而定義的一種數(shù)據(jù)流,其目的是為了在有可能發(fā)生嚴(yán)重錯(cuò)誤的環(huán)境下進(jìn)行一道或多道程序的編碼數(shù)據(jù)的傳輸和存儲(chǔ)。TS主要應(yīng)用于實(shí)時(shí)傳送的節(jié)目,比如實(shí)時(shí)廣播的電視節(jié)目,主要特點(diǎn)就是要求從視頻流的任一片段開(kāi)始都是可以獨(dú)立解碼的。所以在接收端可以隨時(shí)接入。目前視頻監(jiān)控領(lǐng)域還沒(méi)有統(tǒng)一的媒體流標(biāo)準(zhǔn),但采用TS over RTP/UDP這一標(biāo)準(zhǔn)有利于將來(lái)的系統(tǒng)整合。ADI的一些第三方提供了完整的RTP協(xié)議棧產(chǎn)品,網(wǎng)絡(luò)上也有一些開(kāi)源的實(shí)例可供參考。
數(shù)據(jù)鏈路方面,對(duì)于壓縮視頻傳輸,一般的網(wǎng)絡(luò)接口芯片都能滿足帶寬要求,但是在評(píng)估網(wǎng)絡(luò)性能的時(shí)候,處理器占用比也是一個(gè)非常重要的標(biāo)準(zhǔn)。BF53x系列中的BF537芯片有內(nèi)置的10/100M MAC接口,并有專(zhuān)用的DMA 數(shù)據(jù)通道,因此傳輸和處理器占用比性能都非常好,在基于BF537的IP Camera上每1Mbps的網(wǎng)絡(luò)流量只消耗約1%的處理器性能,例如傳輸 H.264 D1分辨率的監(jiān)控碼流,消耗處理器不到10MIPS。
軟件架構(gòu)
mC/OSII是Blackfin所支持的RTOS之一,在高速的Blackfin處理器上有很強(qiáng)的硬實(shí)時(shí)性能,OS中斷響應(yīng)時(shí)間約為110 cycles(600MHz下約0.18ms)。系統(tǒng)首先創(chuàng)建一個(gè)主任務(wù)(main task),負(fù)責(zé)系統(tǒng)的初始化和創(chuàng)建其他的模塊任務(wù)。各模塊任務(wù)獨(dú)立運(yùn)行,處理自己的輸入和輸出數(shù)據(jù)流,模塊之間的耦合程度較低,可以靈活的取舍。網(wǎng)絡(luò)協(xié)議棧方面,Blackfin上也有多種選擇,除了各商業(yè)RTOS配套提供的TCP/IP協(xié)議棧外,LWIP作為開(kāi)源網(wǎng)絡(luò)協(xié)議棧中的佼佼者,也在Blackfin處理器上有移植版本。本項(xiàng)目采用了mC/OSII配套的mC/IP協(xié)議棧。
軟件架構(gòu)分為音視頻采集,智能分析,編碼打包和網(wǎng)絡(luò)傳輸,系統(tǒng)控制等模塊,每個(gè)模塊負(fù)責(zé)不同優(yōu)先級(jí)的任務(wù),這非常有利于系統(tǒng)的集成和模塊化設(shè)計(jì)。模塊之間相互獨(dú)立,用信號(hào)量進(jìn)行同步,模塊之間的數(shù)據(jù)結(jié)構(gòu)都設(shè)計(jì)成雙緩沖或者多緩沖,保證I/O模塊和運(yùn)算模塊并行執(zhí)行。對(duì)于高系統(tǒng)負(fù)荷下的容錯(cuò),程序和數(shù)據(jù)結(jié)構(gòu)也考慮在內(nèi),偶然出現(xiàn)的丟幀現(xiàn)象不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)行,并且向系統(tǒng)控制部分報(bào)告錯(cuò)誤。
表1列出了系統(tǒng)中各模塊的來(lái)源。
系統(tǒng)優(yōu)化
在DSP系統(tǒng)中,一旦算法確定下來(lái),實(shí)現(xiàn)過(guò)程中的優(yōu)化思路一般也是固定的,首先利用編譯器的一些優(yōu)化開(kāi)關(guān)和手段,其次對(duì)算法做分析,找出關(guān)鍵代碼和數(shù)據(jù),對(duì)關(guān)鍵部分做一些手工的調(diào)整,如改寫(xiě)成匯編等。但在實(shí)現(xiàn)一個(gè)包括多路輸入輸出,多種算法并行的完整的系統(tǒng)時(shí),如何達(dá)到整體運(yùn)行的最優(yōu)化,除了傳統(tǒng)的算法優(yōu)化外,還需要從系統(tǒng)的角度考慮一些因素。
系統(tǒng)帶寬的最大化和最優(yōu)化
在這樣的一個(gè)復(fù)雜系統(tǒng)中,視頻和音頻數(shù)據(jù)的多路輸入輸出帶來(lái)了沖突和延遲,對(duì)片外內(nèi)存的使用效率有很大影響。Blackfin的SDRAM控制器支持多Bank的數(shù)據(jù)并行傳輸,因此我們要盡量把不同通道的I/O數(shù)據(jù)放在內(nèi)存的不同Bank上。因此在音視頻和網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)上,不光要保證高效的同步,還要利用Blackfin開(kāi)發(fā)工具提供的特性把數(shù)據(jù)分散在不同的Bank上。
片內(nèi)L1內(nèi)存的高效分配
傳統(tǒng)上,DSP處理器內(nèi)部的L1高速內(nèi)存可以直接訪問(wèn),存放關(guān)鍵代碼和數(shù)據(jù),提高算法運(yùn)行效率。而MCU的L1一般全部用來(lái)做Cache,軟件不能直接控制。在Blackfin等高性能處理器上,L1可以靈活地配置成Cache或者直接訪問(wèn)。在一個(gè)完整的系統(tǒng)中,我們要兼顧到各個(gè)模塊和操作系統(tǒng)本身,L1內(nèi)存一部分用作Cache,以保證整體cache命中率;另一部分作為SRAM用于算法的關(guān)鍵模塊。這里需要做一些反復(fù)的調(diào)整和測(cè)試,來(lái)找出一個(gè)最優(yōu)化的L1配置方案,最終目的是達(dá)到L1 內(nèi)存使用效率(命中率)最大。
最大效率地使用DMA通道
越來(lái)越多的處理器為I/O接口提供專(zhuān)用的DMA通道,以減輕處理器做數(shù)據(jù)輸入輸出的負(fù)擔(dān)。Blackfin上除了音視頻接口的DMA外,還有專(zhuān)用的內(nèi)存DMA通道。但是要最優(yōu)化地使用DMA,最重要的是使用乒乓緩沖,使處理器和DMA通道流水化工作。在數(shù)據(jù)輸入,算法內(nèi)部的內(nèi)存DMA,數(shù)據(jù)輸出等每個(gè)環(huán)節(jié)上都要使用DMA和乒乓緩沖,才能保證系統(tǒng)效率最高。這需要每個(gè)驅(qū)動(dòng)和軟件模塊都支持這樣的數(shù)據(jù)結(jié)構(gòu)和運(yùn)行模型。
綜合起來(lái),新型處理器上往往集成了多種提高性能的機(jī)制,軟件系統(tǒng)優(yōu)化的思路,就是保證系統(tǒng)總帶寬(如多總線,多DMA通道)和總運(yùn)算單元(如多核,多乘法器)的并行化、流水化,這需要開(kāi)發(fā)人員從系統(tǒng)和應(yīng)用不同的層面來(lái)保證。
性能分析
系統(tǒng)使用的RTOS帶來(lái)的額外開(kāi)銷(xiāo)主要就是定時(shí)為10ms的Timer Tick,可以忽略不計(jì)。而由于BF537高超的網(wǎng)絡(luò)性能,網(wǎng)絡(luò)傳輸所占用的處理器時(shí)間也非常小。主要的處理器時(shí)間消耗在音視頻的智能分析和編碼上。
本項(xiàng)目可以運(yùn)行在單核或雙核Blackfin平臺(tái)上,接收端用開(kāi)源項(xiàng)目Video Lan Client(VLC)來(lái)接收并播放。對(duì)于單周期指令集的600MHz Blackfin內(nèi)核,我們一般用600MIPS表示單核的總處理器能力,表2列出的部分系統(tǒng)模塊消耗處理器能力也用MIPS表示。
從上面的性能列表可以看出,對(duì)于系統(tǒng)中可以使用的每一個(gè)模塊,都可以有一個(gè)不同參數(shù)下的性能分析,在此基礎(chǔ)上,使用不同性能的處理器,不同的模塊,不同的編碼格式,甚至不同的幀率。我們可以針對(duì)各種應(yīng)用組合出不同的系統(tǒng),實(shí)現(xiàn)產(chǎn)品的差異化。比如我們可以完全運(yùn)行智能處理算法,只在必要的時(shí)候啟動(dòng)編碼模塊發(fā)送關(guān)鍵部分的媒體流;也可以平時(shí)以低碼率、低幀率運(yùn)行編碼模塊,由智能模塊動(dòng)態(tài)控制提高關(guān)鍵幀的碼率和幀率。這樣的智能監(jiān)控系統(tǒng),會(huì)更加實(shí)用化,最大程度地減輕人工負(fù)擔(dān)。
小結(jié)
未來(lái)嵌入式處理器的發(fā)展,以高計(jì)算性能、硬件IP協(xié)處理、多核、面向應(yīng)用等特點(diǎn),軟件平臺(tái)和軟件開(kāi)發(fā)人員需要適應(yīng)這樣的變化和特點(diǎn),正向著智能化方向快速發(fā)展的監(jiān)控領(lǐng)域,正需要這樣的軟硬件平臺(tái)提供支持。Blackfin處理器家族作為新一代處理能力和控制能力融合處理器的代表,需要設(shè)計(jì)更新更完善的軟件平臺(tái)與其相配合,才能充分發(fā)揮其性能和靈活性,既能最快滿足市場(chǎng)的需要,又能保證各廠商之間的區(qū)別和創(chuàng)新。同時(shí)ADI公司及其合作伙伴提供多樣化的工具和支持,保證客戶能夠快速、低成本地開(kāi)發(fā)出市場(chǎng)需要的各種嵌入式產(chǎn)品。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論