當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]QNX 下嵌入式視頻監(jiān)控系統(tǒng)研究

摘要:根據(jù)視頻監(jiān)控的特點(diǎn),設(shè)計(jì)了一種強(qiáng)實(shí)時(shí)的嵌入式視頻監(jiān)控系統(tǒng)。系統(tǒng)基于QNX(Quick UNIX)嵌入式實(shí)時(shí)操作系統(tǒng),采用異構(gòu)雙核處理器芯片OMAP3530為核心的開發(fā)平臺,實(shí)現(xiàn)了視頻的編解碼和傳輸過程。
關(guān)鍵詞:QNX;視頻監(jiān)控系統(tǒng);視頻編解碼;OMAP3530

引言
    嵌入式視頻監(jiān)控系統(tǒng)是當(dāng)今嵌入式系統(tǒng)發(fā)展的熱門應(yīng)用,尤其是數(shù)字化視頻監(jiān)控系統(tǒng)越來越受到客戶的青睞。目前,嵌入式視頻監(jiān)控系統(tǒng)大多基于Linux操作系統(tǒng)完成,這對于系統(tǒng)CPU是一個不小的開銷;同時(shí),系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性無法得到很好的保障。本文提出一種基于QNX系統(tǒng)的視頻監(jiān)控系統(tǒng)。QNX(Quick UNIX)是一種實(shí)時(shí)的微內(nèi)核操作系統(tǒng),有利于減小系統(tǒng)CPU開銷,并提升系統(tǒng)的穩(wěn)定和實(shí)時(shí)性能;用OMAP 3530處理器中的DSP核來完成視頻的編解碼,有利于提升視頻畫面質(zhì)量,提高視頻傳輸速率。

1 系統(tǒng)整體設(shè)計(jì)
   
視頻監(jiān)控系統(tǒng)方案是基于開放式多媒體應(yīng)用平臺OMAP設(shè)計(jì)的。OMAP3530芯片集成了高性能、低功耗的DSP核與控制性能較好的ARM內(nèi)核,是一種開放式的、可編程的體系結(jié)構(gòu)。系統(tǒng)ARM端負(fù)責(zé)初始化整個芯片,包括ARM、DSP、TC(Traffic Controller,流量控制器)等的時(shí)鐘設(shè)置,DSP的開啟和復(fù)位,以及LCD、定時(shí)器等各個外設(shè)的初始化。DSP端負(fù)責(zé)視頻的編解碼。監(jiān)控系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。監(jiān)控系統(tǒng)主要由OMAP3530芯片、USB攝像頭、液晶顯示器、存儲模塊(SDRAM、ROM、Flash)、JTAG構(gòu)成。USB攝像頭獲取視頻信息后,經(jīng)OMAP3530部進(jìn)行視頻編解碼處理后,存儲在存儲介質(zhì)上,或在液晶顯示器上進(jìn)行顯示。


1.1 OMAP3530平臺介紹
   
OMAP3530主要由ARM內(nèi)核、DSP內(nèi)核及流量控制器TC組成。
    OMAP3530采用ARM Cortex—A8核,工作主頻最高可達(dá)720 MHz。它具有存儲器管理單元、16 KB的高速指令緩沖存儲器、16 KB的數(shù)據(jù)高速緩沖存儲器和256KB的二級Cache;片內(nèi)有64 KB的內(nèi)部SRAM,為液晶顯示等應(yīng)用提供了大量的數(shù)據(jù)和代碼存儲空間。ARM內(nèi)核擁有整個系統(tǒng)的控制權(quán),可以設(shè)置DSP、TC以及各種外設(shè)的時(shí)鐘及其他工作參數(shù),控制DSP的運(yùn)行停止。本設(shè)計(jì)通過ARM完成對整個視頻監(jiān)控系統(tǒng)的控制和調(diào)度。
    DSP內(nèi)核TMS320C64X+采用3項(xiàng)關(guān)鍵的革新技術(shù):增大的空閑省電區(qū)域、變長指令和擴(kuò)大的并行機(jī)制。另外,TMS320C64X+內(nèi)核增加了固化了算法的硬件加速器,來處理運(yùn)動估計(jì)、8×8的DCT/IDCT和1/2像素插值,降低了視頻處理的功耗。
    流量控制器TC用于控制ARM、DSP以及本地總線對OMAP3530內(nèi)所有存儲器的訪問。
1.2 雙核之間的通信
   
系統(tǒng)的實(shí)現(xiàn),需要讓ARM核與DSP核實(shí)現(xiàn)協(xié)調(diào)的通信。利用Codee Engine構(gòu)架,可以實(shí)現(xiàn)和管理ARM與DSP雙核之間的數(shù)據(jù)通信。
    Codec Engine是一組用來配置和運(yùn)行DSP端的符合xDAIS算法的架構(gòu),它把符合xDAIS算法納入其架構(gòu)之下,讓ARM端的QNX可以調(diào)用它提供的VISA標(biāo)準(zhǔn)接口,從而實(shí)現(xiàn)ARM與DSP的軟件管理。圖2是CodecEngine下一個應(yīng)用程序的通用構(gòu)架。


    圖2中,應(yīng)用程序(Application)或者中間層(mediamiddle ware)調(diào)用核心引擎和VISA的API。VISA的API使用存根(Video Encode Stubs)來訪問核心引擎SPI(系統(tǒng)編程接口)和構(gòu)架(Video Encode Skeleton)。這些構(gòu)架訪問核心引擎和VISA的SPI。VISA的SPI訪問底層算法。[!--empirenews.page--]
1.3 操作系統(tǒng)介紹
    QNX擁有一個非常高效的徼內(nèi)核,它負(fù)責(zé)管理一組同時(shí)工作的進(jìn)程,同時(shí),QNX能夠?qū)崿F(xiàn)基于消息的進(jìn)程間通信。這使得QNX具有獨(dú)特的高效性、模塊化和簡易化性能。
    整個QNX操作系統(tǒng)是由徼內(nèi)核調(diào)度管理的一組進(jìn)程的集合,與硬件的總線結(jié)構(gòu)類似,稱之為軟件總線。軟件總線的存在,使得微內(nèi)核之外的系統(tǒng)模塊能夠像硬件一樣“熱插拔”。在微內(nèi)核中,應(yīng)用程序、設(shè)備驅(qū)動程序、文件系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧都駐留在內(nèi)核外部的獨(dú)立地址空間,因此它們與內(nèi)核以及彼此之間都相互隔離,具有出色的故障包容性:一個組件的故障不會導(dǎo)致整個系統(tǒng)崩潰。提高了系統(tǒng)的穩(wěn)定性和安全性。


    如圖3所示,整個QNX操作系統(tǒng)是由微內(nèi)核調(diào)度管理的一組進(jìn)程的集合,與硬件的總線結(jié)構(gòu)類似,稱之為軟件總線。軟件總線的存在,使得微內(nèi)核之外的系統(tǒng)模塊能夠像硬件一樣“熱插拔”。QNX由微內(nèi)核和一組可供操作的進(jìn)程構(gòu)成,具有高度的可裁剪性,最小的配置只占用幾十KB的內(nèi)存。同時(shí),QNX是一個符合POSIX基本標(biāo)準(zhǔn)和實(shí)時(shí)標(biāo)準(zhǔn)的操作系統(tǒng),大大方便了在不同系統(tǒng)之間進(jìn)行應(yīng)用程序的移植,這讓許多符合POSIX相應(yīng)標(biāo)準(zhǔn)的其他系統(tǒng)上開發(fā)的應(yīng)用程序,不需要修改,在QNX上重新編譯后就能運(yùn)行。本文將基于Linux操作系統(tǒng)的H.264視頻編解碼程序移植到QNX上,可以節(jié)省大量時(shí)間。

2 H.264視頻編解碼
2.1 H.264視頻編解碼基本原理
   
H.264采用DCT變化編碼加上DPCM的編碼,即混合編碼結(jié)構(gòu)。同時(shí),H.264在混合編碼的框架下引入了新的編碼方式,提高了編碼效率,更加貼近實(shí)際應(yīng)用。H.264引入了很多先進(jìn)的技術(shù),包括4×4整數(shù)變換、空域內(nèi)的幀內(nèi)預(yù)測、1/4像素精度的運(yùn)動估計(jì)、多參考幀與多種大小塊的幀間預(yù)測技術(shù)等。依賴于算法復(fù)雜度的提升,使得壓縮比獲得了極大的提升。
    H.264并未明確地規(guī)定編解碼器如何實(shí)現(xiàn),而是規(guī)定了一個已編碼的視頻比特流的句法和該比特流的解碼方法。
2.2 H.264編解碼器
   
(1)編碼部分
    H.264編碼器如圖4所示。輸入的幀或場Fn以宏塊為單位被編碼器按幀內(nèi)或幀間預(yù)測編碼的方法進(jìn)行處理。如果采用幀問預(yù)測編碼,其預(yù)測者PRED(圖中P表示)是由當(dāng)前片中的參考圖像經(jīng)運(yùn)動補(bǔ)償(MC)后得出,其中參考圖像表示。預(yù)測值PRED和當(dāng)前塊相減后,產(chǎn)生一個殘差塊Dn,經(jīng)塊變換、量化后產(chǎn)生一組量化后的變換系數(shù)X,再經(jīng)熵編碼,與解碼所需的一些信息組成一個壓后的碼流,經(jīng)NAL(網(wǎng)絡(luò)自適應(yīng)層)供傳輸和儲存用。如果采用幀內(nèi)預(yù)測編碼,從圖4可看出,其預(yù)測者PRED是由當(dāng)前片和uFn‘(重建圖像過程中未經(jīng)濾波的幀)的反饋,經(jīng)由幀內(nèi)預(yù)測選擇得出。


    為了提供進(jìn)一步預(yù)測用的參考圖像,編碼器必須具有重建圖像的功能。使殘差圖像經(jīng)反量化、反變化后得到Dn‘,與預(yù)測值P相加得到uFn‘。為了提高參考幀的圖像質(zhì)量以提高壓縮圖像的性能,設(shè)置了一個環(huán)路濾波器,濾波后的輸出Fn‘即為重建圖像,可用作參考圖像。
    (2)解碼部分
    H.264解碼器如圖5所示。由編碼器的NAL輸出一個壓縮后的H.264比特流,經(jīng)熵解碼得到量化后的一組變換系數(shù)X,再經(jīng)反量化、反變換,得到殘差的Dn‘。利用從該比特流中解碼出的頭信息,解碼器產(chǎn)生一個預(yù)測塊PRED,它和編碼器中的原始PRED相同。當(dāng)解碼器產(chǎn)生的PRED與殘差Dn‘相加后,就產(chǎn)生uFn‘,再經(jīng)濾波后,最后得到Fn‘,即最后解碼輸出的圖像。


[!--empirenews.page--]
3 系統(tǒng)軟件設(shè)計(jì)
3.1 視頻處理流程
   
視頻處理流程如圖6所示。監(jiān)控系統(tǒng)軟件設(shè)計(jì)的核心部分是視頻信號的采集、編碼等處理,主要由Capture thread、Video thread、Stream writerthread來實(shí)現(xiàn)。Capture thread主要完成采集設(shè)備的初始化,使它工作在合適的狀態(tài),從采集設(shè)備獲取原始視頻數(shù)據(jù)放到緩沖區(qū),為Video thread編碼作準(zhǔn)備。Video thread對Capture thread放到緩沖區(qū)中的原始圖像數(shù)據(jù)進(jìn)行編碼,得到H.264碼流。Stream writer thread的主要工作是把H.264碼流寫入循環(huán)緩沖區(qū)。放在循環(huán)流緩沖區(qū)的碼流可以根據(jù)用戶的需求進(jìn)行進(jìn)一步的處理,本系統(tǒng)主要將H.264碼流存儲到SD卡中。


3.2 視頻采集設(shè)計(jì)
   
這里主要介紹系統(tǒng)對于USB接口攝像頭的處理方法,其驅(qū)動程序中需要提供I/O操作接口函數(shù)open()、read()、write()、close(),對中斷的處理,內(nèi)存映射功能以對I/O通道的控制借口函數(shù)ioctl()等,并把他們定義在struct file_operations中。視頻采集系統(tǒng)軟件流程如圖7所示。


    軟件的主要函數(shù)如下:
    Camera_open():用來開啟視頻設(shè)備,使用前需要首先聲明一個camera_device類型的設(shè)備文件。
   
   
    camera_get_capability():通過調(diào)用ioctl()函數(shù)取得設(shè)備文件的相關(guān)信息,并存放到camera_capability結(jié)構(gòu)里。
    camera_get_picture():通過調(diào)用ioctl()函數(shù)取得圖像相關(guān)信息,并存放到camera_picture結(jié)構(gòu)里。
    camera_capture():用來抓取圖像,采用mmap方式,直接將設(shè)備文件/dev/videoO映射到內(nèi)存,加速文件I/O操作,共享內(nèi)存通信。
    camera_timer:設(shè)定一個定時(shí)器,用于控制視頻設(shè)備采集圖像的時(shí)隙。
    picture_save():保存采集的圖片。
    picture_num():對保存的圖片計(jì)數(shù),設(shè)定一個最大值,每當(dāng)該計(jì)數(shù)器達(dá)到最大值時(shí),調(diào)用刪除圖片函數(shù)picture_del(),一次性將已發(fā)送的幾張圖片刪除。
    camera_close():用來關(guān)閉視頻設(shè)備。

結(jié)語
   
對于視頻處理來說,采用QNX+OMAP處理器的解決方案是個不錯的選擇。由于視頻編解碼算法實(shí)現(xiàn)需要大流量的計(jì)算,使用OMAP3530開發(fā)平臺,利用OMAP3530的DSP芯片來完成視頻編解碼,可以較好地提高編解碼的速率;同時(shí),QNX實(shí)時(shí)操作系統(tǒng)的編程接口符合POSIX標(biāo)準(zhǔn),可移植性較強(qiáng),可支持多種視頻格式編解碼。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉