基於TMS320DM642的網路攝像機的設計及實現
| [日期:2008-9-18] |
來源:電子技術應用 作者:岑 鴻, 洪孝炬 |
[字型:大 中 小] |
隨著網路技術和多媒體技術的廣泛應用,數字網路視頻得到了飛速發展。在網路視頻會議和網路監控領域中,將傳統的類比視頻訊號轉換成數位視訊訊號,並且藉助於現有的IP網路進行傳輸已成為當今的一大熱點。
從技術實現方式來講,通常是採用網路攝像機來實現。目前市場上的網路攝像機一般有兩類:一類是普通攝像機加視頻網關構成,但是這種方案體積龐大、操作繁瑣;另一類是把全部網路接入功能都整合在攝像機中,其體積小、功能全、便於使用和維護。後一類攝像機有多種解決方案,本文提出一種基於嵌入式DSP的設計方案,並且給出具體的硬體及軟體實現。
1 硬體系統設計
1.1 嵌入式處理器TMS320DM642
TMS320DM642(以下簡稱DM462)是TI公司近來發布的新一代多媒體處理器,它基於其第二代高效能的VelociTI VLIW結構,適用於多種數位媒體應用。DM642的時鐘頻率為600MHz,指令速度高達4800MIPS。這款DSP的兩大特色在於:第一,擁有三個可配置的視頻介面(VP),可同時採集三路視頻訊號;第二,整合了乙太網路介面,10/100Mbps模式自適應,能工作在全雙工系統或半雙工模式下,並具有硬體流量控制和服務品質保證(QoS)支援。DM642的功能十分強大,它是構成多媒體通訊系統的最佳平台之一。
1.2 硬體整體架構
本系統的硬體平台由六部分組成,分別是視頻採集、資料存放區、視頻處理、視頻顯示、網路和電源管理。其結構框圖1所示。
視頻採集部分採用類比PAL制網路攝影機,配合高精度視頻A/D轉換器得到數位影像。A/D轉換器採用TI公司的TVP5145晶片,其採樣精度達到10bit,輸出支援CCIR-656和BT656等格式。
資料存放區部分的RAM採用三星公司的SDRAM。為配合DM642的64位EMIF(外部儲存空間介面),使用四片SDRAM,每片工作在16位元模式,單片容量為32MB。資料存放區部分的ROM採用ATMEL公司的NOR型的Flash晶片,總容量為256KB,資料匯流排為8位。本系統中的SDRAM用來存放系統運行時的代碼以及臨時映像資料,Flash用來儲存系統自啟動代碼以及系統程式碼。
視頻顯示部分採用數字LCD,可省去數/模轉換晶片,只需一片CPLD驅動LCD。CPLD採用Altera公司的MAX3000系列。這部分作為協助工具功能,可根據實際運用場合進行選擇。
DM642的乙太網路控制器(即EMAC)屬於資料連結層,因此需外接物理層晶片才能進行網路通訊。這裡採用Intel公司的LXT971A晶片,它提供了MII(Media Independent Interface)介面,可以方便地和DM642串連。
電源管理部分在一個硬體系統設計中佔有舉足輕重的地位。本系統的電源模組採用MAXIM公司的解決方案,包括一片MAX1762晶片(產生1.4V電源給DM642核心供電)以及兩片MAX1626(分別產生3.3V電源給DM642的I/O供電和產生5V電源給LCD的逆變器供電)。
2 裝置驅動設計
TI為DM642的VP口開發了一個兩層裝置驅動模型。上層驅動稱為Class Driver,用於串連應用程式和下層驅動;下層驅動稱為Mini Driver,更靠近底層硬體。應用時只需根據這個模型編寫驅動程式就可以了。
對於乙太網路口,TI提供了一個網路開發組件(NDK),為在DSP上開發網路應用程式提供了平台。有了這個平台,在開發網路應用程式時,就不用過多考慮資料如何封裝成IP包,也不用過多關心TCP/IP協議內部的工作機制,這樣可以縮短產品的開發週期及上市時間。
2.1 視頻連接埠的兩層裝置驅動模型
兩層裝置驅動模型2所示。最上層是應用程式,最下層是底層硬體,包括DM642的VP口和視頻A/D晶片。中間大花括弧括起來的部分即為裝置驅動。圖中還有一層晶片支援庫(CSL),它提供配置及控製片上外設的C語言介面。
根據VP口的特點,裝置驅動的兩層驅動模型的每一層又細分了兩層。從圖2可以看到,把Class Driver分為FVID Class Driver和GIO Class Driver。前者更靠近應用程式,它提供一些特別適用於映像的API函數;後者提供與Mini Driver進行通訊的API函數。Mini Driver分成通用部分和特殊部分,這樣分的優勢在於:當改變硬體構成時,無需重寫Mini Driver,只需修改特殊部分即可,提高了代碼的重複使用性。
2.2 網路開發組件
網路開發組件的核心即為一系列TCP/IP協議棧庫。包括:(1)棧庫和網路工具庫,它含有一些經過最佳化編譯的協議棧代碼;(2)作業系統適應庫,它用來協調TCP/IP協議棧和DSP/BIOS之間的介面;(3)網路控制及調度庫,它決定TCP/IP環境的初始化以及網路相關事件是如何被調度的;(4)多種硬體抽象層平台庫,為TI公司的多種開發板(比如DSK、TEB和EVM等)提供支援。由於本系統為自行開發,所以不涉及HAL。
協議棧庫的流程框圖3所示,其中灰色模組分別代表前述五個庫。
3 軟體設計及實現
TI公司的DSP開發軟體包括整合式開發環境(CCS)、 即時作業系統(DSP/BIOS)、第三方演算法庫標準(eXpressDSP)。DSP/BIOS是一個使用者可裁剪的即時作業系統,包含記憶體管理、線程管理、中斷、外設管理和任務調度等功能。另外,還需使用JPEG標準進行映像壓縮,因為採用JPEG進行網路傳輸時,如果出現網路短暫阻塞,可將當前幀拋棄而不影響下一幀的映像,所以能夠保證系統的即時性要求。在本系統中調用了TI提供的JPEG演算法庫來完成JPEG壓縮。
3.1 軟體流程結構
根據本系統的要求,整個軟體系統分為五個任務模組,每個模組完成各自的功能。這五個任務模組分別為輸入任務、處理任務、輸出任務、網路任務以及控制任務,其流程4所示。下面敘述任務間調度及分別完成的功能。
(1) 輸入任務
該任務模組主要完成將VP口採集到的數位影像存入動態分配的記憶體空間中,映像格式為YUV4:2:2(可根據需要進行設定),解析度為720×480。然後對該映像色度訊號進行4:2:0重採樣,這樣做的目的是為了調用JPEG演算法庫。完成以上兩步後,輸入任務模組發出一個訊息給處理任務模組,告知映像在記憶體空間中的位置,讓處理任務模組去做進一步的處理。接著,輸入任務模組等待處理任務模組回複,收到回複訊息後,繼續採集下一幀映像。
(2) 處理任務模組
該任務模組主要完成JPEG壓縮。處理任務模組首先獲得一個從輸入任務模組發出的訊息,並且從中得到映像資料。接著進行JPEG壓縮,如前所述,壓縮調用了JPEG演算法庫,其壓縮的速度和效能比較好。在處理任務模組完成映像壓縮後,發出三個訊息:第一個發給輸入任務模組,使其繼續採集下一幀映像;第二個發給網路任務模組,把JPEG映像在記憶體中的位置以及位元組數告訴網路任務模組供其處理,同時,處理任務模組將等待網路任務模組回複訊息;最後一個訊息發給輸出任務模組,告知原始映像在記憶體中的位置,讓輸出任務模組把它輸出到LCD進行顯示。同樣,它也將等待輸出任務模組回複訊息。
(3) 輸出任務模組
該任務模組完成將採集到的原始映像輸出到LCD進行顯示。由於採集到的是YUV映像,而本系統的LCD使用RGB訊號作為輸入,這需要經過數位影像格式轉換,該轉換交由CPLD完成。
(4) 網路任務模組
該任務模組完成網路傳輸功能。分三部分實現:第一部分先獲得一個從處理任務模組發出的訊息,從中得到JPEG映像的大小和在記憶體中的位置,並通過UDP協議的Socket通訊端將其發送給客戶。同時發出一個訊息給處理任務模組,告知已獲得JPEG映像,可進行下一幀映像的壓縮。第二部分進行協議棧的初始化,包括IP地址、子網路遮罩和網關的設定。如果要串連Internet,必須設定DHCP,動態分配IP地址。除此以外,還要選擇哪種網路服務,DM642支援Telnet、HTTP、Data server等服務,本系統使用HTTP服務。第三部分為載入網頁,在PC機上用HTML編寫網頁,在該網頁中內嵌一段JavaApplet小程式以實現本系統和用戶端的互動。HTML檔案不能直接載入給DM642,必須在DOS環境下使用binsrc外掛程式把它轉換成用C語言描述的資料數組。當使用者通過IE瀏覽器訪問本系統時,HTTP伺服器通過嵌入式檔案系統訪問記憶體中的HTML網頁(即訪問那個用C語言描述的資料數組),該檔案系統是基於RAM的檔案系統,它駐留在OS.LIB中。同時,JavaApplet小程式隨同HTML檔案下載到用戶端並由IE瀏覽器解釋執行。
(5) 控制任務模組
該任務模組完成在HTML網頁上對JPEG壓縮效能的控制。在網頁中接收的使用者自訂參數,通過DSP/BIOS中的郵箱機制傳遞給處理任務模組,從而修改JPEG的壓縮參數,改變壓縮品質。圖5所示即為接收使用者修改參數的對話方塊,1表示壓縮品質最差,100表示壓縮品質最好。
這些任務的初始化在系統的main( )函數裡實現。另外,對DM642晶片的初始化(包括初始化寄存器、二級緩衝(L2)的設定等)均在dm642init( )函數中完成,該函數定義在DSP/BIOS的使用者初始化函數列表中,在此不再贅述。
本文提出的基於TMS320DM642的網路攝像機的設計方案已成功實現。在用戶端開啟IE瀏覽器,即可看到即時監控的映像,映像顯示較流暢,在區域網路內的映像幀率可以達到30幀/秒。而且可以同時採集多路視頻訊號,滿足多個客戶的串連請求。本系統滿足了目前寬頻環境中的網路視頻會議以及視頻監控的要求,其應用前景十分廣泛。