摘 要:嵌入式PC安裝一般是嵌入到其他設備或系統中,所以體積、功耗、抗震性等方面的特殊要求使其硬件環境與標準PC有所區別:其內存較小、無硬盤、甚至無顯示功能或由遠端的控制終端進行顯示,因此視窗操作系統的強大功能發揮不出來,則DOS以其內核小、操作簡單、實時性強就在嵌入式PC領域中占有重要地位。然而,DOS操作系統缺乏類似Winsock的API,所以在該系統下設計基于TCP/IP協議的應用程序時難度較大,結合實例闡述基于DOS下的嵌入式系統中實現SOCKET通信的一種具體方法和過程。
關鍵詞:嵌入式系統;DOS;TCP/IP;SOCKET
中圖分類號:TP311 文獻標識碼:B 文章編號:1004373X(2008)1609202
Realization of Embedded PC Based on SOCKET Communication in DOS
ZHOU Yun, LU Qingqi
(Electronic Information Engineering Institute,Xi′an Industrial University,Xi′an,710032,China)
Abstract:The embedded PC installment is generally inserted to other equipment or the system,therefore,volume,power loss,antiknocking property special requests cause its hardware environment and standard PC have the differences:its memory is small,does not have the hard disk,even does not have the demonstration function or carries on the demonstration by the farend control terminal.Windows operating system's formidable function cannot display,then DOS is small by its essence,the simplicity of operator,timeliness hold the important position in the embedded PC domain.However,the DOS operating system lacks similar Winsock API,designs under this system based on TCP/IP agreement application procedure the difficulty is big,this article unifies the example to elaborate inserted in the type system based on DOS to realize the SOCKET correspondence.
Keywords:embedded system;DOS;TCP/IP;SOCKET
1 引 言
隨著科學技術的進步與發展,嵌入式系統在工業控制等領域的應用也越來越廣泛,其功能和規模日益擴大,那么在這信息的時代里,設計具有網絡功能的嵌入式系統是一個重要的發展方向。
嵌入式PC與標準PC架構相同,采用相同的操作系統和軟件開發平臺,如Windows NT,Win CE,Linux,DOS等,但嵌入式PC安裝一般是嵌入到其他設備或系統中,所以體積、功耗、抗震性等方面的特殊要求使其硬件環境與標準PC有所區別:其內存較小、無硬盤、甚至無顯示功能或由遠端的控制終端進行顯示。
因此視窗操作系統的強大功能發揮不出來,那么DOS以其內核小、操作簡單、實時性強就在嵌入式PC領域中占有重要地位。然而,在 DOS操作系統缺少類似Windows環境下WinSock這樣簡單易用的API,使得在DOS下開發編制網絡程序難度大。
2 TCP/IP協議
TCP/IP是一種常用的網絡協議。它是一種通用的網絡互聯技術,即網絡間物理和邏輯的連接。網絡互聯的目標是建立一個同一的、協作的、提供通用服務的通信系統,具體方法是:在低層網絡技術和高層網絡技術之間增加一個中間軟件,這個軟件就是TCP/IP協議。
TCP/IP協議分為4層:鏈路層、網絡層、傳輸層和應用層,其核心部分是傳輸層協議(TCP和UDP)、網絡層協議(IP)和物理接口層,這3層通常在操作系統內核中實現。操作系統內核是不能直接與用戶打交道的,必須通過一定的用戶界面即SOCKET實現。網間應用程序之間的作用方式為客戶機/服務器模式。TCP/IP協議核心與應用程序的關系如圖1所示。
3 SOCKET編程技術[3]
一個完整的網間進程通信需要由2個進程組成,并且只能使用同一種高層協議。因此需要一個5元組來表示,即協議、本地地址、本地端口號、遠地地址、遠地地址號。這樣一個5元組叫作1個相關,即2個協議相同的半相關才能組成一個合適的相關。圖2是一個典型的TCP套接口對話,它采用客戶/服務器模式,由服務器先建立自己的半相關并進入監聽狀態,看是否有與本端口連接的請求。客戶端在建立好自己的半相關后向服務器端發起請求連接,服務器端在檢測到連接后響應連接,這樣就建立了一個連接。

4 DOS下SOCKET的實現
利用NETWORK CLIENT FOR DOS驅動,設計出一組可滿足TCP/IP的數據傳輸需要的函數即可。
4.1 網卡安裝
進行網卡驅動程序的安裝,進行TCP/IP協議的驅動,在config.sys中加入擴充內存的支持,并將DOS駐留到高端。config.sys文件如下:
device=himem.sys
device=c:\\\\dos\\\\emm386.exe noems
dos=high,umb
files=30
buffers=15,0
4.2 網絡編制方法
在工程文件中加入DOSSOCKETS.LIB,程序中加入DSOCKETS.H和DSOCKETSDEF.H。編程中用到的相關函數有:
socket(int,int,int,int far*); 建立套接字
ioctl(int,int,char far*,int far*);控制套接口的操作特性
bind(int,struct sockaddr far*,int,int far*);為套接口聯系一個名字;使服務器指定網絡
接口,從該接口接受連續請求
connect(int,struct sockaddr far*,int,int far*);在兩個套接口之間建立連接
closesock(int,int far*);關閉套接口
send(int,char far*,int,int,struct sockaddr far*,int,int far*);向套接口寫數據
recv(int,char far*,int,int,struct sockaddr far*,int,int
far*);接收套口數據
5 應用實例
系統采用100 Mb/s帶寬的快速以太網、100 Mb/s的交換機及數據庫服務器等。本分系統的
監控主機的硬件平臺采用PC104嵌入式PC機,帶有網卡、多串口卡、1553B卡、DI/O卡、電子盤卡等,軟件平臺為DOS。監控主機對本系統各設備進行實時監控并及時上報管理計算機;利用高速以太網接收信息完成對伺服系統的控制。具體實現為首先利用板卡廠家提供的網絡驅動程序和NETWORK CLIENT FOR DOS驅動TCP/IP,然后利用DOSSOCKETS.LIB編制應用程序,軟件具體實現采用中斷方式接收,接收頻率為20次/s。
主程序如下:
main()
{
…
sd=sockets(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
sa.sin_port=port;//設置本地IP地址
sa.sin_family=AF_INET;
sa.sin_addr.s_addr=ntohl(HOSTIP);
ioctl(sd,FIONBIO,rti);//設置IO模式
bind(sd,(PSOCKADDR)sa,sizeof(sa));
…
old=getvect(0x0c);
setvect(0x0c,cint);
imr=inp(0x21);
outp(0x21,imr0xef);
…
for()
{
與各設備進行數據交換,將公用數據放入公用緩存;
從recvbuf數據組里將接收IP數據包存入緩存;數據處理;
將處理后的數據存入sendbuf數組中;
}
imr=inp(0x21);
outp(0x21,imr|0x10);
setvect(0x0c,old);
closesocket(sd);
}
中斷處理程序:
void interrupt cint()
{
if(符合接收條件)
{ …
lanle=recv(sd,recvbuf”[0],300,0,(struct sockaddr*)recv,recvlen);
…
send(sd,sendbuf[0],50,0,(struct sockaddr*)send,sendlen);
… }
outp(0x20,0x64); }
由此可見,在此驅動下編寫捕獲IP包程序很方便。在創建SOCKET后,將套接字與本地地址綁定就可按需求接受IP數據包并處理之。
6 結 語
目前,DOS在標準PC機中已經很少使用,但在嵌入式PC中卻是主流操作系統。在DOS下實現基于TCP/IP協議的網絡通信比較復雜、繁瑣,上述的方法簡潔有效地解決了這一問題,并在某工程通信軟件中得到了驗證、取得了良好的效果。
參 考 文 獻
[1]羅軍舟,黎波濤.TCP/IP協議及網絡編程技術[M].北京:清華大學出版社,2004.
[2]譚獻海.網絡編程技術及應用[M].北京:清華大學出版社,2006.
[3]任泰明.TCP/IP協議與網絡編程[M].西安:西安電子科技大學出版社,2004.
[4]方敏.網絡應用程序設計[M].西安:西安電子科技大學出版社,2005.
[5]郭學理,張健.網絡程序設計[M].武漢:武漢大學出版社,
2004.
[6]劉鐘情,曾維魯,任小燕.嵌入式實時數據庫研究與設計\\.現代電子技術,2007,30(14):5051.
作者簡介 周 蕓 1966年出生,陜西西安人,副教授。主要從事電子信息與自動控制方面的教學和研究工作。