《電子技術(shù)應用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > TM1300嵌入式多媒体网络通信系统的设计与实现

TM1300嵌入式多媒体网络通信系统的设计与实现

2008-08-12
作者:操 勇, 毛 勇

  摘? 要: 提出了一種利用TriMedia嵌入式微處理器TM1300為CPU的多媒體網(wǎng)絡通信系統(tǒng)的整體硬件設計方案。介紹了利用設備庫和BSP分層概念在系統(tǒng)中音視頻" title="音視頻">音視頻外設" title="外設">外設編程的應用,重點介紹基于pSOS實時操作系統(tǒng)網(wǎng)絡部件pNA+的網(wǎng)絡驅(qū)動程序的基本設計方法及網(wǎng)絡編程模型。

  關(guān)鍵詞: 嵌入式微處理器? 實時操作系統(tǒng)? BSP(Board Support Package)? 網(wǎng)絡驅(qū)動

?

  多媒體技術(shù)與網(wǎng)絡技術(shù)的有機結(jié)合滿足信息化社會人們對各種信息的大量需求。網(wǎng)絡多媒體技術(shù)的迅速發(fā)展,加速了多種網(wǎng)絡多媒體技術(shù)的應用,如:視頻會議系統(tǒng)、數(shù)字視頻監(jiān)控系統(tǒng)、多媒體電子郵件、視頻點播(VOD)、遠程多媒體數(shù)據(jù)庫等[1]。

  隨著微處理器技術(shù)的發(fā)展和嵌入式操作系統(tǒng)的日益廣泛的應用,嵌入式系統(tǒng)以其高速響應、高度自動化、功能易于擴展等獨特優(yōu)勢已成為計算機工業(yè)新的增長熱點。而且,嵌入式設備接入Internet已經(jīng)成為不可避免的趨勢,并顯示出美好的應用前景。嵌入式系統(tǒng)在多媒體通信應用領(lǐng)域同樣得到了很好的應用,各種基于嵌入式Internet技術(shù)的視頻服務器、多媒體遠程監(jiān)控系統(tǒng)已經(jīng)成功應用于多種場合。

  本文論述一種具有網(wǎng)絡通信和多媒體處理功能的嵌入式系統(tǒng)的設計實現(xiàn)方法。

1 系統(tǒng)總體框架設計

  基本的多媒體通信系統(tǒng)一般應該具有各種音視頻輸入輸出設備,并具有高速網(wǎng)絡通信功能。本系統(tǒng)采用Philips公司TriMedia系列的TM1300媒體處理器作為主核來構(gòu)造。其系統(tǒng)設計的各個功能模塊如圖1所示。

?

1.1 TM1300媒體處理器簡介及其系統(tǒng)設計特點

  TM1300是一種具有高質(zhì)量數(shù)字視頻和音頻應用處理能力的媒體處理器[3]。它擁有強大的超長指令字(VLIW)核DSP CPU,獨立于DSP CPU的DMA方式工作的音視頻輸入輸出接口,32位高帶寬數(shù)據(jù)總線將所有的片上模塊單元連接,如PCI、SDRAM、圖像協(xié)處理器(ICP)等,使數(shù)據(jù)處理極為快速方便。另外,其強大的面向多媒體應用的指令系統(tǒng)和豐富的庫函數(shù)使開發(fā)者能快速完成軟件編程。

  TM1300的PCI/XIO接口控制和復用邏輯使其可以用于為PC機環(huán)境設計的PCI音視頻處理加速卡,也可以用于獨立工作的嵌入式系統(tǒng)[3]。在系統(tǒng)設計中,既可以訪問PCI外設,如PCI網(wǎng)絡接口" title="網(wǎng)絡接口">網(wǎng)絡接口芯片,又可以訪問各種8位外設,如ROM、8位MCU、程序存儲器Flash Memory等。

1.2 系統(tǒng)框圖說明及芯片典型選型

  本系統(tǒng)是一種嵌入式系統(tǒng),它能完成視頻和音頻數(shù)據(jù)的采集與輸出功能,并能通過高速網(wǎng)絡傳遞壓縮編碼后的音視頻數(shù)據(jù)流。TM1300具有強大的多媒體數(shù)據(jù)處理能力,它在系統(tǒng)中可以完成音視頻數(shù)據(jù)的壓縮編碼或解碼,同時處理網(wǎng)絡數(shù)據(jù)的收發(fā),并可以通過pSOS實時操作系統(tǒng)協(xié)調(diào)和調(diào)度整個系統(tǒng)的任務,從而形成強大的多媒體音視頻數(shù)據(jù)處理和傳輸系統(tǒng)。

  當然,本系統(tǒng)框圖僅旨在一般意義上的系統(tǒng),在實際應用中可以按照具體要求裁剪或添加其他外設,如UART控制器、Modem控制器模塊等,使系統(tǒng)具有用戶特定的功能。

  (1)TM1300的視頻輸入接口提供8~10位視頻A/D轉(zhuǎn)換接口,其最高采樣率可以達81MHz??梢圆捎肞hilips公司SAA7113、SAA7114等視頻解碼芯片(Video Decoder)來完成系統(tǒng)各種格式的視頻信號采集。

  (2)視頻輸出接口提供8位的視頻數(shù)據(jù)輸出口,可以完成解碼后的視頻數(shù)據(jù)輸出,可以采用Philips公司的視頻編碼芯片(Video Encoder)完成視頻數(shù)據(jù)的D/A轉(zhuǎn)換。

  (3)音頻信號采集和輸出的數(shù)據(jù)都是通過TM1300的標準I2S總線接口來傳輸?shù)摹?梢杂肞hilips公司的UDA1344音頻編解碼器(Audio Codec)完成音頻數(shù)據(jù)的A/D和D/A轉(zhuǎn)換。

  (4)基于網(wǎng)絡接口芯片可以采用常用的Realtek公司的RTL8139C,它是具有10/100Mbps自適應功能的以太網(wǎng)收發(fā)控制器,是目前應用最為廣泛的一種網(wǎng)絡接口芯片。設計時,應為其配置啟動EEPROM,如93LC46、93LC56等。

  (5)啟動EEPROM一般使用符合I2C的器件,如24LC16、24LC32等。因為除了要存放系統(tǒng)啟動設置信息外,還要存放用于系統(tǒng)自舉L1代碼,EEPROM不得小于2K字節(jié)空間。EEPROM具體內(nèi)容格式參照TM1300芯片資料文檔。

  特別值得注意,設計本系統(tǒng)PCI總線與設計PCI卡時不同的是,TM1300使用PCI總線訪問時總線仲裁需仲裁器。這是因為在基于PC機主板和PCI橋接芯片上已經(jīng)有總線仲裁邏輯,不需要另外再作處理。嵌入的TM1300系統(tǒng)則需要仲裁來處理PCI總線的請求和應答,具體的邏輯設計應參考PCI規(guī)范相關(guān)內(nèi)容。另外,嵌入式系統(tǒng)需要通過JTAG口進行調(diào)試和仿真,并要在系統(tǒng)中加入程序代碼存儲器Boot Flash。

2 音視頻外設編程的分層模型及應用

  系統(tǒng)中的視頻A/D、D/A芯片單元通常連接在TM1300的I2C總線上,其初始化和設置是通過I2C總線訪問其內(nèi)部寄存器實現(xiàn),音頻處理芯片則通過I2S接口總線與TM1300連接。TM1300正是通過這些總線對其進行初始化設置。

  在軟件上,TriMedia層次化軟件架構(gòu)" title="軟件架構(gòu)">軟件架構(gòu)TSA引入設備庫層(Device Library Layer)概念,該層為板級" title="板級">板級庫到應用程序之間提供了一個公共接口。設備庫輸出兩個接口,其架構(gòu)由圖2所示。

?

????在設備庫中,基本的API調(diào)用函數(shù)和功能描述在表1中給出。

?

  例如,視頻輸出的設備庫函數(shù)有voCapabilities、voOpen、voInstanceSetup等。在TriMedia的軟件開發(fā)環(huán)境TriMedia SDE 2.2對音視頻等設備庫函數(shù)都有定義,因此使用時只需加入相應的頭文件即可。

  TriMedia軟件架構(gòu)中,設備庫由板級庫支持。板級庫以板級支持包(BSP)的形式實現(xiàn),BSP函數(shù)由設備庫調(diào)用,它負責完成對硬件設備的所有初始化設置,高層軟件不必深入到底層硬件設備的細節(jié)就能完成對音視頻等硬件設備的編程。BSP允許設計者對底層的接口硬件設備(如Audio D/A)改動,而不必改動該設備的上層編程[3]。如要使用AD1847作為音頻A/D、D/A設備,僅需要修改該部分的BSP即可。

  在TriMedia SDE2.2中已經(jīng)附帶很多典型器件的BSP,如SAA7113、SAA7121、UDA1344等。開發(fā)音視頻應用程序時,只需要調(diào)用設備庫API、設置好數(shù)據(jù)緩沖區(qū)指針、指定相應的中斷服務程序來處理音視頻設備接口到主存儲器SDRAM的數(shù)據(jù)傳遞即可。用戶也可以根據(jù)具體硬件自己開發(fā)BSP。

3 面向pSOS網(wǎng)絡驅(qū)動設計與網(wǎng)絡編程模型

  網(wǎng)絡設備的驅(qū)動程序,按照網(wǎng)絡協(xié)議棧分層概念,在這里將其稱為網(wǎng)絡接口(Network Interface,簡稱NI),其主要功能是其將最底層的物理網(wǎng)絡細節(jié)和上層應用程序隔離開,編程時不用考慮網(wǎng)絡硬件、網(wǎng)絡傳輸介質(zhì)和網(wǎng)絡拓撲等。

  在TriMedia軟件架構(gòu)中,可以將網(wǎng)絡驅(qū)動設計成pSOS網(wǎng)絡部件pNA+訪問網(wǎng)絡接口。這樣設計的優(yōu)點是:上層軟件可以使用pSOS系統(tǒng)的pNA+軟件部件豐富的系統(tǒng)調(diào)用函數(shù),這些函數(shù)不但可以操作網(wǎng)絡接口,而且可以操作套節(jié)字(Socket)進行高級TCP/IP網(wǎng)絡編程,而不需用軟件來實現(xiàn)TCP/IP協(xié)議棧。

  本節(jié)內(nèi)容旨在論述基于pNA+部件的網(wǎng)絡接口設計和網(wǎng)絡編程的基本概念模型,對其中存儲配置管理沒有作很多具體介紹。論述時按照由底層到高層的順序進行。

3.1 pSOS簡介及TriMedia SDE對pSOS的支持

  pSOS系統(tǒng)是一個模塊化、高性能的實時操作系統(tǒng),它提供了一個基于開放系統(tǒng)標準的多任務環(huán)境。pSOS系統(tǒng)采用模塊化結(jié)構(gòu),圍繞pSOS實時多任務內(nèi)核,集成了基于標準結(jié)構(gòu)的各種功能模塊。其系統(tǒng)架構(gòu)主要由實時多內(nèi)核pSOS+、多任務及多處理器的內(nèi)核pSOS+m、TCP/IP管理部件pNA+、遠程過程調(diào)用部件pRPC+、文件系統(tǒng)管理部件pHILE+、ANSI C標準庫部件pRPEC+等組成。

  TriMedia在得到pSOS系統(tǒng)開發(fā)商集成系統(tǒng)公司(IIS)許可權(quán)的前提下,已經(jīng)對pSOS進行了移植和標準化,并在TriMedia SDE中發(fā)布,因此使用時不需要獨立安裝。在TriMedia軟件架構(gòu)中,pSOS也是通過庫鏈接到應用程序中。pSOS內(nèi)核的配置通過包含頭文件(sys_conf.h)的形式來完成,頭文件和內(nèi)核編譯后形成pSOS板級支持包,即pSOS BSP[2]。

3.2 在系統(tǒng)中設計面向pNA+服務的網(wǎng)絡接口

  網(wǎng)絡接口提供pNA對網(wǎng)絡的訪問,并將其與物理網(wǎng)絡隔離開來。一個pNA+節(jié)點可以連接一到多個網(wǎng)絡接口,每個網(wǎng)絡接口都分配獨立的IP地址和接口號[4]。

  在設計時,網(wǎng)絡接口須為pNA+提供7種不同的網(wǎng)絡接口功能調(diào)用,在表2中將其列出。

?

  (1)幾種接口功能詳細說明

  NI_INIT:在pNA+初始化時,自動調(diào)用該功能,也可以通過pNA+的系統(tǒng)調(diào)用add_ni()來激活該功能[4]。在NI_INIT中初始化網(wǎng)絡硬件、包緩沖池,設置網(wǎng)絡接口的中斷服務程序入口,并保存pNA+傳遞的Announce_Packet入口參數(shù)(包接收通知處理函數(shù)入口)及一些其他網(wǎng)絡接口參數(shù);

  NI_POLL:該功能用來查詢網(wǎng)絡是否有接收包,當有接收包時,它通過Announce_Packet入口點將包傳遞到pNA+;

NI_IOCTL:該功能通過pNA+傳遞的不同命令執(zhí)行網(wǎng)絡的I/O控制操作,主要有設置IP地址、多播主機地址的增加、刪除等。

  另外幾個接口功能不再詳細介紹。

  (2)網(wǎng)絡接口功能調(diào)用接口主函數(shù)NIMain設計

  上述各種網(wǎng)絡接口功能通過一個接口主函數(shù)調(diào)用,它提供pNA+和網(wǎng)絡接口之間功能調(diào)用的接口。

調(diào)用時,pNA+必須為NIMain函數(shù)提供兩個參數(shù):一個整型的功能號;一個定義為nientry聯(lián)合體指針的網(wǎng)絡接口參數(shù)。其中nientry是由niinit、nigetpkb…niioctl等結(jié)構(gòu)體構(gòu)成的聯(lián)合,分別對應上述各功能的參數(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)

??????? {

  case NI_INIT?押???????? /*NI_INIT調(diào)用處理*/

  /*網(wǎng)絡芯片及緩沖區(qū)初始化,記錄網(wǎng)絡接口號...*/

????????????? 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: ...????????????????? /*返回錯誤代碼*/

   }

????? return? rc;

  }

  可以看出,pNA+在調(diào)用網(wǎng)絡接口功能時,只需傳遞參數(shù)指針,其具體動作都是由NIMain函數(shù)完成,NIMain起到了隔離網(wǎng)絡底層和pNA+的作用。

  (3)pSOS系統(tǒng)中加入網(wǎng)絡接口的方法

  在pSOS系統(tǒng)添加網(wǎng)絡接口與增添其它的設備驅(qū)動程序類似,采用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 = mtu;??        /*大傳輸量,以太網(wǎng)為1518字節(jié)*/

????????????? pna_Init ->hwalen = hwalen;      /*硬件地址長度,以太網(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系統(tǒng)中,各個部件的配置都定義成一個結(jié)構(gòu)體,并存放在結(jié)點配置表中(Node Configuration Table),結(jié)點配置表可以駐留在系統(tǒng)存儲區(qū)的任意地址處。

  PNA+部件配置表結(jié)構(gòu)為pNAConfigTable。它用來定義pNA+所需的硬件和特定應用信息。如pNA+代碼入口、網(wǎng)絡接口初始化信息、初始ARP表、套節(jié)字數(shù)量、pNA后臺程序優(yōu)先級等[4]

  pNA+使用時,需要通過pNA+配置表結(jié)構(gòu)進行初始化。在初始化設置網(wǎng)絡接口時,需調(diào)用前面所述的InstallNi,調(diào)用時必須將其第一個函數(shù)指針變量參數(shù)entry用NIMain代入,系統(tǒng)自動執(zhí)行NI_INIT功能調(diào)用,使pNA+和特定網(wǎng)絡接口實例關(guān)聯(lián)起來。

應用程序在進行pSOS系統(tǒng)初始化時,需要將pNA+配置表加入結(jié)點配置表,以后就可以通過pNA+訪問網(wǎng)絡接口了。

3.4 使用pNA+部件進行網(wǎng)絡編程

  pNA+部件提供了pSOS系統(tǒng)對TCP/IP協(xié)議的支持。pNA+可以通過工業(yè)標準網(wǎng)絡編程套節(jié)字Socket對TCP/UDP、IP、ICMP、IGMP、ARP等進行訪問。pNA+還提供NFS、Telne、RPC(遠程過程調(diào)用)的支持[5]??梢妏NA+可以滿足絕大多數(shù)的網(wǎng)絡編程。

pNA+的軟件架構(gòu)可用圖3表示。

?

  pNA+定義了很多系統(tǒng)調(diào)用函數(shù)供用戶編程使用,包括與Windows Socket編程完全兼容的眾多Socket API函數(shù),如:socket、close、bind、recvfrom、sendto、listen、accept、connect等。另外,還定義了套節(jié)字Socket的屬性選項設置和控制、消息塊的分配、網(wǎng)絡接口加入等API函數(shù),如setsockopt、ioctl、pna_allocb、add_in等。

4 系統(tǒng)應用

  設計的目的是將本系統(tǒng)用于銀行監(jiān)控系統(tǒng)中,作為多媒體音視頻數(shù)據(jù)采集和網(wǎng)絡傳輸?shù)慕K端服務器。這種基于嵌入式技術(shù)監(jiān)控系統(tǒng)的優(yōu)點是:由于這種系統(tǒng)的硬件是一個與處理器和操作系統(tǒng)捆綁較為緊密、功能專一、專門設計的獨立設備,不像插卡系統(tǒng)那樣受通用計算機系統(tǒng)中其它軟硬件的影響,因此性能更穩(wěn)定,且便于安裝,省掉各種復雜的電纜,配置簡單方便,僅設置一個IP地址即可以使用了。

  本系統(tǒng)是基于具有開放性的IP網(wǎng)絡來實現(xiàn)的,具有通用性。而音視頻數(shù)據(jù)處理可以按照實際應用采用各種不同的編解碼標準,如MPEG、JPEG、H.263等。它可以用于多媒體遠程監(jiān)控系統(tǒng)、Web Camera(網(wǎng)絡攝像機)、視頻服務器、可視電話、視頻會議終端等。

?

參考文獻

1 魯士文.多媒體網(wǎng)絡及通信技術(shù). 北京:清華大學出版社, 2002

2 TriMedia Application Book3.software architecture, 2000

3 TM-1300 Data Book. Philips Electronics North America?Corporation, 1999

4 pSOSystem Programmer's Reference. Integrated Systems. Inc. January 1999

5 pSOSystem System Concepts.Integrated Systems.Inc. January? 1999
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容