基于TMS320DM642的網(wǎng)絡(luò)攝像機(jī)的設(shè)計及實現(xiàn)
從技術(shù)實現(xiàn)方式來講,通常是采用網(wǎng)絡(luò)攝像機(jī)來實現(xiàn)。目前市場上的網(wǎng)絡(luò)攝像機(jī)一般有兩類:一類是普通攝像機(jī)加視頻網(wǎng)關(guān)構(gòu)成,但是這種方案體積龐大、操作繁瑣;另一類是把全部網(wǎng)絡(luò)接入功能都集成在攝像機(jī)中,其體積小、功能全、易于使用和維護(hù)。后一類攝像機(jī)有多種解決方案,本文提出一種基于嵌入式DSP的設(shè)計方案,并且給出具體的硬件及軟件實現(xiàn)。
1 硬件系統(tǒng)設(shè)計
1.1 嵌入式處理器TMS320DM642
TMS320DM642(以下簡稱DM462)是TI公司近來發(fā)布的新一代多媒體處理器,它基于其第二代高性能的VelociTI VLIW結(jié)構(gòu),適用于多種數(shù)字媒體應(yīng)用。DM642的時鐘頻率為600MHz,指令速度高達(dá)4800MIPS。這款DSP的兩大特色在于:第一,擁有三個可配置的視頻接口(VP),可同時采集三路視頻信號;第二,集成了以太網(wǎng)接口,10/100Mbps模式自適應(yīng),能工作在全雙工或半雙工模式下,并具有硬件流控制和服務(wù)質(zhì)量保證(QoS)支持。DM642的功能十分強(qiáng)大,它是構(gòu)成多媒體通信系統(tǒng)的最佳平臺之一。
1.2 硬件整體架構(gòu)
本系統(tǒng)的硬件平臺由六部分組成,分別是視頻采集、數(shù)據(jù)存儲、視頻處理、視頻顯示、網(wǎng)絡(luò)和電源管理。其結(jié)構(gòu)框圖如圖1所示。
視頻采集部分采用模擬PAL制攝像頭,配合高精度視頻A/D轉(zhuǎn)換器得到數(shù)字圖像。A/D轉(zhuǎn)換器采用TI公司的TVP5145芯片,其采樣精度達(dá)到10bit,輸出支持CCIR-656和BT656等格式。
數(shù)據(jù)存儲部分的RAM采用三星公司的SDRAM。為配合DM642的64位EMIF(外部存儲器接口),使用四片SDRAM,每片工作在16位模式,單片容量為32MB。數(shù)據(jù)存儲部分的ROM采用ATMEL公司的NOR型的Flash芯片,總?cè)萘繛?56KB,數(shù)據(jù)總線為8位。本系統(tǒng)中的SDRAM用來存放系統(tǒng)運行時的代碼以及臨時圖像數(shù)據(jù),F(xiàn)lash用來保存系統(tǒng)自啟動代碼以及系統(tǒng)程序代碼。
視頻顯示部分采用數(shù)字LCD,可省去數(shù)/模轉(zhuǎn)換芯片,只需一片CPLD驅(qū)動LCD。CPLD采用Altera公司的MAX3000系列。這部分作為輔助功能,可根據(jù)實際運用場合進(jìn)行選擇。
DM642的以太網(wǎng)控制器(即EMAC)屬于數(shù)據(jù)鏈路層,因此需外接物理層芯片才能進(jìn)行網(wǎng)絡(luò)通信。這里采用Intel公司的LXT971A芯片,它提供了MII(Media Independent Interface)接口,可以方便地和DM642連接。
電源管理部分在一個硬件系統(tǒng)設(shè)計中占有舉足輕重的地位。本系統(tǒng)的電源模塊采用MAXIM公司的解決方案,包括一片MAX1762芯片(產(chǎn)生1.4V電源給DM642內(nèi)核供電)以及兩片MAX1626(分別產(chǎn)生3.3V電源給DM642的I/O供電和產(chǎn)生5V電源給LCD的逆變器供電)。
2 設(shè)備驅(qū)動設(shè)計
TI為DM642的VP口開發(fā)了一個兩層設(shè)備驅(qū)動模型。上層驅(qū)動稱為Class Driver,用于連接應(yīng)用程序和下層驅(qū)動;下層驅(qū)動稱為Mini Driver,更靠近底層硬件。應(yīng)用時只需根據(jù)這個模型編寫驅(qū)動程序就可以了。
對于以太網(wǎng)口,TI提供了一個網(wǎng)絡(luò)開發(fā)組件(NDK),為在DSP上開發(fā)網(wǎng)絡(luò)應(yīng)用程序提供了平臺。有了這個平臺,在開發(fā)網(wǎng)絡(luò)應(yīng)用程序時,就不用過多考慮數(shù)據(jù)如何封裝成IP包,也不用過多關(guān)心TCP/IP協(xié)議內(nèi)部的工作機(jī)制,這樣可以縮短產(chǎn)品的開發(fā)周期及上市時間。
2.1 視頻端口的兩層設(shè)備驅(qū)動模型
兩層設(shè)備驅(qū)動模型如圖2所示。最上層是應(yīng)用程序,最下層是底層硬件,包括DM642的VP口和視頻A/D芯片。中間大花括號括起來的部分即為設(shè)備驅(qū)動。圖中還有一層芯片支持庫(CSL),它提供配置及控制片上外設(shè)的C語言接口。
根據(jù)VP口的特點,設(shè)備驅(qū)動的兩層驅(qū)動模型的每一層又細(xì)分了兩層。從圖2可以看到,把Class Driver分為FVID Class Driver和GIO Class Driver。前者更靠近應(yīng)用程序,它提供一些特別適用于圖像的API函數(shù);后者提供與Mini Driver進(jìn)行通信的API函數(shù)。Mini Driver分成通用部分和特殊部分,這樣分的優(yōu)勢在于:當(dāng)改變硬件構(gòu)成時,無需重寫Mini Driver,只需修改特殊部分即可,提高了代碼的重復(fù)使用性。
2.2 網(wǎng)絡(luò)開發(fā)組件
網(wǎng)絡(luò)開發(fā)組件的核心即為一系列TCP/IP協(xié)議棧庫。包括:(1)棧庫和網(wǎng)絡(luò)工具庫,它含有一些經(jīng)過優(yōu)化編譯的協(xié)議棧代碼;(2)操作系統(tǒng)適應(yīng)庫,它用來協(xié)調(diào)TCP/IP協(xié)議棧和DSP/BIOS之間的接口;(3)網(wǎng)絡(luò)控制及調(diào)度庫,它決定TCP/IP環(huán)境的初始化以及網(wǎng)絡(luò)相關(guān)事件是如何被調(diào)度的;(4)多種硬件抽象層平臺庫,為TI公司的多種開發(fā)板(比如DSK、TEB和EVM等)提供支持。由于本系統(tǒng)為自行開發(fā),所以不涉及HAL。
協(xié)議棧庫的流程框圖如圖3所示,其中灰色模塊分別代表前述五個庫。
3 軟件設(shè)計及實現(xiàn)
TI公司的DSP開發(fā)軟件包括集成開發(fā)環(huán)境(CCS)、 實時操作系統(tǒng)(DSP/BIOS)、第三方算法庫標(biāo)準(zhǔn)(eXpressDSP)。DSP/BIOS是一個用戶可裁剪的實時操作系統(tǒng),包含內(nèi)存管理、線程管理、中斷、外設(shè)管理和任務(wù)調(diào)度等功能。另外,還需使用JPEG標(biāo)準(zhǔn)進(jìn)行圖像壓縮,因為采用JPEG進(jìn)行網(wǎng)絡(luò)傳輸時,如果出現(xiàn)網(wǎng)絡(luò)短暫阻塞,可將當(dāng)前幀拋棄而不影響下一幀的圖像,所以能夠保證系統(tǒng)的實時性要求。在本系統(tǒng)中調(diào)用了TI提供的JPEG算法庫來完成JPEG壓縮。
3.1 軟件流程結(jié)構(gòu)
根據(jù)本系統(tǒng)的要求,整個軟件系統(tǒng)分為五個任務(wù)模塊,每個模塊完成各自的功能。這五個任務(wù)模塊分別為輸入任務(wù)、處理任務(wù)、輸出任務(wù)、網(wǎng)絡(luò)任務(wù)以及控制任務(wù),其流程如圖4所示。下面敘述任務(wù)間調(diào)度及分別完成的功能。
(1) 輸入任務(wù)
該任務(wù)模塊主要完成將VP口采集到的數(shù)字圖像存入動態(tài)分配的內(nèi)存空間中,圖像格式為YUV4:2:2(可根據(jù)需要進(jìn)行設(shè)置),分辨率為720480。然后對該圖像色度信號進(jìn)行4:2:0重采樣,這樣做的目的是為了調(diào)用JPEG算法庫。完成以上兩步后,輸入任務(wù)模塊發(fā)出一個消息給處理任務(wù)模塊,告知圖像在內(nèi)存空間中的位置,讓處理任務(wù)模塊去做進(jìn)一步的處理。接著,輸入任務(wù)模塊等待處理任務(wù)模塊回復(fù),收到回復(fù)消息后,繼續(xù)采集下一幀圖像。
(2) 處理任務(wù)模塊
該任務(wù)模塊主要完成JPEG壓縮。處理任務(wù)模塊首先獲得一個從輸入任務(wù)模塊發(fā)出的消息,并且從中得到圖像數(shù)據(jù)。接著進(jìn)行JPEG壓縮,如前所述,壓縮調(diào)用了JPEG算法庫,其壓縮的速度和性能比較好。在處理任務(wù)模塊完成圖像壓縮后,發(fā)出三個消息:第一個發(fā)給輸入任務(wù)模塊,使其繼續(xù)采集下一幀圖像;第二個發(fā)給網(wǎng)絡(luò)任務(wù)模塊,把JPEG圖像在內(nèi)存中的位置以及字節(jié)數(shù)告訴網(wǎng)絡(luò)任務(wù)模塊供其處理,同時,處理任務(wù)模塊將等待網(wǎng)絡(luò)任務(wù)模塊回復(fù)消息;最后一個消息發(fā)給輸出任務(wù)模塊,告知原始圖像在內(nèi)存中的位置,讓輸出任務(wù)模塊把它輸出到LCD進(jìn)行顯示。同樣,它也將等待輸出任務(wù)模塊回復(fù)消息。
(3) 輸出任務(wù)模塊
該任務(wù)模塊完成將采集到的原始圖像輸出到LCD進(jìn)行顯示。由于采集到的是YUV圖像,而本系統(tǒng)的LCD使用RGB信號作為輸入,這需要經(jīng)過數(shù)字圖像格式轉(zhuǎn)換,該轉(zhuǎn)換交由CPLD完成。
(4) 網(wǎng)絡(luò)任務(wù)模塊
該任務(wù)模塊完成網(wǎng)絡(luò)傳輸功能。分三部分實現(xiàn):第一部分先獲得一個從處理任務(wù)模塊發(fā)出的消息,從中得到JPEG圖像的大小和在內(nèi)存中的位置,并通過UDP協(xié)議的Socket套接字將其發(fā)送給客戶。同時發(fā)出一個消息給處理任務(wù)模塊,告知已獲得JPEG圖像,可進(jìn)行下一幀圖像的壓縮。第二部分進(jìn)行協(xié)議棧的初始化,包括IP地址、子網(wǎng)掩碼和網(wǎng)關(guān)的設(shè)定。如果要連接Internet,必須設(shè)置DHCP,動態(tài)分配IP地址。除此以外,還要選擇哪種網(wǎng)絡(luò)服務(wù),DM642支持Telnet、HTTP、Data server等服務(wù),本系統(tǒng)使用HTTP服務(wù)。第三部分為加載網(wǎng)頁,在PC機(jī)上用HTML編寫網(wǎng)頁,在該網(wǎng)頁中內(nèi)嵌一段JavaApplet小程序以實現(xiàn)本系統(tǒng)和客戶端的交互。HTML文件不能直接加載給DM642,必須在DOS環(huán)境下使用binsrc插件把它轉(zhuǎn)換成用C語言描述的數(shù)據(jù)數(shù)組。當(dāng)用戶通過IE瀏覽器訪問本系統(tǒng)時,HTTP服務(wù)器通過嵌入式文件系統(tǒng)訪問內(nèi)存中的HTML網(wǎng)頁(即訪問那個用C語言描述的數(shù)據(jù)數(shù)組),該文件系統(tǒng)是基于RAM的文件系統(tǒng),它駐留在OS.LIB中。同時,JavaApplet小程序隨同HTML文件下載到客戶端并由IE瀏覽器解釋執(zhí)行。
(5) 控制任務(wù)模塊
該任務(wù)模塊完成在HTML網(wǎng)頁上對JPEG壓縮性能的控制。在網(wǎng)頁中接收的用戶自定義參數(shù),通過DSP/BIOS中的郵箱機(jī)制傳遞給處理任務(wù)模塊,從而修改JPEG的壓縮參數(shù),改變壓縮質(zhì)量。圖5所示即為接收用戶修改參數(shù)的對話框,1表示壓縮質(zhì)量最差,100表示壓縮質(zhì)量最好。
這些任務(wù)的初始化在系統(tǒng)的main( )函數(shù)里實現(xiàn)。另外,對DM642芯片的初始化(包括初始化寄存器、二級緩存(L2)的設(shè)置等)均在dm642init( )函數(shù)中完成,該函數(shù)定義在DSP/BIOS的用戶初始化函數(shù)列表中,在此不再贅述。
本文提出的基于TMS320DM642的網(wǎng)絡(luò)攝像機(jī)的設(shè)計方案已成功實現(xiàn)。在客戶端打開IE瀏覽器,即可看到實時監(jiān)控的圖像,圖像顯示較流暢,在局域網(wǎng)內(nèi)的圖像幀率可以達(dá)到30幀/秒。而且可以同時采集多路視頻信號,滿足多個客戶的連接請求。本系統(tǒng)滿足了目前寬帶環(huán)境中的網(wǎng)絡(luò)視頻會議以及視頻監(jiān)控的要求,其應(yīng)用前景十分廣泛。
評論