基于TMS320DM365的網(wǎng)絡(luò )攝像機底層軟件應用
本設計決定選用行業(yè)內較為成熟的TI公司DaVinci設計框架。該設計方案集成了ARM和DSP兩個(gè)部分,這種設計結構將系統中的圖像處理模塊和攝像機控制模塊結合起來(lái)。
文中將描述基于TMS320DM365網(wǎng)絡(luò )攝像機的底層程序,包括了系統的內核、驅動(dòng)、啟動(dòng)程序等,攝像機系統基于DaVinci框架。整個(gè)硬件基礎可以參考之前發(fā)表的文章《基于TMS320DM365的網(wǎng)絡(luò )視頻監控系統》。
1 DaVinci框架下的網(wǎng)絡(luò )攝像機結構
1.1 DaVinci框架簡(jiǎn)介
DaVinci(達芬奇)框架是一套由TI公司提出的集成了DSP處理器、軟件、工具的綜合型解決方案系列,非常適合用于開(kāi)發(fā)各類(lèi)數字視頻終端設備,包括了數字音頻、視頻、成像、視覺(jué)應用等。該技術(shù)的目的是讓開(kāi)發(fā)廠(chǎng)商能夠更輕松、更快速地開(kāi)發(fā)各種低成本的創(chuàng )新型數字視頻產(chǎn)品。Davinci技術(shù)系列組件,其中不僅包括了相應的處理器、軟件、工具,還提供一系列的解決方案和技術(shù)支持等。由于基于DaVinci框架下設計出的產(chǎn)品之間兼容性和共通性很高,所以很多大型的公司也樂(lè )于使用TI的DaVinci解決方案,以增加自身產(chǎn)品在周邊行業(yè)內的兼容性。并且DaVinci框架擁有一套全方位的軟件支持,提供了下至一般的操作系統驅動(dòng),上至應用程序接口A(yíng)PI,甚至DSP的編碼程序也是作為一個(gè)固有程序包,集成在BIOS和Code Server中。
1.2 DaVinci硬件基礎
作為底層驅動(dòng)軟件的基礎,這里需要詳細對DaVinci框架的硬件結構進(jìn)行描述。DaVinci數字視頻處理芯片是整個(gè)DaVinci技術(shù)框架的的核心,其最大特點(diǎn)為整個(gè)處理芯片集成了ARM和DSP兩種核心,實(shí)現了兩種核心的并行工作和通信機制。TMS320DM365作為DaVinci技術(shù)框架下的一款新型芯片,也和之前系列芯片擁有相同的系統,一個(gè)通用的DaVinci系統結構如圖1所示。
DSP即數字信號處理器,其主要特點(diǎn)就是能夠進(jìn)行大量的乘加運算,擁有高速計算能力,并且DSP的數據和程序分離存儲,這樣充分利用了所有線(xiàn)寬,進(jìn)一步加速了DSP的處理速度,在數字攝像機中DSP專(zhuān)門(mén)用于計算量龐大的圖像處理算法。DSP其功能包括了VPSS(Video Process ing Subsystem)和VICP(Video Image Collaborative Processer)兩個(gè)部分。視頻處理系統VPSS是DM365的視頻信號采集模塊,與其他攝像機控制芯片相比,最顯著(zhù)的特點(diǎn)是DM365帶有一個(gè)ISIF模塊,可以直接獲取CCD和CMOS的輸出圖像。相較于一般圖像處理芯片需要先一步進(jìn)行A /D處理,DM365能更加快速地獲取圖像信號。視頻/影像協(xié)處理器(VICP)作為DM365芯片中DSP部分的主體,主要功能是視頻圖像的壓縮算法,一般使用的H.264壓縮方式,其中還包括了運動(dòng)補償、對象識別等算法,這些圖像處理算法占整個(gè)系統運算量的600%~80%。
ARM處理器盡管沒(méi)有DSP那么快速的圖像處理速度,但是ARM較大的程序存儲量和迅速的任務(wù)切換能力,使得它適合復雜的、多線(xiàn)程的任務(wù)調控,支持實(shí)時(shí)的操作系統。ARM子系統管理和協(xié)調芯片內其他功能模塊的工作,采用流水線(xiàn)的工作方式執行系統控制任務(wù),例如系統的初始化、參數配置、電源管理和用戶(hù)功能等。
兩者之間的通訊方式如圖2所示,芯片中ARM可以訪(fǎng)問(wèn)DSP的片內存儲器,包括L2RAM和L1 P/D,DSP也可以訪(fǎng)問(wèn)ARM的片內存儲器,并且ARM和DSP共享DDR2和AEMIF,其中AEMIF是指異步的外接存儲器接口(Asynchronous External MemoryInterface)。因此通常情況下ARM只需要將處理數據的地址指針傳遞給DSP,而不需要大量的數據傳輸。系統中的DSP和ARM通過(guò)2個(gè)內核相互中斷實(shí)現通信,ARM使用DSP的4個(gè)通用中斷和1個(gè)不可屏蔽中斷來(lái)控制DSP;而DSP通過(guò)兩個(gè)中斷來(lái)中斷ARM。DSP的電源、時(shí)鐘、復位都是由ARM進(jìn)行控制。
2 網(wǎng)絡(luò )攝像機的軟件結構
由于DaVinci系統雙處理核心的硬件結構,整個(gè)DaVinci的軟件框架也類(lèi)似于硬件框架分為ARM核心的軟件和DSP部分的軟件。整個(gè)軟件框架圖如圖3所示,ARM內核中的軟件主要為操作系統、驅動(dòng)和應用層面的軟件,DSP內核里運行音視頻編解碼算法處理,ARM通過(guò)TI的Codec Eng ine機制調用DSP完成編解碼。
在DSP部分,軟件由最底層的DSP/BIOSTM內核,內核上層是Codec engine,用于和ARM端的Linux通信,最頂層是圖像處理箅法。針對圖像處理算法,DaVinci框架提供了數字信號處理算法接口標準(XDAIS)和針對流媒體的XDM。所有符合XDAIS和XDM標準的圖像處理算法包都可以被用于DaVinci的DSP中。并且在XDAIS和XDM中也包括了一套流程完整的基礎的圖像處理算法,用戶(hù)可以按照其標準進(jìn)行修改,或者自行重新開(kāi)發(fā)。再加上由第三方開(kāi)發(fā)的符合XDM標準的軟件包,地豐富了整個(gè)DSP圖像處理軟件部分的資源。
ARM部分的軟件系統使用基于Linux的嵌入式軟件系統,軟件結構如圖4所示。整個(gè)系統基于Linux的實(shí)時(shí)操作系統,在Linux上需要加入文件系統、圖形用戶(hù)接口和任務(wù)管理,最頂層是應用層面的軟件,在應用軟件中DaVinci系統只提供常用的API。
Linux實(shí)時(shí)操作系統中,應用程序、引導加載程序(Boot Loader)、驅動(dòng)程序(Driver)和操作系統(Operating System)的內核鏡像都是相互獨立的,可以單獨編譯修改。只要符合各個(gè)部分特有的接口和程序存放位置,就能被整個(gè)系統識別并且調用。引導程序是UBL和u-boot,用于初始化硬件系統,引導Linux操作系統的加載,完成內核文件加載后,將控制權交給操作系統。操作系統的內核鏡像uImage,是一個(gè)基礎的操作系統平臺,調用驅動(dòng)程序和應用程序,實(shí)現多線(xiàn)程機制,完成了系統調用等工作。驅動(dòng)程序和應用程序是事先存儲在操作系統特定文件夾內的,被操作系統Linux按順序調用,開(kāi)發(fā)者可以根據自己的需要自行修改。Linux內的文件系統主要提供內核中所有文件的存儲、檢索和更新等功能,同樣包括了驅動(dòng)程序和應用程序的文件操作。一般不提供保護和加密等安全機制。文件系統通過(guò)調用和命令方式提供文件的各種操作,主要包括設置、修改對文件和目錄的用戶(hù)權限;提供針對目錄的創(chuàng )建、修改和刪除等功能;提供針對文件的創(chuàng )建、打開(kāi)、讀寫(xiě)、關(guān)閉和撤銷(xiāo)等功能。
對于應用層面的開(kāi)發(fā)而言,并不需要考慮DSP部分的圖像處理實(shí)現算法,直接將DSP部分作為一個(gè)黑箱進(jìn)行處理,通過(guò)圖像服務(wù)接口,從ARM部分通過(guò)語(yǔ)句進(jìn)行調用。圖像服務(wù)的接口提供了用戶(hù)調用DSP中的圖像處理程序的接口,整個(gè)服務(wù)接口使用Codec中間框架系統。Linux端的程序通過(guò)Codec引擎訪(fǎng)問(wèn)DSP處理器中的Codec Server。整個(gè)Codec框架包括了多種API和SPI,從軟件角度可以看做是一個(gè)介于應用程序和DSP中圖像處理算法之間的接口,如圖5所示。這樣ARM端的應用程序開(kāi)發(fā)者,可以不用去考慮DSP中復雜的音視頻算法。
評論