国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于S7600A的嵌入式系統(tǒng)Internet接入方案

基于S7600A的嵌入式系統(tǒng)Internet接入方案

作者: 時間:2006-05-07 來源:網絡 收藏

摘要:TCP/IP協(xié)議棧大規(guī)模集成電路S7600A的結構、功能、硬件接口和應用程序接口;介紹一個基于實時任務操作系統(tǒng)μs/OS的S7600A應用方案,此方案實現了系統(tǒng)的Internet接入。

本文引用地址:http://m.ptau.cn/article/241603.htm

關鍵詞:TCP/IP API 實時操作系統(tǒng)(RTOS) 多任務 系統(tǒng)

隨著電子設備智能化要求的提高和各種功能強大的微處理器的推出,系統(tǒng)逐漸成為許多電子設備不可缺少的一部分,并處在前所未有的發(fā)展期;而互聯(lián)網概念的深入人心更為嵌入式系統(tǒng)與互聯(lián)網的結合提出了要求。嵌入式系統(tǒng)接入Internet以后,不僅實現了設備的遠程控制、維護和升級,而且從另外一層意義上講,接入Internet的設備已經成為網絡共享資源的一部分。可以說這是自電子設備智能化以來設計思想的又一次飛躍。

嵌入式系統(tǒng)接入Internet的關鍵是滿足TCP/IP協(xié)議。TCP/IP協(xié)議是建立在數據鏈路層、網絡層、傳輸層和應用層上的協(xié)議族,是Internet的基礎。各種型號計算機運行在不同操作系統(tǒng)之上,TCP/IP協(xié)議族允許它們互相通信。通常,一個嵌入式系統(tǒng)接入Internet,可選擇一個提供TCP/IP協(xié)議的嵌入式操作系統(tǒng),或是在現有操作系統(tǒng)之上加入TCP/IP軟件協(xié)議棧,實現TCP/IP連接。對于嵌入式系統(tǒng),TCP/IP軟件協(xié)議棧也構成了系統(tǒng)成本的一部分,而這部分投入占有不小的比例。同時,軟件協(xié)議棧的引入無疑要占用更多的系統(tǒng)資源,對于嵌入式系統(tǒng)來說是很可觀的。S7600A TCP/IP硬件協(xié)議棧芯片很好地解決了資源和成本有限的嵌入式系統(tǒng)的Internet接入問題。

1 S7600A的內部結構

S7600A內部結構如圖1所示,它由網絡棧、物理層接口、微控制器接口、SRAM接口和片內SRAM組成。(1)網絡棧是該芯片的核心。它建立在物理層上,包含有實現TCP/IP協(xié)議的特殊的層次化的數據結構,并完成數據的包裝或剝離。其內部又可以分為PPP(點對點協(xié)議)、IP(網際協(xié)議)、TCP(傳輸控制協(xié)議)/UDP(用戶數據報協(xié)議)幾個層次。(2)物理層接口是實現協(xié)議的最底層接口。在這里以UART的形式提供對外連接,可以通過外接Modem實現Internet接入。(3)微控制器接口提供了與68k/x86(Moterola/Intel)MPU的標準并行接口非標準的串行接口(串/并模式由PSX來選擇)。在x86/68k并行模式下,由C86來選擇x86或68k。SD[7:0]為地址/數據復用總線,CS為片選輸入,READX和WRITEX為讀寫信號,RS為寄存器選擇輸入,用業(yè)指示地址和數據。在串行模式下,SD7為串行數據輸入,SD6為串行時鐘輸入,SD5為串行數據輸出,WRITEX用來切換讀和寫。另外芯片提供了中斷輸出,用來給MPU發(fā)特定請求。BUSYX用做忙指示。

2 S7600A內部寄存器和數據傳輸實例

S7600A有36個內部寄存器,有單字節(jié)、多字節(jié),也有變長的(如PPP_String寄存器,用來存放PAP用戶名和指令,其長度與用戶名和口令的實際長度相關)。對內部寄存器的讀寫可以實現對S7600A的各種操作,其中若干寄存器用來做TCP/IP的協(xié)議接口。由于寄存器數據量較多,這里不一一介紹,僅舉一個TCP數據的傳輸實例來說明對該芯片的操作。

一個IP地址和一個端口號可以稱一個插口(Socket)。而一個插口對可以唯一地確定互聯(lián)網絡里一個TCP連接。在進行以下操作之前事先要建立一個TCP連接。

首先,將Serial_Port_Config寄存器(08H)里的SCTL標志位置1,把對串口的控制權交給硬件(S7600A),把要傳輸的數據寫到Socket_Data寄存器(2EH)里,S7600A就會把數據通過該寄存器放到輸出緩沖區(qū)(1K字節(jié)長度)。注意輸出緩沖區(qū)地址在Buffer_Out_Length寄存器(30H-31H)里,當輸出緩沖區(qū)為全空時,該寄存器里寫一個字節(jié)的數據,用戶每向Socket_Data寄存器里寫一個字節(jié)的數據,Buffer_Out_Length寄存器的值就會自動減一。

當用戶要發(fā)送TCP數據時,只要向Data_Send寄存器(30H)里寫任意個字節(jié)的數據,S7600A就會對輸出緩沖區(qū)里的數據進行TCP數據處理(自動加入TCP首部,形成TCP段;再加入IP首部,形成IP數據報;最后在串行鏈路上封裝IP數據報,形成PPP數據幀,如圖2所示。)然后通過UART接口發(fā)送出去。同時Buffer_Out_Length寄存器的值會復原到3FFH.注意輸出緩沖區(qū)最大1K字節(jié),超過該值是不允許的。

3 基于S7600A的接入方案

3.1 系統(tǒng)構成

基于S7600A的接入方案如圖3所示,系統(tǒng)采用通用單片機AT89C51為控制核。單片機既可以通過并行總線又可以通過串行總線與S7600A相連(在串行時用I/O口實現串行時序),通過對S7600A的操作實現TCP/IP協(xié)議。S7600A經UART接口與嵌入式Modem相接,經電話線接入Internet。應用程序與遠程服務器或客戶機建立TCP或UDP連接,在此基礎上實現多種應用,如FTP、SMTP、POP3、Telnet、IP電話服務等。從網上獲取的信息可以經系統(tǒng)總線傳給嵌入系統(tǒng)的其他部分或者直接顯示在LCD上,同樣系統(tǒng)產生的信息也可發(fā)送到網絡上。

3.2 系統(tǒng)的軟件設計

(1)嵌入式實時多任務操作系統(tǒng)

在這個系統(tǒng)里,引入了實時操作系統(tǒng)(RTOS)。通常對單片機的開發(fā)是在硬件的基礎上直接進行編程,這種方法一般用于規(guī)模較小、較簡單的系統(tǒng),對于規(guī)模較大、較為復雜的系統(tǒng)會產生一定的隱患,屬于較低層次的開發(fā)。近年來,在嵌入式應用中使用實時多任務操作系統(tǒng)已經成為一個熱點、一種時尚,從本質意義上講,是系統(tǒng)開發(fā)層次的一種提高。在實時多任務操作系統(tǒng)的支持下,多個任務可以按照一定關系并行工作,CPU資源得到充分利用,系統(tǒng)可靠性得到很好的保證,同時方便組織開發(fā)任務。

當前出現了很多商業(yè)的RTOS,但一般價格比較昂貴,代碼不公開。本系統(tǒng)使用了開放源代碼的RTOS μC/OS,這個RTOS已經在很多系統(tǒng)上進行了成功的應用,同時已經被移植到8051上。

(2)S7600A應用程序接口(API)

S7600A以硬件的形式提供了TCP/IP協(xié)議的簡單端口。即便如此,對其內部眾多寄存器進行尋址操作了并不容易,建立TCP/IP連接仍然是比較復雜的過程。幸運的是,廠商為其提供API函數集,通過調用該函數集,可以實現S7600A的所有功能。這個函數集是建立在RTOS上的。但是這套API又具有硬件和平臺的獨立性,非常有利于在各種系統(tǒng)上移植,這種特性為實際開發(fā)項目的層次公組織創(chuàng)造了非常有利的條件。其硬件獨立性是通過API里的兩個文件iHwIFace.h和iHwIFace.c實現的,用戶在重寫這兩個文件后,可以使API用在不同的CPU上,它實際相當于S7600A的底層驅動程序。在這個系統(tǒng)里要根據AT89C51和S7600A的編址連接來確定這兩個文件,其平臺獨立性是通過API里的iSys.h和iSys.c實現的,用戶在重寫這兩個文件后,可以使API運行在不同的操作系統(tǒng)上,在該公司提供的這套API里已經附帶了基于μC/OS的這兩個文件。

該API包括兩個主要部分:iStacApi(實現PPP)和iSockApi(實現Socket連接),對S7600A的功能進行了簡單而有效的封裝,為應用軟件的開發(fā)提供了方便。如表1、表2所示。

表1 iStacApi

函數名用 途
IsInitStack
IsPPPConnect
IsPPPDisconnect
IsPPPCheck
IsPPPKeepAlive
IsGetOurIP
初始化硬件協(xié)議棧子系統(tǒng)
建立PPP連接
關斷PPP連接
檢測PPP連接是否激活
在PPP連接失效時重建連接
獲得本地當前IP地址

表2 IsockApi

函數名用 途
IsInitSocket
IsTCPConnect
IsTCPListen
IsTCPRead
IsTCPWrite
IsTCPClose
IsTCPAbort
IsUDPCreate
IsUDPRead
IsUDPWrite
IsUDPRelease
IsUDPAbort
初始化Socket的軟件構成
嘗試打開TCP連接
接受TCP連接
從TCP Socket中讀取數據
向TCP Socket里寫數據
關閉TCP Socket
中止TCP Socket上的操作
建立對UDP Socket的監(jiān)聽
等待并讀取UDP信息
寫并發(fā)送UDP Socket
關閉UDP Socket
中止UDP Socket上的操作

(3)應用程序

應用程序建立在RTOS和API之上,并可以實現多任務,在編譯完畢后和RTOS庫以及API庫一起連接生成可執(zhí)行代碼,如圖4所示。

在系統(tǒng)需接入Internet傳輸數據的時候,首先要通過Modem撥號,建立PPP連接,然后再根據數據傳輸的具體需要決定建立TCP連接還是UDP連接。一般情況下,TCP建立可靠的連接,可以實現諸如FTP、SMTP等服務;而像IP電話這樣強調實時性的場合,需要建立UDP連接。

在需要上網的時候,運行以下程序要,可以實現與ISP(網絡服務提供商)之間的撥號連接。首先,程序調用IsInitStack(),初始化S7600A的硬件協(xié)議棧子系統(tǒng)。如果初始化成功(得到RET_CODE_OK的返值),就開始進行撥號連接。調用IsPPPCheck()檢查是否已經連接,如果還沒有連接,就調用IsPPPConnect()進行撥號(該函數的參數含有進行撥號連接的要素:phata.name表示撥號上網的用戶名,例如撥169時,用戶名就指定為“169”;pdata.passwd表示用戶口令,例如撥169時,該口令指定為“169”;pdata.modemInitStrings存放初始化Modem用的指令,符合Modem AT指令集,“AT”為Modem指令的前綴。例如,“AT+FAE=0”表示關閉data/fax自動應答模式,“ATE0”表示禁止指令回應;pdata.baudRate為波特率;pdata.modemDialString為撥號號碼,此處為電話號碼169,“DT”表示用雙音頻撥號);如果已經建立了連接,就調用IsGetOurIP()得到IP地址或者調用IsPPPKeepAlive()保持連接。

#includeiReady.h>

#includeiRtacApi.h>

#define L_Time 10000

static int do_connect=1,was_connect=0;

static iIPAddr ip;

ppp_task(void)

{

RET_CODE rc; //RET_CODE為API函數執(zhí)行狀態(tài)返值的數據類型

iPPPData pdata; //該數據結構包含建立PPP連接的必要數據

static char *initSrtings[5];

initStrings[]=“AT+FAE=0”; //在字符串數組里存放Modem初始化指令

initStrings[]=“ATE0”;

initStrings[]=0; //設定該字符為NULL

initStrings[]=0;

initStrings[]=0;

pdata.name=“169”; //撥號上網的用戶名

pdata.passwd=“169”; //撥號上網的用戶口令

pdata.baudRate=28800; //設置波特率

pdata.hwFlowCtrl=1; //啟用硬件流控制

pdata.useModem=1;

pdata.modemDialString=“ATDT 169”; //ATDT為雙音頻撥號指令

pdata.auth=IPPP_AUTH_PAP; //提供PAP驗證

pdata.modemInitStrings=initstrings; //Modem初始化的系統(tǒng)指令,必須以NLLL結尾

rc=IsInitStack(); //初始化硬件棧子系統(tǒng)

if{re= =RET_CODE_OK}

{

while(do_connect)

{

rc=IsPPPCheck(); //檢查PPP連接是否激活

if(rc= =RET_CODE_OK)

{

if(was_connect= =0)

{

rc=IsGetOurIP(ip); //獲取IP地址

was_connect=1;

}

}

else if(was_connect)

{

was_connect=0;

rc=IsPPPkeepAlive(L_TIME)//在連接失效時重新建立連接

}

else

{

rc=IsPPPConnect(pdata,L_TIME); //撥號并與ISP建立PPP連接

continue;

}

smallSleep(L_TIME);

}

}

}

基于RTOS和S7600A的嵌入式系統(tǒng)Internet接入方案硬件上簡潔可靠、成本適中;軟件開發(fā)上體現了較好的層次思想和較高的技術水準,可維護性好,可擴展性好。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

tcp/ip相關文章:tcp/ip是什么




評論


相關推薦

技術專區(qū)

關閉