在機(jī)頂盒中的應(yīng)用
摘 要:本文闡述了pSOS操作系統(tǒng)中的pNA+模塊在機(jī)頂盒中的具體應(yīng)用方法。首先介紹了pNA+的結(jié)構(gòu)體系,接著詳細(xì)分析了sc2000與8019的接口,最后介紹了軟件流程和實(shí)際應(yīng)用。
關(guān)鍵詞:pSOS操作系統(tǒng);pNA+模塊;機(jī)頂盒
引言
美國集成系統(tǒng)公司(ISI)開發(fā)的嵌入式實(shí)時多任務(wù)操作系統(tǒng)pSOS集成了一整套嵌入式軟件模塊、工具和服務(wù)。它包括pSOS+內(nèi)核、pNa+ TCP/IP協(xié)議支持包、pRISM集成開發(fā)環(huán)境、pROBE+調(diào)試代理等部分。pSOS+內(nèi)核作為操作系統(tǒng)的核心,負(fù)責(zé)執(zhí)行所請求的服務(wù);安排、管理和分配資源;協(xié)調(diào)多個異步活動。本文主要討論pNA+模塊在機(jī)頂盒中的應(yīng)用。
pNA+模塊概述
pNA+的結(jié)構(gòu)體系如圖1所示。網(wǎng)絡(luò)接口(NI)層將IP層與低層網(wǎng)絡(luò)介質(zhì)的物理特性隔離開,它依賴于硬件。網(wǎng)絡(luò)接口并不屬于pNA+,而是pNA+與用戶驅(qū)動之間的接口。
IP層用于傳輸數(shù)據(jù)塊,這種數(shù)據(jù)塊被稱作數(shù)據(jù)報。該層提供了長數(shù)據(jù)報通過網(wǎng)絡(luò)或互聯(lián)網(wǎng)傳輸時,對數(shù)據(jù)包進(jìn)行路由、分段以及重組的技術(shù)。
ARP用來建立在網(wǎng)絡(luò)物理地址和IP地址的映射關(guān)系。
傳輸層支持兩種傳輸協(xié)議,TCP以及用戶數(shù)據(jù)報協(xié)議(UDP),它們在IP之上。除此以外,還有互聯(lián)網(wǎng)控制報文協(xié)議(ICMP)以及Internet組管理協(xié)議(IGMP)。ICMP用于錯誤報告以及其他網(wǎng)絡(luò)管理任務(wù)。它在IP層之上,但在邏輯上仍然是IP的一部分,并且通常不能被用戶訪問。
socket層提供用戶編程接口。該層提供訪問Internet協(xié)議所需的具有重入屬性的各種過程、服務(wù)程序;它遵循UNIX 4.3 BSD socket接口語法的工業(yè)標(biāo)準(zhǔn)。
網(wǎng)絡(luò)接口
pNA+模塊通過網(wǎng)絡(luò)接口來訪問網(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通過INT3向SC2000的GPIO29發(fā)送中斷請求,SC2000通過WRn(A9)和RDn(C10) 向RTL8019AS的IOW和IOR發(fā)送讀或?qū)懼噶?,SC2000通過CSn2向RTL8019AS的AEn發(fā)送片選指令。sc2000與8019的接口圖2所示。
e-bus是一個具有32位數(shù)據(jù)能力54M總線時鐘的總線,通過合理的配置,可以使其滿足8019所需要的時序要求。其配置主要涉及將8019配置到哪一段地址空間,e-bus對該段地址空間操作的時序。網(wǎng)絡(luò)接口的結(jié)構(gòu)如圖3所示。
pNA+對驅(qū)動程序的調(diào)用全部通過網(wǎng)絡(luò)接口進(jìn)行,而驅(qū)動程序向pNA+傳送的所有數(shù)據(jù)都是通過AP(Announce Point)進(jìn)行的。AP是一個指向pNA+內(nèi)部包接收處理程序的指針,它在網(wǎng)絡(luò)接口初始化的時候由pNA+賦予,同時pNA+還會賦予驅(qū)動程序一個指向消息管理函數(shù)的指針,驅(qū)動程序通過該指針申請和釋放消息數(shù)據(jù)結(jié)構(gòu)。
網(wǎng)絡(luò)接口在驅(qū)動程序中通過NiLan(ULONG fn_code, union nientry *p)函數(shù)實(shí)現(xiàn)。該函數(shù)帶有兩個參數(shù),功能號fn_code和指向參數(shù)控制塊的指針p。功能號fn_code表示pNA+該次調(diào)用要實(shí)現(xiàn)的功能,功能號從1到9,所對應(yīng)的服務(wù)依次為:
1:NI_INIT,網(wǎng)絡(luò)接口初始化;
2:NI_GETPKB,向緩沖池申請獲得一個數(shù)據(jù)包緩沖;
3:NI_RETPKB,返還一個數(shù)據(jù)包緩沖給緩沖池;
4:NI_SEND,向驅(qū)動程序申請發(fā)送一個數(shù)據(jù)包;
5:NI_BROADCAST,向驅(qū)動程序申請廣播一個數(shù)據(jù)包;
6:NI_POLL,輪詢;
7:NI_IOCTL,向驅(qū)動程序申請執(zhí)行對網(wǎng)卡的控制;
8:NI_STOP,在本驅(qū)動中沒有執(zhí)行任何操作,可以根據(jù)需要添加;
9:NI_SETUP,建立網(wǎng)絡(luò)接口。
本應(yīng)用中,pNA+模塊和網(wǎng)絡(luò)接口的數(shù)據(jù)交換采取消息方式,沒有用到NI_GETPKB和NI_RETPKB,NI_IOCTL可以執(zhí)行對8019的控制,但可以根據(jù)具體要求添加。
應(yīng)用程序的編寫
應(yīng)用程序通過socket層與pNA+模塊進(jìn)行數(shù)據(jù)交互。根據(jù)socket支持通信的特點(diǎn),可以將socket分為三種類型。
stream socket:使用TCP協(xié)議并提供基于連接的通信服務(wù),當(dāng)數(shù)據(jù)通過流傳輸socket發(fā)送前,必須在它們之間建立連接。
datagram socket:使用UDP協(xié)議并提供無連接的通信服務(wù),不能保證數(shù)據(jù)傳輸?shù)目煽啃浴?BR>raw socket:使用原始socket能使用戶訪問IP層、ICMP層和IGMP層。
本文采用TCP協(xié)議創(chuàng)建stream socket。在應(yīng)用程序間使用stream socket進(jìn)行通信,必須建立服務(wù)器和客戶端,它們對socket的調(diào)用不同。運(yùn)用socket編寫通信應(yīng)用程序的流程如圖4所示。
常用的socket函數(shù)有:
socket過程:創(chuàng)建一個socket并返回一個整型描述符,
descriptor = socket(protofamily,type,protocol);
close過程:告訴系統(tǒng)終止對一個socket的使用,
close(descriptor);
bind過程:服務(wù)器使用bind過程提供協(xié)議端口號,
bind(descriptor,localaddr,addrlen);
listen過程:在說明了協(xié)議端口以后,服務(wù)器必須通過操作系統(tǒng)將這個socket設(shè)置為被動模式以使它能被用來等待客戶的通信,服務(wù)器通過調(diào)用listen過程實(shí)現(xiàn),
listen(descriptor,queuesize);
accept過程:服務(wù)器調(diào)用accept過程來接受請求,
newdescriptor= accept (descriptor,caddress,caddresslen),
該調(diào)用返回一個新描述符,服務(wù)器使用這個新描述符與客戶進(jìn)行通信;
connect過程:客戶使用connect過程與指定服務(wù)器建立連接,
connect(descriptor,saddress,saddresslen);
send,recv過程:收發(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ī)頂盒的下載接口。 在此應(yīng)用中PC機(jī)作為服務(wù)器端,機(jī)頂盒作為客戶端。在服務(wù)器端建立端口2000,等待客戶端請求,一旦客戶端有連接請求,服務(wù)器端將BIN文件發(fā)送給提出請求的客戶端。在客戶端,如果接到下載程序的指令,則建立socket。然后向服務(wù)器端提出連接請求,連接成功后,開始接收數(shù)據(jù),數(shù)據(jù)接收完畢,關(guān)閉連接。如果下載是RAM.BIN,則轉(zhuǎn)去執(zhí)行下載到RAM中的程序;如果是ROM.BIN文件,則將程序?qū)懙紽LASH中,然后轉(zhuǎn)去執(zhí)行新下載的程序。
機(jī)頂盒的以太網(wǎng)接口速度快,同時由于采用TCP連接進(jìn)行數(shù)據(jù)的傳輸,增加了數(shù)據(jù)的可靠性。利用以太接口下載程序,大大提高了程序的調(diào)試速度。
另外,利用帶以太接口的機(jī)頂盒還可以進(jìn)一步開發(fā)成音視頻節(jié)目的轉(zhuǎn)發(fā)機(jī)。
結(jié)語
利用pSOS的pNA+模塊開發(fā)的以太接口機(jī)頂盒,方便開發(fā)人員的開發(fā)調(diào)試,提高了程序的調(diào)試速度。由機(jī)頂盒開發(fā)的音視頻節(jié)目的轉(zhuǎn)發(fā)機(jī)還可以進(jìn)一步使之成為未來家庭的多媒體網(wǎng)關(guān)。隨著我國廣播電視數(shù)字化發(fā)展和數(shù)字電視市場的逐漸成熟,這種類型的機(jī)頂盒將有很好的市場價值?!?/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ò)(原書第二版). 機(jī)械工業(yè)出版社,2001.6
評論