提出了一種利用TriMedia嵌入式微處理器TM1300為CPU的多媒體網(wǎng)絡(luò )系統的整體硬件設計方案。介紹了利用設備庫和BSP分層概念在系統中音視頻外設編程的應用,重點(diǎn)介紹基于pSOS實(shí)時(shí)操作系統網(wǎng)絡(luò )部件pNA+的網(wǎng)絡(luò )驅動(dòng)程序的基本設計方案及網(wǎng)絡(luò )編程模型。 多媒體技術(shù)與網(wǎng)絡(luò )技術(shù)的有機結合滿(mǎn)足信息化社會(huì )人們對各種信息的大量需求。網(wǎng)絡(luò )多媒體技術(shù)的迅速發(fā)展,加速了多種網(wǎng)絡(luò )多媒體技術(shù)的應用,如:視頻會(huì )議系統、數字視頻監控系統、多媒體電子郵件、視頻點(diǎn)播(VOD)、遠程多媒體數據庫等。 隨著(zhù)微處理器技術(shù)的發(fā)展和嵌入式操作系統的日益廣泛的應用,嵌入式系統以其高速響應、高度自動(dòng)化、功能易于擴展等獨特優(yōu)勢已成為計算機工業(yè)新的增長(cháng)熱點(diǎn)。而且,嵌入式設備接入Internt已經(jīng)成為不可避免的趨勢,并顯示出美好的應用前景。嵌入式系統在多媒體通信應用領(lǐng)域同樣得到了很好的應用,各種基于嵌入式Internet技術(shù)的頻服務(wù)器、多媒體遠程監控系統已經(jīng)成功應用于多種場(chǎng)合。 本文論述一種具有網(wǎng)絡(luò )通信和多媒體處理功能的嵌入式系統的設計實(shí)現方法。 1 系統總體框架設計 基本的多媒體通信系統一般應該具有各種音視頻輸入輸出設備,并具有高速網(wǎng)絡(luò )通信功能。本系統采用Philips公司TriMedia系列的TM1300媒體處理器作為主核來(lái)構造。其系統設計的各個(gè)功能模塊如圖1所示。 1.1 TM1300媒體處理器簡(jiǎn)介及其系統設計特點(diǎn) TM1300是一種具高質(zhì)量數字視頻和音頻應用處理能力的媒體處理器。它擁有接線(xiàn)員大的超長(cháng)指令字(VLIW)核DSP CPU,獨立于DSP CPU的DMA方式工作的音視頻輸入輸出接口,32位高帶寬數據總線(xiàn)將所有的片上模塊單元連接,如PCI、SDRAM、圖像協(xié)處理器(ICP)等,使數據處理極為快速方便。另外,其強大的面向多媒體應用的指令系統和豐富的庫函數使開(kāi)發(fā)者能快速完成軟件編程。 TM1300的PCI/XIO接口控制和復用邏輯使其可以用于為PC機環(huán)境設計的PCI音視頻處理加速卡,也可以用于獨立工作的嵌入式系統。在系統設計中,既可以訪(fǎng)問(wèn)PCI外設,如PCI網(wǎng)絡(luò )接口芯片,又可以訪(fǎng)問(wèn)各種8位外設,如ROM、8位MCU、程序存儲器Flash Memory等。 1.2 系統框圖說(shuō)明及芯片典型選型 本系統是一種嵌入式系統,它能完成視頻和音頻數據的采集與輸出功能,并能通過(guò)高速網(wǎng)絡(luò )傳遞壓縮編碼后的音視頻數據流。TM1300具有強大的多媒體數據處理能力,它在系統中可以完成音視頻數據的壓縮編碼或解碼,同時(shí)處理網(wǎng)絡(luò )數據的收發(fā),并可以通過(guò)pSOS實(shí)時(shí)操作系統協(xié)調和調度整個(gè)系統的任務(wù),從而形成強大的多媒體音視頻數據處理和傳輸系統。 當然,本系統框圖僅旨在一般意義上的系統,在實(shí)際應用中可以按照具體要求裁剪或添加其他外設,如UART控制器、Modem控制器模塊等,使系統具有用戶(hù)特定的功能。 (1)TM1300的視頻輸入接口提供8~10位視頻A/D轉換接口,其最高采樣率可以達81MHz?梢圆捎肞hilips公司SAA7113、SAA7114等視頻解碼芯片(Video Decoder)來(lái)完成系統各種格式的視頻信號采集。 (2)視頻輸出接口提供8位的視頻數據輸出口,可以完成解碼后的視頻數據輸出,可以采用Philips公司的視頻編碼芯片(Video Encoder)完成視頻數據的D/A轉換。 (3)音頻信號采集和輸出的數據都是通過(guò)TM1300的標準I2C總線(xiàn)接口來(lái)傳輸的?梢杂肞hilips公司的UDA1344音頻編解碼器(Audio Codec)完成音頻數據的A/D和D/A轉換。 (4)基于網(wǎng)絡(luò )接口芯片可以采用常用的Realtek公司的RTL8139C,它是具有10/100Mbps自適應功能的以太網(wǎng)收發(fā)控制器,是目前應用最為廣泛的一種網(wǎng)絡(luò )接口芯片。設計時(shí),應為其配置啟動(dòng)EEPROM,如93LC46、93LC56等。 (5)啟動(dòng)EEPROM一般使用符合I2C的器件,如24LC16、24LC32等。因為除了要存放系統啟動(dòng)設置信息外,還要存放用于系統自舉L1代碼,EEPROM不得小于2K字節空間。EEPROM具體內容格式參照TM1300芯片資料文檔。 特別值得注意,設計本系統PCI總線(xiàn)與設計PCI卡時(shí)不同的是,TM1300使用PCI總線(xiàn)訪(fǎng)問(wèn)時(shí)總線(xiàn)仲裁需仲裁器。這是因為在基于PC機主板和PCI橋接芯片上已經(jīng)有總線(xiàn)仲裁邏輯,不需要另外再作處理。嵌入的TM1300系統則需要仲裁來(lái)處理PCI總線(xiàn)的請求和應答,具體的邏輯設計應參考PCI規范相關(guān)內容。另外,嵌入式系統需要通過(guò)JTAG口進(jìn)行調試和仿真,并要在系統中加入程序代碼存儲器Boot Flash。 2 音視頻外設編程的分層模型及應用 系統中的視頻A/D、D/A芯片單元通常連接在TM1300的I2C總線(xiàn)上,其初始化和設置是通過(guò)I2C總線(xiàn)訪(fǎng)問(wèn)其內部寄存器實(shí)現,音頻處理芯片則通過(guò)I2C接口總線(xiàn)與TM1300連接。TM1300正是通過(guò)這些總線(xiàn)對其進(jìn)行初始化設置。 在軟件上,TriMedia層次化軟件架構TSA引入設備庫層(Device Library Layer)概念,該層為板級庫到應用程序之間提供了一個(gè)公共接口。設備庫輸出兩個(gè)接口,其架構由圖2所示。 在設備庫中,基本的API調用函數和功能描述在表1中給出。 表1 設備庫API 函數名 功能說(shuō)明 devGetCapabilities 設備兼容性請求,如版本、數據格式等 devOpen 請求設備實(shí)例 devInstanceSetup 設備實(shí)例設置 devStart 開(kāi)始運行當前設備實(shí)例 devStop 停止運行當前設備實(shí)例 devClose 釋放當前設備實(shí)例 例如,視頻輸出的設備庫函數有voCapabilities、voOpen、voInstanceSetup等。在TriMedia的軟件開(kāi)發(fā)環(huán)境TriMedia SDE 2.2對音視頻等設備庫函數都有定義,因此使用時(shí)只需加入相應的頭文件即可。 TriMedia軟件架構中,設備庫由板級歡欣鼓舞。板級庫以板級支持包(BSP)的形式實(shí)現,BSP函數由設備庫調用,它負責完成對硬件設備的所有初始化設備,高層軟件不必深入到底層硬件設備細節就能完成對音視頻等硬件設備的編程。BSP允許設計者對底層的接口硬件設備(如Audio D/A)改動(dòng),而不必改動(dòng)該設備的上層編程。如要使用AD1847作為音頻A/D、D/A設備,僅需要修改該部分的BSP即可。 在TriMedia SDE2.2中已經(jīng)附帶很多典型器件的BSP,如SAA7113、SAA7121、UDA1344等。開(kāi)發(fā)音視頻應用程序時(shí),只需要調用設備庫API、設置好數據緩沖區指針、指定相應的斷服務(wù)程序來(lái)處理音視頻設備接口到主存儲器SDRAM的數據傳遞即可。用戶(hù)也可以根據具體硬件自己開(kāi)發(fā)BSP。 3 面向pSOS網(wǎng)絡(luò )驅動(dòng)設計與網(wǎng)絡(luò )編程模型 網(wǎng)絡(luò )設備的驅動(dòng)程序,按照網(wǎng)絡(luò )協(xié)議棧分層概念,在這其將其稱(chēng)為網(wǎng)絡(luò )接口(Network Interface,簡(jiǎn)稱(chēng)NI),其主要功能是其將最底層的物理網(wǎng)絡(luò )細節和上層應用程序隔離開(kāi),編程時(shí)用考慮網(wǎng)絡(luò )硬件、網(wǎng)絡(luò )傳輸介質(zhì)和網(wǎng)絡(luò )拓撲等。 在TriMedia軟件架構中,可以將網(wǎng)絡(luò )驅動(dòng)設計成pSOS網(wǎng)絡(luò )部件pNA+訪(fǎng)問(wèn)網(wǎng)絡(luò )接口。這樣設計的優(yōu)點(diǎn)是:上層軟件可以使用pSOS系統的pNA+軟件部件豐富的系統調用函數,這些函數不但可以操作網(wǎng)絡(luò )接口,而且可以操作套節字(Socket)進(jìn)行高級TCP/IP網(wǎng)絡(luò )編程,而不需用軟件來(lái)實(shí)現TCP/IP協(xié)議棧。 本節內容旨在論述基本pNA+部件的網(wǎng)絡(luò )接口設計和網(wǎng)絡(luò )編程的基本概念模型,對其中存儲配置管理沒(méi)有作很多具體介紹。論述時(shí)按照由底層到高層的順序進(jìn)行。 3.1 pSOS簡(jiǎn)介及TriMedia SDE對pSOS的支持 pSOS系統是一個(gè)模塊化、高性能的實(shí)時(shí)操作系統,它提供了一個(gè)基于開(kāi)放系統標準的多任務(wù)環(huán)境。PSOS系統采用模塊化結構,圍繞pSOS實(shí)時(shí)多任務(wù)內核,集成了基于標準結構的各種功能模塊。其系統架構主要由實(shí)時(shí)多內核pSOS+、多任務(wù)及多處理器的內核pSOS+m、TCP/IP管理部件pNA+、遠程過(guò)程調用部件pRPC+、文件系統管理部件pHILE+、ANSI C標準庫部件pRPEC+等組成。 TriMedia在得到pSOS系統開(kāi)發(fā)商集成系統公司(IIS)許可權的前提下,已經(jīng)對pSOS進(jìn)行了移植和標準化,并在TriMedia SDE中發(fā)布,因此使用時(shí)不需要獨立安裝。在TriMedia軟件架構中,pSOS也是通過(guò)庫鏈接到應用程序中。pSOS內核的配置通過(guò)包含頭文件(sys_conf.h)的形式來(lái)完成,頭文件和內核編譯后形成pSOS板級支持包,即pSOS BSP。 3.2 在系統中設計面向pNA+服務(wù)的網(wǎng)絡(luò )接口 網(wǎng)絡(luò )接口提供pNA對網(wǎng)絡(luò )的訪(fǎng)問(wèn),并將其與物理網(wǎng)絡(luò )隔離開(kāi)來(lái)。一個(gè)pNA+節點(diǎn)可以連接一到多個(gè)網(wǎng)絡(luò )接口,每個(gè)網(wǎng)絡(luò )接口都分配獨立的IP地址和接口號。 在設計時(shí),網(wǎng)絡(luò )接口須為pNA+提供7種不同的網(wǎng)絡(luò )接口功能調用,在表2中將其列出。 表2 網(wǎng)絡(luò )接口功能 服 務(wù) 功能號 功能描述 NI_INIT 1 初始化網(wǎng)絡(luò )接口 NI_GETPKB 2 分配網(wǎng)絡(luò )接口包緩沖區 NI_RETPKB 3 返回網(wǎng)絡(luò )接口包緩沖區 NI_SEND 4 網(wǎng)絡(luò )接口發(fā)送包 NI_BROADCAST 5 網(wǎng)絡(luò )接口廣播包 NI_POLL 6 查詢(xún)包收發(fā)及緩沖區狀態(tài) NI_IOCTL 7 執行I/O控制 (1)幾種接口功能詳細說(shuō)明 NI_INIT:在pNA+初始化時(shí),自動(dòng)調用該功能,也可以通過(guò)pNA+的系統調用add_ni()來(lái)激活該功能。在NI_INIT中初始化網(wǎng)絡(luò )硬件、包緩沖池,設置網(wǎng)絡(luò )接口的中斷服務(wù)程序入口,并保存pNA+傳遞的Announce_Packet入口參數(包接收通知處理函數入口)及一些其他網(wǎng)絡(luò )接口參數; NI_POLL:該功能用來(lái)查詢(xún)網(wǎng)絡(luò )是否有接收包,當有接收包時(shí),它通過(guò)Announce_Packet入口點(diǎn)將包傳遞到pNA+; NI_IOCTL:該功能通過(guò)pNA+傳遞的不同命令執行網(wǎng)絡(luò )的I/O控制操作,主要有調協(xié)IP地址、多播主機地址的增加、刪除等。 另外幾個(gè)接口功能不再詳細介紹。 (2)網(wǎng)絡(luò )接口功能調用接口主函數NIMain設計 上述各種網(wǎng)絡(luò )接口功能通過(guò)一個(gè)接口主函數調用,它提供pNA+和網(wǎng)絡(luò )接口之間功能調用的接口。 調用時(shí),pNA+必須為NIMain函數提供兩個(gè)參數:一個(gè)整型的功能號;一個(gè)定義為nientry聯(lián)合體指針的網(wǎng)絡(luò )接口參數。其中nientry是由niinit、nigetpkb…niioctl等結構體構成的聯(lián)合,分別對應上述各功能的參數結構。所以,NIMain函數的一般形式: long NIMain(int function,union nientry *p) {/*注:NI_INIT到NI_OCTL常數及本文所用到各種數據結構及系統函數在TriMedia SDE pSOS頭文件pna.h中定義*/ int rc; switch(function) { /*NI_INIT調用處理*/ /*網(wǎng)絡(luò )芯片及緩沖區初始化,記錄網(wǎng)絡(luò )接口號...*/ Lan_chip_Init();InitBuffer(); number=p->niinit.if_num; ni_init(); … case NI_GETPKB:… /*NI_GETPKB調用處理*/ case NI_RETPKB:… /*NI_RETPKB調用處理*/ case NI_SEND:… /*NI_SEND調用處理*/ case NI_BROADCASE:… /*NI_BROADCAST調用處理*/ case NI_POLL: /*NI_POLL調用處理*/ case NI_IOCTL:… /*NI_IOCTL調用處理*/ default:… /*返回錯誤代碼*/ } return rc; } 可以看出,pNA+在調用網(wǎng)絡(luò )接口功能時(shí),只需傳遞參數指針,其具體動(dòng)作都是由NIMain函數完成,NIMain起到了隔離網(wǎng)絡(luò )底怪和pNA+的作用。 (3)pSOS系統中加入網(wǎng)絡(luò )接口的方法 在pSOS系統添加網(wǎng)絡(luò )接口增添其它的設備驅動(dòng)程序類(lèi)似,采用InstallNi函數完成。其函數定義格式如下面程序片段所示: struct ni_init *pna_Init; /*用于傳入pNA+配置表的nc_nni字段*/ void InstallNi (int (*entry)(),int ipadd,int mtu,int hwalen, int flags,int subnetaddr,int dstipaddr) { pna_Init ->entry=(int (*)())entry;/*NI接口函數入口*/ pna_Init ->ipadd=htonl((ULONG)ipadd); /*IP地址*/ pna_Init ->mtu=ntu; /*大傳輸量,以太網(wǎng)為1518字節*/ pna_Init ->hwalen=hwalen; /*硬件地址長(cháng)度,以太網(wǎng)為6*/ pna_Init ->flags=flags; /*接口標志*/ /*子網(wǎng)掩碼、目的IP、缺省變量*/ ni_ptr->subnetaddr=htonl((ULONG)subnetaddr); ni_ptr->dstipaddr=htonl((ULONG)dstipaddr); ni_ptr->reserved[0]=0; } 3.3 pNA+部件的配置及初始化 pSOS系統中,各個(gè)部件的配置都定義成一個(gè)結構體,并存放在結點(diǎn)配置表中(Node Configuration Table),結點(diǎn)配置表可以駐留在系統存儲區的任意地址處。 PNA+部件配置表結構為pNAConfigTable。它用于定義pNA+所需的硬件和特定應用信息。如pNA+代碼入口、網(wǎng)絡(luò )接口初始化信息、初始ARP表、套字節數量、pNA后臺程序優(yōu)先級等。 PNA+使用時(shí),需要通過(guò)pNA+配置表結構進(jìn)行初始化。在初始化設置網(wǎng)絡(luò )接口時(shí),需調用前面所述的InstallNi,調用時(shí)必須將其第一個(gè)函數指針變量參數entry用NIMain代入,系統自動(dòng)執行NI_INIT功能調用,使pNA+和特定網(wǎng)絡(luò )接口實(shí)例關(guān)聯(lián)起來(lái)。 應用程序在進(jìn)行pSOS系統初始化時(shí),需要將pNA+配置表加入結點(diǎn)配置表,以后就可以通過(guò)pNA+訪(fǎng)問(wèn)網(wǎng)絡(luò )接口了。 3.4 使用pNA+部件進(jìn)行網(wǎng)絡(luò )編程 pNA+部件提供了pSOS系統對TCP/IP協(xié)議的支持。PNA+可以通過(guò)工業(yè)標準網(wǎng)絡(luò )編程套節字Socket對TCP/UDP、IP、ICMP、IGMP、ARP等進(jìn)行訪(fǎng)問(wèn)。PNA+還提供NFS、Telne、RPC(遠程過(guò)程調用)的支持?梢(jiàn)pNA+可以滿(mǎn)足絕大多數的網(wǎng)絡(luò )編程。 pNA+的軟件架構可用圖3表示。 pNA+定義了很多系統調用函數進(jìn)用戶(hù)編程使用,包括與Windows Socket編程完全兼容的眾多Socket API函數,如:socket、close、bind、recvfrom、sendto、listen、accept、connect等。另外,還定義了套節字Socket的屬性選項設置和控制、消息塊的分配、網(wǎng)絡(luò )接口國入等API函數,如setsockopt、ioctl、pna_allocb、add_in等。 4 系統應用 設計的目的是將本系統用于銀行監控系統中,作為多媒體音視頻數據采集和網(wǎng)絡(luò )傳輸的終端服務(wù)器。這種基于嵌入式技術(shù)監控系統的優(yōu)點(diǎn)是:由于這種系統的硬件是一個(gè)與處理和操作系統捆綁較為緊密、功能專(zhuān)一、專(zhuān)門(mén)設計的獨立設備,不像插卡系統那樣受通用計算機系統中其它軟硬件的影響,因此性能更穩定,且便于安裝,省掉各種復雜的電纜,配置簡(jiǎn)單方便,僅設置一個(gè)IP地址即可以使用了。 本系統是基于具有開(kāi)放性的IP網(wǎng)絡(luò )來(lái)實(shí)現,具有通用性。而音視頻數據處理可以按照實(shí)際應用采用各種不同的編解碼標準,如MPEG、JPEG、H.263等。它可以用于多媒體遠程監控系統、Web Camera(網(wǎng)絡(luò )攝像機)、視頻服務(wù)器、可視電話(huà)、視頻會(huì )議終端等。 |