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