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