新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 在機(jī)頂盒中的應(yīng)用

在機(jī)頂盒中的應(yīng)用

作者:■ 華中科技大學(xué)電子科學(xué)與技術(shù)系木昌洪 曾祥斌 劉衛(wèi)忠 陶雄飛 王旭升 時(shí)間:2005-04-27 來(lái)源:eaw 收藏

摘    要:本文闡述了中的中的具體應(yīng)用方法。首先介紹了pNA+的結(jié)構(gòu)體系,接著詳細(xì)分析了sc2000與8019的接口,最后介紹了軟件流程和實(shí)際應(yīng)用。
關(guān)鍵詞:;

引言
美國(guó)集成系統(tǒng)公司(ISI)開(kāi)發(fā)的嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)pSOS集成了一整套嵌入式軟件、工具和服務(wù)。它包括pSOS+內(nèi)核、pNa+ TCP/IP協(xié)議支持包、pRISM集成開(kāi)發(fā)環(huán)境、pROBE+調(diào)試代理等部分。pSOS+內(nèi)核作為操作系統(tǒng)的核心,負(fù)責(zé)執(zhí)行所請(qǐng)求的服務(wù);安排、管理和分配資源;協(xié)調(diào)多個(gè)異步活動(dòng)。本文主要討論中的應(yīng)用。

pNA+模塊概述
pNA+的結(jié)構(gòu)體系如圖1所示。網(wǎng)絡(luò)接口(NI)層將IP層與低層網(wǎng)絡(luò)介質(zhì)的物理特性隔離開(kāi),它依賴(lài)于硬件。網(wǎng)絡(luò)接口并不屬于pNA+,而是pNA+與用戶(hù)驅(qū)動(dòng)之間的接口。
IP層用于傳輸數(shù)據(jù)塊,這種數(shù)據(jù)塊被稱(chēng)作數(shù)據(jù)報(bào)。該層提供了長(zhǎng)數(shù)據(jù)報(bào)通過(guò)網(wǎng)絡(luò)或互聯(lián)網(wǎng)傳輸時(shí),對(duì)數(shù)據(jù)包進(jìn)行路由、分段以及重組的技術(shù)。
ARP用來(lái)建立在網(wǎng)絡(luò)物理地址和IP地址的映射關(guān)系。
傳輸層支持兩種傳輸協(xié)議,TCP以及用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP),它們?cè)贗P之上。除此以外,還有互聯(lián)網(wǎng)控制報(bào)文協(xié)議(ICMP)以及Internet組管理協(xié)議(IGMP)。ICMP用于錯(cuò)誤報(bào)告以及其他網(wǎng)絡(luò)管理任務(wù)。它在IP層之上,但在邏輯上仍然是IP的一部分,并且通常不能被用戶(hù)訪問(wèn)。
socket層提供用戶(hù)編程接口。該層提供訪問(wèn)Internet協(xié)議所需的具有重入屬性的各種過(guò)程、服務(wù)程序;它遵循UNIX 4.3 BSD socket接口語(yǔ)法的工業(yè)標(biāo)準(zhǔn)。

網(wǎng)絡(luò)接口
pNA+模塊通過(guò)網(wǎng)絡(luò)接口來(lái)訪問(wèn)網(wǎng)絡(luò)資源,網(wǎng)絡(luò)接口是應(yīng)用pNA+模塊的基礎(chǔ)。
機(jī)頂盒采用以太網(wǎng)接口,接口芯片是Realtek的RTL8019,CPU采用SC2000。RTL8019AS是10M全雙工的ISA以太網(wǎng)接口芯片,工作在8位模式(使用8位數(shù)據(jù)線、5位地址線),掛接在SC2000的e-bus總線上。RTL8019AS通過(guò)INT3向SC2000的GPIO29發(fā)送中斷請(qǐng)求,SC2000通過(guò)WRn(A9)和RDn(C10) 向RTL8019AS的IOW和IOR發(fā)送讀或?qū)懼噶?,SC2000通過(guò)CSn2向RTL8019AS的AEn發(fā)送片選指令。sc2000與8019的接口圖2所示。
e-bus是一個(gè)具有32位數(shù)據(jù)能力54M總線時(shí)鐘的總線,通過(guò)合理的配置,可以使其滿(mǎn)足8019所需要的時(shí)序要求。其配置主要涉及將8019配置到哪一段地址空間,e-bus對(duì)該段地址空間操作的時(shí)序。網(wǎng)絡(luò)接口的結(jié)構(gòu)如圖3所示。
pNA+對(duì)驅(qū)動(dòng)程序的調(diào)用全部通過(guò)網(wǎng)絡(luò)接口進(jìn)行,而驅(qū)動(dòng)程序向pNA+傳送的所有數(shù)據(jù)都是通過(guò)AP(Announce Point)進(jìn)行的。AP是一個(gè)指向pNA+內(nèi)部包接收處理程序的指針,它在網(wǎng)絡(luò)接口初始化的時(shí)候由pNA+賦予,同時(shí)pNA+還會(huì)賦予驅(qū)動(dòng)程序一個(gè)指向消息管理函數(shù)的指針,驅(qū)動(dòng)程序通過(guò)該指針申請(qǐng)和釋放消息數(shù)據(jù)結(jié)構(gòu)。
網(wǎng)絡(luò)接口在驅(qū)動(dòng)程序中通過(guò)NiLan(ULONG fn_code, union nientry *p)函數(shù)實(shí)現(xiàn)。該函數(shù)帶有兩個(gè)參數(shù),功能號(hào)fn_code和指向參數(shù)控制塊的指針p。功能號(hào)fn_code表示pNA+該次調(diào)用要實(shí)現(xiàn)的功能,功能號(hào)從1到9,所對(duì)應(yīng)的服務(wù)依次為:
1:NI_INIT,網(wǎng)絡(luò)接口初始化;
2:NI_GETPKB,向緩沖池申請(qǐng)獲得一個(gè)數(shù)據(jù)包緩沖;
3:NI_RETPKB,返還一個(gè)數(shù)據(jù)包緩沖給緩沖池;
4:NI_SEND,向驅(qū)動(dòng)程序申請(qǐng)發(fā)送一個(gè)數(shù)據(jù)包;
5:NI_BROADCAST,向驅(qū)動(dòng)程序申請(qǐng)廣播一個(gè)數(shù)據(jù)包;
6:NI_POLL,輪詢(xún);
7:NI_IOCTL,向驅(qū)動(dòng)程序申請(qǐng)執(zhí)行對(duì)網(wǎng)卡的控制;
8:NI_STOP,在本驅(qū)動(dòng)中沒(méi)有執(zhí)行任何操作,可以根據(jù)需要添加;
9:NI_SETUP,建立網(wǎng)絡(luò)接口。
本應(yīng)用中,pNA+模塊和網(wǎng)絡(luò)接口的數(shù)據(jù)交換采取消息方式,沒(méi)有用到NI_GETPKB和NI_RETPKB,NI_IOCTL可以執(zhí)行對(duì)8019的控制,但可以根據(jù)具體要求添加。
應(yīng)用程序的編寫(xiě)
應(yīng)用程序通過(guò)socket層與pNA+模塊進(jìn)行數(shù)據(jù)交互。根據(jù)socket支持通信的特點(diǎn),可以將socket分為三種類(lèi)型。
stream socket:使用TCP協(xié)議并提供基于連接的通信服務(wù),當(dāng)數(shù)據(jù)通過(guò)流傳輸socket發(fā)送前,必須在它們之間建立連接。
datagram socket:使用UDP協(xié)議并提供無(wú)連接的通信服務(wù),不能保證數(shù)據(jù)傳輸?shù)目煽啃浴?BR>raw socket:使用原始socket能使用戶(hù)訪問(wèn)IP層、ICMP層和IGMP層。
本文采用TCP協(xié)議創(chuàng)建stream socket。在應(yīng)用程序間使用stream socket進(jìn)行通信,必須建立服務(wù)器和客戶(hù)端,它們對(duì)socket的調(diào)用不同。運(yùn)用socket編寫(xiě)通信應(yīng)用程序的流程如圖4所示。
常用的socket函數(shù)有:
socket過(guò)程:創(chuàng)建一個(gè)socket并返回一個(gè)整型描述符,
descriptor = socket(protofamily,type,protocol);
close過(guò)程:告訴系統(tǒng)終止對(duì)一個(gè)socket的使用,
close(descriptor);
bind過(guò)程:服務(wù)器使用bind過(guò)程提供協(xié)議端口號(hào),
bind(descriptor,localaddr,addrlen);
listen過(guò)程:在說(shuō)明了協(xié)議端口以后,服務(wù)器必須通過(guò)操作系統(tǒng)將這個(gè)socket設(shè)置為被動(dòng)模式以使它能被用來(lái)等待客戶(hù)的通信,服務(wù)器通過(guò)調(diào)用listen過(guò)程實(shí)現(xiàn),
listen(descriptor,queuesize);
accept過(guò)程:服務(wù)器調(diào)用accept過(guò)程來(lái)接受請(qǐng)求,
newdescriptor= accept (descriptor,caddress,caddresslen),
該調(diào)用返回一個(gè)新描述符,服務(wù)器使用這個(gè)新描述符與客戶(hù)進(jìn)行通信;
connect過(guò)程:客戶(hù)使用connect過(guò)程與指定服務(wù)器建立連接,
connect(descriptor,saddress,saddresslen);
send,recv過(guò)程:收發(fā)數(shù)據(jù),
send(descriptor,data,length,flags),recv(descriptor,buffer,length,flags)。

實(shí)際應(yīng)用
在實(shí)際應(yīng)用中,利用以太網(wǎng)接口進(jìn)行機(jī)頂盒程序的下載升級(jí),豐富了機(jī)頂盒的下載接口。   在此應(yīng)用中PC機(jī)作為服務(wù)器端,機(jī)頂盒作為客戶(hù)端。在服務(wù)器端建立端口2000,等待客戶(hù)端請(qǐng)求,一旦客戶(hù)端有連接請(qǐng)求,服務(wù)器端將BIN文件發(fā)送給提出請(qǐng)求的客戶(hù)端。在客戶(hù)端,如果接到下載程序的指令,則建立socket。然后向服務(wù)器端提出連接請(qǐng)求,連接成功后,開(kāi)始接收數(shù)據(jù),數(shù)據(jù)接收完畢,關(guān)閉連接。如果下載是RAM.BIN,則轉(zhuǎn)去執(zhí)行下載到RAM中的程序;如果是ROM.BIN文件,則將程序?qū)懙紽LASH中,然后轉(zhuǎn)去執(zhí)行新下載的程序。
機(jī)頂盒的以太網(wǎng)接口速度快,同時(shí)由于采用TCP連接進(jìn)行數(shù)據(jù)的傳輸,增加了數(shù)據(jù)的可靠性。利用以太接口下載程序,大大提高了程序的調(diào)試速度。
另外,利用帶以太接口的機(jī)頂盒還可以進(jìn)一步開(kāi)發(fā)成音視頻節(jié)目的轉(zhuǎn)發(fā)機(jī)。
  
結(jié)語(yǔ)
利用pSOS的pNA+模塊開(kāi)發(fā)的以太接口機(jī)頂盒,方便開(kāi)發(fā)人員的開(kāi)發(fā)調(diào)試,提高了程序的調(diào)試速度。由機(jī)頂盒開(kāi)發(fā)的音視頻節(jié)目的轉(zhuǎn)發(fā)機(jī)還可以進(jìn)一步使之成為未來(lái)家庭的多媒體網(wǎng)關(guān)。隨著我國(guó)廣播電視數(shù)字化發(fā)展和數(shù)字電視市場(chǎng)的逐漸成熟,這種類(lèi)型的機(jī)頂盒將有很好的市場(chǎng)價(jià)值?!?/P>

參考文獻(xiàn)
1 pSOSystem System Concepts. Integrated Systems Inc,1999
2 [美]Gilbert Held. 以太網(wǎng)(第三版). 人民郵電出版社,1999.8
3 [美]Larry L.Peterson  Brouce S.Dave. 計(jì)算機(jī)網(wǎng)絡(luò)(原書(shū)第二版). 機(jī)械工業(yè)出版社,2001.6



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉