久久久久久久麻豆,中日韩av在线,麻豆av在线免费,中文字幕二区三区,欧美日韩视频一区二区,亚洲欧美日韩在线一区,国产无毒不卡

8位微控制器可用于實(shí)現(xiàn)因特網(wǎng)協(xié)議


對(duì)大多數(shù)電子產(chǎn)品而言,在開放的因特網(wǎng)標(biāo)準(zhǔn)基礎(chǔ)上實(shí)現(xiàn)與因特網(wǎng)隨時(shí)隨地的連接并非易事。例如,大多數(shù)家用電器都是基于非常便宜的8位控制器技術(shù),但很可能這些宿主微控制器既沒有網(wǎng)絡(luò)端口,也沒有在不破壞其主要功能的前提下支持TCP/IP和其它因特網(wǎng)協(xié)議的硬件資源。

要實(shí)現(xiàn)完整的因特網(wǎng)通訊堆棧要求基于微處理器的系統(tǒng)具有大量的存儲(chǔ)空間和很多的處理資源。不過,最近能使各種設(shè)備上網(wǎng)的技術(shù)逐漸增多:從在資源受限的系統(tǒng)中實(shí)現(xiàn)有限的TCP/IP功能,到單芯片堆棧,再到設(shè)備目標(biāo)服務(wù)器(device object server)。每種方法都各有優(yōu)缺點(diǎn)。

我們的經(jīng)驗(yàn)是,即便是資源有限的8位微控制器也能實(shí)現(xiàn)與因特網(wǎng)的連接,而且無需擁有比MC68-HC908GP32控制器更大的存儲(chǔ)空間就能實(shí)現(xiàn)完全連接。通過正確地組合指令和外設(shè)功能,8位微控制器可以實(shí)現(xiàn)目前最流行的因特網(wǎng)協(xié)議—PPP點(diǎn)對(duì)點(diǎn)協(xié)議,并且通過這種協(xié)議與因特網(wǎng)上其它主機(jī)交換UDP/IP(用戶數(shù)據(jù)報(bào)協(xié)議/IP協(xié)議)數(shù)據(jù)。實(shí)現(xiàn)這一協(xié)議所需的C代碼不超過6,310字節(jié),其中230 字節(jié)存放在RAM,6,080字節(jié)存放在ROM。

在我們的實(shí)現(xiàn)方案中,程序被分成好幾個(gè)C模塊。主要的C模塊包括Main.CCommDrv.C、 ModemDrv.C、PPP.C、SLIP.C、IP.C、UDP.C和ICMP.C,此外,還有一個(gè)混合C模塊,這些模塊的主要目的是便于代碼借用和擴(kuò)展,以便M68HC08程序員在采用M68HC08微控制器系列其它成員開發(fā)特定應(yīng)用時(shí)能借用或修改這些源代碼來滿足設(shè)計(jì)需要。或者在開發(fā)過程中,以鏈接目標(biāo)代碼的形式創(chuàng)建一套能集成到將來應(yīng)用中的庫和功能。

數(shù)據(jù)報(bào)包

包含在IP.C中的IP協(xié)議,定義了數(shù)據(jù)報(bào)包或數(shù)據(jù)塊,外加一個(gè)符合因特網(wǎng)通訊基本單元標(biāo)準(zhǔn)的IP報(bào)頭。報(bào)頭包含源設(shè)備和目標(biāo)設(shè)備的數(shù)字地址,也就是通常所稱的IP地址。該地址是因特網(wǎng)上每臺(tái)主機(jī)的唯一標(biāo)識(shí),路由器根據(jù)這個(gè)地址將數(shù)據(jù)報(bào)送達(dá)目的地。通常而言,路由器并不關(guān)心數(shù)據(jù)報(bào)的具體內(nèi)容,因?yàn)樗鼈兊墓ぷ髦皇前褦?shù)據(jù)報(bào)盡快地發(fā)送到目的地。

一個(gè)完整的IP實(shí)現(xiàn)通常應(yīng)該具備一些支持分段和重組的特性。但是,實(shí)現(xiàn)這些特性所需的CPU帶寬和更多的RAM及ROM資源遠(yuǎn)遠(yuǎn)超過一個(gè)8位微控制器可能有的資源和能力,更不用說因此而增加的軟件實(shí)現(xiàn)復(fù)雜性了。這就是為什么我們不在軟件堆棧中實(shí)現(xiàn)任何一種功能的原因。如果由于某種原因,遠(yuǎn)端計(jì)算機(jī)給M68HC08發(fā)送了一個(gè)不完整的數(shù)據(jù)包,那么PPP將會(huì)拒絕并忽略它。

IP協(xié)議實(shí)現(xiàn)了一種機(jī)制來去除舊的數(shù)據(jù)報(bào)。在每個(gè)IP包的報(bào)頭有一個(gè)8位生存時(shí)間域,它定義了一個(gè)數(shù)據(jù)包在被丟棄之前到達(dá)目的地的過程中所經(jīng)歷的******路由數(shù)。這是因?yàn)闆]有路由的數(shù)據(jù)包可能一直在因特網(wǎng)上傳來傳去,從而可能一直占用寶貴的帶寬資源。

UDP.C模塊包含的是用戶數(shù)據(jù)報(bào)協(xié)議的代碼,它可被當(dāng)作連接IP的應(yīng)用程序接口,因?yàn)閼?yīng)用程序從來不直接使用IP??梢哉J(rèn)為UDP層非常薄,它只有8字節(jié)的報(bào)頭,因此它的開銷很低。但是它需要應(yīng)用層來完成錯(cuò)誤修復(fù)或其他功能。

在ICMP.C模塊中,采用因特網(wǎng)控制消息協(xié)議來提供一種機(jī)制,以確定我們正向其發(fā)送或讀取數(shù)據(jù)報(bào)的因特網(wǎng)某一部分是否處于激活狀態(tài)。

PPP.C模塊包含點(diǎn)對(duì)點(diǎn)協(xié)議,這是今天用于串行連接的主要連接類型。PPP是業(yè)內(nèi)廣泛采納的一套完整標(biāo)準(zhǔn)協(xié)議,它允許在多家供應(yīng)商網(wǎng)絡(luò)中采用諸如RS-232串行連接的兩個(gè)主機(jī)能互相操作。

在一個(gè)PPP通訊中,對(duì)等體之間沒有誰是服務(wù)器、誰是客戶端之分,兩個(gè)端點(diǎn)地位平等。但是出于實(shí)際應(yīng)用的目的,在微控制器環(huán)境下,一臺(tái)PPP服務(wù)器可以定義為位于ISP端的終點(diǎn),而一臺(tái)PPP客戶端則可定義為該連接的起始端點(diǎn)。

SLIP.C模塊實(shí)現(xiàn)串行線路IP協(xié)議(SLIP),與擔(dān)任路由或網(wǎng)關(guān)的主機(jī)直接通訊。SLIP規(guī)定了在常規(guī)串行通訊線路上壓縮原始IP數(shù)據(jù)報(bào)的方式。

CommDrv.C模塊負(fù)責(zé)完成正確的系統(tǒng)串行通訊,它實(shí)現(xiàn)了一種訪問串口硬件的偽標(biāo)準(zhǔn)方法。對(duì)于應(yīng)用程序而言,串口可以被看作是一種API,類似那些執(zhí)行直接邏輯操作的程序,例如OpenCommDrv.C 、CloseCommDrv.C 及 WriteCommDrv等。

ModemDrv.C模塊代碼假定使用了標(biāo)準(zhǔn)的Hayes兼容外置調(diào)制解調(diào)器。到目前為止基于M68HC08的系統(tǒng)都僅把外置調(diào)制解調(diào)器當(dāng)作一個(gè)與它相連接的串行設(shè)備。從軟件的角度看,調(diào)制解調(diào)器在串行口驅(qū)動(dòng)程序的上層運(yùn)行。換言之,它依靠CommDrv.C模塊提供服務(wù)。調(diào)制解調(diào)器與微控制器之間的連接線包括信號(hào)地、發(fā)送信號(hào)線和接收信號(hào)線。

在一個(gè)嵌入式應(yīng)用、外部服務(wù)器、網(wǎng)關(guān)或PC瀏覽器之間的典型UDP/IP連接中,程序命令MC68HC908-GP32擔(dān)任消息發(fā)起人的角色。它一直等待,直到程序定義的條件滿足為止。事先定義的條件可能是一個(gè)因被觸發(fā)而發(fā)出信號(hào)的安全系統(tǒng)、一個(gè)達(dá)到預(yù)定義閾值的空調(diào)及一個(gè)門鈴等。

系統(tǒng)首先給ISP撥號(hào)以建立PPP連接,ISP將對(duì)系統(tǒng)進(jìn)行認(rèn)證,并分配一個(gè)唯一的IP地址。之后,MC68HC908GP32就可以通過PPP/UDP/IP向因特網(wǎng)發(fā)送一個(gè)通告。一旦上網(wǎng),一條消息實(shí)際上可以漫游到世界各地。毋需太多的工作,一個(gè)運(yùn)行在目的地主機(jī)上的程序就可以傳播UDP數(shù)據(jù)報(bào)。

運(yùn)行在微控制器上的UDP/IP軟件堆棧由main程序組成(標(biāo)準(zhǔn)C 的main函數(shù)),它分為兩部分代碼。第一部分初始化通訊端口以及所有其它軟件模塊。第二部分是一個(gè)調(diào)用ModemEntry() 和PPPEntry()函數(shù)的無限循環(huán)。Modem握手和PPP協(xié)調(diào)要分別用到這兩部分。

CommDrv.C模塊定義了針對(duì)中斷的中斷服務(wù)程序(ISR)代碼,該中斷在每次接收單字節(jié)字符時(shí)發(fā)生。不過,這個(gè)ISR要經(jīng)過編譯生成鏈接器能識(shí)別的目標(biāo)代碼,并放在閃存里。這意味著ISR源代碼是在鏈接時(shí)被裝入,而不是在運(yùn)行時(shí)裝入。由于微控制器的串行口在運(yùn)行時(shí)將被各模塊共用以執(zhí)行不同的任務(wù),因此必須找到一種使不同的模塊能共享ISR的方法。

例如,MCU必須通過一個(gè)調(diào)制解調(diào)器撥號(hào)到一個(gè)ISP,在ISP響應(yīng)之后,需要執(zhí)行SLIP腳本或PPP協(xié)商對(duì)話。Modem.C和PPP.C必須依賴于CommDrv.C ISR。

實(shí)現(xiàn)靈活性所需的一種方法是,把ISR指向RAM中一個(gè)地址,該地址指向最終的中斷服務(wù)處理程序。換句話說,指向ISR的指針最后被轉(zhuǎn)換為一個(gè)指向某函數(shù)的指針。通過這種方法,程序員可以通過串口控制輸入的字符流。

COPYRIGHT(C) 2011 廈門永宏亞得機(jī)電科技有限公司版權(quán)所有(閩ICP備05025945號(hào)) ALL RIGHTS RESERVED?

電話: 0592-5190891 傳真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 廈門市海滄區(qū)興港六里17號(hào)2607室 郵編:361009 聯(lián)系人:翟先生