《嵌入式系統(tǒng)原理與開(kāi)發(fā)》課件-第7章_第1頁(yè)
《嵌入式系統(tǒng)原理與開(kāi)發(fā)》課件-第7章_第2頁(yè)
《嵌入式系統(tǒng)原理與開(kāi)發(fā)》課件-第7章_第3頁(yè)
《嵌入式系統(tǒng)原理與開(kāi)發(fā)》課件-第7章_第4頁(yè)
《嵌入式系統(tǒng)原理與開(kāi)發(fā)》課件-第7章_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章基于網(wǎng)絡(luò)的嵌入式系統(tǒng)設(shè)計(jì)7.1引言

7.2分布式嵌入式系統(tǒng)

7.3嵌入式系統(tǒng)網(wǎng)絡(luò)

7.4基于網(wǎng)絡(luò)的設(shè)計(jì)示例

思考與練習(xí)題

7.1引言

在分布式嵌入式系統(tǒng)中,嵌入式計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)連接,相互通信,應(yīng)用被分布在各個(gè)處理元素上,即在網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)中完成各項(xiàng)工作。這樣做的好處是:首先,分布式處理可以有效地減少需要處理的數(shù)據(jù),從而減輕處理器的工作量;其次,基于網(wǎng)絡(luò)的設(shè)計(jì)也可以更好地實(shí)現(xiàn)模塊化;再次,分布式系統(tǒng)更容易進(jìn)行測(cè)試;最后,在某些情況下,網(wǎng)絡(luò)還可以被用于容錯(cuò)系統(tǒng)中。

在這里,我們把不提供共享內(nèi)存進(jìn)行通信的交互方式都認(rèn)為是基于網(wǎng)絡(luò)設(shè)計(jì)的嵌入式系統(tǒng)。微處理器總線是網(wǎng)絡(luò)的一種簡(jiǎn)單類型。本章首先在7.2節(jié)介紹基于網(wǎng)絡(luò)的軟硬件體系結(jié)構(gòu)的基本原理,內(nèi)容包括網(wǎng)絡(luò)編程、OSI模型、網(wǎng)絡(luò)結(jié)構(gòu)和基于網(wǎng)絡(luò)的設(shè)計(jì)技術(shù)。然后在7.3節(jié)介紹當(dāng)前分布式嵌入式系統(tǒng)中廣泛使用的一些總線和網(wǎng)絡(luò)技術(shù),包括I2C總線、CAN總線、Ethernet、GPRS、藍(lán)牙和Internet。最后在7.4節(jié)列舉三個(gè)基于網(wǎng)絡(luò)的嵌入式系統(tǒng)的設(shè)計(jì)示例。

7.2分布式嵌入式系統(tǒng)

7.2.1系統(tǒng)概述

通常,嵌入式系統(tǒng)有兩種應(yīng)用方式:?jiǎn)螜C(jī)方式和網(wǎng)絡(luò)方式。單機(jī)方式以嵌入式處理器為核心,與一些外部接口部件如監(jiān)測(cè)、伺服和指示設(shè)備配合,實(shí)現(xiàn)一定的功能。網(wǎng)絡(luò)方式是指把嵌入式設(shè)備通過(guò)網(wǎng)絡(luò)連接在一起,相互通信,完成協(xié)作、并行等功能。連接網(wǎng)絡(luò)的嵌入式設(shè)備具有通信控制器部件,通過(guò)該部件和通信協(xié)議軟件的集成,可以實(shí)現(xiàn)嵌入式設(shè)備與網(wǎng)絡(luò)的連接。設(shè)計(jì)基于網(wǎng)絡(luò)的嵌入式系統(tǒng)有以下幾方面的原因:

(1)計(jì)算和處理器資源的分散性。在一些應(yīng)用系統(tǒng)中,計(jì)算機(jī)處理的資源可能分布在不同的位置,它們需要通過(guò)網(wǎng)絡(luò)連接起來(lái)。

(2)減少處理器的數(shù)據(jù)量。

(3)模塊化設(shè)計(jì)需求。

(4)系統(tǒng)可靠性要求。在一些情況下,網(wǎng)絡(luò)被用于容錯(cuò)系統(tǒng),如雙機(jī)/多機(jī)備份系統(tǒng)。多個(gè)處理器系統(tǒng)通過(guò)網(wǎng)絡(luò)連接在一起,當(dāng)其中的一個(gè)設(shè)備出現(xiàn)故障時(shí),其他的設(shè)備可以很容易地進(jìn)行切換。采用網(wǎng)絡(luò)方式連接嵌入式系統(tǒng)目前主要應(yīng)用在以下幾方面:

(1)物理層聯(lián)網(wǎng)。物理層聯(lián)網(wǎng)主要指的是比較簡(jiǎn)單的網(wǎng)絡(luò),通常使用串行總線(如RS-232、RS-485等)進(jìn)行信號(hào)級(jí)的網(wǎng)絡(luò)互聯(lián)。

(2)通信領(lǐng)域。

(3)工業(yè)控制領(lǐng)域。工業(yè)控制系統(tǒng)從單元自動(dòng)化向網(wǎng)絡(luò)方面發(fā)展,由集散控制系統(tǒng)向基于網(wǎng)絡(luò)的分布式控制系統(tǒng)方面發(fā)展。代表這一趨勢(shì)的關(guān)鍵技術(shù)是現(xiàn)場(chǎng)總線技術(shù),它是未來(lái)工業(yè)自動(dòng)化方面的關(guān)鍵技術(shù)。

(4)?Internet應(yīng)用。7.2.2OSI模型

計(jì)算機(jī)網(wǎng)絡(luò)提供了高級(jí)別的服務(wù),卻對(duì)系統(tǒng)中其他組件隱藏了數(shù)據(jù)傳輸?shù)暮芏嗉?xì)節(jié)。國(guó)際標(biāo)準(zhǔn)化組織(ISO)針對(duì)網(wǎng)絡(luò)提出了著名的7層結(jié)構(gòu)模型,即開(kāi)放式系統(tǒng)互聯(lián)參考模型

(OpenSystemInterconnectReferenceModel,OSI/RM)。

OSI模型的分層結(jié)構(gòu)如圖7-1所示,它展示了網(wǎng)絡(luò)的結(jié)構(gòu)和各層的功能。某些網(wǎng)絡(luò)設(shè)備在實(shí)現(xiàn)時(shí)并不需要7層中的某一層或幾層,因?yàn)楦邔踊蛘咧虚g層并不是必需的。例如,大多數(shù)工業(yè)級(jí)網(wǎng)絡(luò)由于實(shí)時(shí)性的要求就省去了消耗時(shí)間的某些層。圖7?1OSI模型的分層結(jié)構(gòu)

OSI模型各層的具體功能如下:

(1)物理層。物理層規(guī)定了系統(tǒng)間基本的接口特性,如物理連接(連接插件和線纜)、電氣特性、電子部件和物理部件的基本功能、位交換的基本過(guò)程等。

(2)數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層的主要作用是檢測(cè)錯(cuò)誤和控制一條單個(gè)鏈路。但是,如果網(wǎng)絡(luò)需要通過(guò)幾個(gè)數(shù)據(jù)鏈路實(shí)現(xiàn)多轉(zhuǎn)發(fā),那么數(shù)據(jù)鏈路層將不再保證轉(zhuǎn)發(fā)的數(shù)據(jù)的完整性,它只能在單轉(zhuǎn)發(fā)中保證這一點(diǎn)。

(3)網(wǎng)絡(luò)層。網(wǎng)絡(luò)層定義了基本的點(diǎn)到點(diǎn)數(shù)據(jù)傳輸服務(wù)。網(wǎng)絡(luò)層在多轉(zhuǎn)發(fā)網(wǎng)絡(luò)中特別重要。

(4)傳輸層。傳輸層定義了面向連接的服務(wù),它可以保證數(shù)據(jù)按一定的順序無(wú)差錯(cuò)地在多條鏈路上傳送。這一層同時(shí)會(huì)對(duì)網(wǎng)絡(luò)資源的利用做一些優(yōu)化工作。

(5)表示層。表示層規(guī)定了數(shù)據(jù)交換的格式并為應(yīng)用程序提供有效的轉(zhuǎn)換工具。

(6)應(yīng)用層。應(yīng)用層提供了終端用戶程序和網(wǎng)絡(luò)之間的應(yīng)用程序接口。

盡管嵌入式系統(tǒng)比較簡(jiǎn)單,一般不需要使用完整的OSI模型,但是這個(gè)模型在實(shí)際應(yīng)用中是非常有用的。即使相對(duì)簡(jiǎn)單的嵌入式系統(tǒng)也提供了物理層、數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層服務(wù)。7.2.3網(wǎng)絡(luò)結(jié)構(gòu)

一個(gè)分布式嵌入式系統(tǒng)能用很多不同的方式來(lái)組織,但是它的基本單元是網(wǎng)絡(luò)設(shè)備(一般是嵌入式網(wǎng)絡(luò)設(shè)備)和網(wǎng)絡(luò)本身,如圖7-2所示。圖7?2一個(gè)分布式嵌入式系統(tǒng)的結(jié)構(gòu)7.2.4網(wǎng)絡(luò)編程

1.請(qǐng)求/應(yīng)答方式

這種方式是指通信的雙方通過(guò)向?qū)Ψ桨l(fā)送請(qǐng)求/應(yīng)答報(bào)文進(jìn)行通信,它類似于客戶/服務(wù)器的通信方式,通信的一方發(fā)送請(qǐng)求報(bào)文,通信的另一方對(duì)收到的報(bào)文進(jìn)行應(yīng)答。

連接在網(wǎng)絡(luò)上的嵌入式設(shè)備通過(guò)傳遞報(bào)文進(jìn)行通信。指定的報(bào)文作為一個(gè)基本的自然通信單位,它可以被拆分成分組在網(wǎng)絡(luò)上傳送。在程序設(shè)計(jì)上,分組發(fā)送可以使用查詢方式,也可以使用中斷方式。如果使用中斷方式,則通常設(shè)計(jì)一個(gè)發(fā)送隊(duì)列。應(yīng)用程序需要發(fā)送的報(bào)文先放在發(fā)送隊(duì)列中,發(fā)送中斷服務(wù)程序從發(fā)送隊(duì)列中讀取報(bào)文并進(jìn)行發(fā)送,這一過(guò)程如圖7-3所示。圖7?3報(bào)文發(fā)送程序模塊結(jié)構(gòu)由于接收操作的隨機(jī)性,分組接收通常以中斷的方式實(shí)現(xiàn)。最簡(jiǎn)單的過(guò)程接口會(huì)檢查一個(gè)接收到的選項(xiàng)是否在緩沖區(qū)中。在比較復(fù)雜的基于RTOS的系統(tǒng)中,為了減少中斷處理的時(shí)間,接收中斷服務(wù)例程只從通信控制器的接收緩沖區(qū)中讀取收到的數(shù)據(jù)分組,而把處理分組的工作交給一個(gè)中斷任務(wù)來(lái)完成,這一過(guò)程如圖7-4所示。圖7?4報(bào)文接收程序模塊結(jié)構(gòu)

2.推移方式

所謂推移方式,是指數(shù)據(jù)的發(fā)送方在不需要等待請(qǐng)求的情況下主動(dòng)發(fā)送數(shù)據(jù)。

由于相對(duì)于請(qǐng)求/應(yīng)答方式,數(shù)據(jù)推移程序設(shè)計(jì)省掉了發(fā)送請(qǐng)求的通信量,因此它適用于周期性的數(shù)據(jù)傳送場(chǎng)合,可以減少網(wǎng)絡(luò)流量。如果數(shù)據(jù)總是以規(guī)律的時(shí)間間隔被產(chǎn)生和使用,則可以通過(guò)在需要時(shí)自動(dòng)發(fā)送的方法來(lái)減少網(wǎng)絡(luò)上的數(shù)據(jù)流量。

例如,在汽車網(wǎng)絡(luò)系統(tǒng)中,分布的傳感器和傳動(dòng)裝置同中央控制器對(duì)話,如圖7-5所示。圖7?5汽車網(wǎng)絡(luò)系統(tǒng)7.2.5設(shè)計(jì)技術(shù)

1.通信分析

要分析網(wǎng)絡(luò)的性能,必須了解如何確定在傳輸報(bào)文時(shí)引入的延遲。首先假設(shè)報(bào)文傳遞是可靠的,這意味著不需要重傳報(bào)文。在不考慮競(jìng)爭(zhēng)(如點(diǎn)對(duì)點(diǎn)連接)的前提下,單個(gè)報(bào)文的報(bào)文延遲可以表示為

tm=tx+tn+tr

其中,tx是發(fā)送方的開(kāi)銷,tn是網(wǎng)絡(luò)傳輸時(shí)間,tr是接收方的開(kāi)銷。

2.系統(tǒng)性能分析

網(wǎng)絡(luò)的復(fù)雜性使得對(duì)嵌入式網(wǎng)絡(luò)系統(tǒng)的性能分析非常困難。對(duì)復(fù)雜的基于網(wǎng)絡(luò)應(yīng)用的嵌入式系統(tǒng)進(jìn)行精確的性能分析,要使用CAD工具。有些算法可以有效地確定進(jìn)程開(kāi)始和完成時(shí)間的上界和下界。

如果沒(méi)有計(jì)算機(jī)輔助分析工具來(lái)幫助分析性能,那么手工設(shè)計(jì)必須滿足硬實(shí)時(shí)要求的嵌入式系統(tǒng)時(shí)要非常小心。系統(tǒng)在力圖達(dá)到硬實(shí)時(shí)的時(shí)間確定性要求時(shí),應(yīng)該確保關(guān)鍵性的任務(wù)是活動(dòng)的,這一點(diǎn)非常重要。

如果需要多個(gè)關(guān)鍵性任務(wù)能夠同時(shí)發(fā)生或運(yùn)行,那么系統(tǒng)設(shè)計(jì)時(shí)一定要保證它們不共享任何處理器資源和通信鏈接資源。這是一種保守的設(shè)計(jì)策略,使用CAD工具有助于放寬某些限制,以便更充分地提高硬件效率。

3.網(wǎng)絡(luò)中的優(yōu)先級(jí)倒置

優(yōu)先級(jí)倒置是指低優(yōu)先級(jí)的任務(wù)占用了一個(gè)臨界資源,于是高優(yōu)先級(jí)的任務(wù)無(wú)法得到資源,因而等不到處理器的服務(wù),在宏觀上表現(xiàn)為低優(yōu)先級(jí)的任務(wù)在運(yùn)行,高優(yōu)先級(jí)的任務(wù)不在運(yùn)行的反常情況。優(yōu)先級(jí)倒置這一概念一般出現(xiàn)在多任務(wù)操作系統(tǒng)的應(yīng)用設(shè)計(jì)場(chǎng)合,在實(shí)時(shí)系統(tǒng)的設(shè)計(jì)中是要避免的。

優(yōu)先級(jí)倒置主要存在以下兩種情況:

(1)報(bào)文的優(yōu)先級(jí)不同。

(2)報(bào)文的優(yōu)先級(jí)相同。

4.硬件平臺(tái)設(shè)計(jì)、分配與調(diào)度

在設(shè)計(jì)硬件平臺(tái)時(shí),必須做出以下設(shè)計(jì)選擇:

·所需要的處理器數(shù)目;

·所有處理器的類型;

·所需要的網(wǎng)絡(luò)數(shù)目;

·網(wǎng)絡(luò)的類型以及數(shù)據(jù)速率。根據(jù)正在設(shè)計(jì)系統(tǒng)的類型,下面的兩種策略會(huì)有助于快速設(shè)計(jì)出有效的系統(tǒng)。

(1)對(duì)于I/O密集型系統(tǒng),從I/O設(shè)備以及關(guān)聯(lián)的處理入手。這類系統(tǒng)中的數(shù)據(jù)可能直接傳輸?shù)骄W(wǎng)絡(luò)上,也可能需要進(jìn)行一些本地處理后才傳輸?shù)骄W(wǎng)絡(luò)上。在系統(tǒng)設(shè)計(jì)時(shí),應(yīng)遵循以下步驟:

①編制所需I/O設(shè)備的詳細(xì)清單。

②根據(jù)預(yù)算確定哪個(gè)處理工作具有過(guò)短的時(shí)間確定性要求,以至于這個(gè)要求不能被任何網(wǎng)絡(luò)滿足。不需要本地處理的I/O設(shè)備可以用最簡(jiǎn)單的可用接口連接到網(wǎng)絡(luò)上。③確定哪些設(shè)備可以共享處理器或網(wǎng)絡(luò)接口。

④分析通信時(shí)間,確定關(guān)鍵性通信是否可能相互影響;確定為了達(dá)到通信的時(shí)限要求是否需要使用復(fù)雜網(wǎng)絡(luò)或多個(gè)網(wǎng)絡(luò)。

⑤為I/O設(shè)備分配所需要的最小數(shù)量的處理器資源。

⑥用計(jì)算密集型系統(tǒng)的設(shè)計(jì)步驟來(lái)設(shè)計(jì)系統(tǒng)的其他部分。

(2)對(duì)于計(jì)算密集型系統(tǒng),從進(jìn)程入手,按以下步驟來(lái)考慮進(jìn)程和進(jìn)程最后期限以及通信:

①?gòu)木哂凶疃虝r(shí)間確定性要求的任務(wù)開(kāi)始。任務(wù)的時(shí)限性越短,越有可能需要自己的一個(gè)或多個(gè)處理器。如果一個(gè)高優(yōu)先級(jí)的任務(wù)與一個(gè)低優(yōu)先級(jí)的任務(wù)共享處理器,則不僅需要更昂貴的處理器,而且還會(huì)非線性地增加調(diào)度開(kāi)銷。

②分析通信時(shí)間,確定關(guān)鍵性通信是否會(huì)相互影響。

③盡可能把低優(yōu)先級(jí)的任務(wù)分配到共享的處理器上。

④設(shè)計(jì)出符合性能要求的基本系統(tǒng)以后,需要進(jìn)一步改進(jìn)它,以滿足功耗要求以及其他要求。

7.3嵌入式系統(tǒng)網(wǎng)絡(luò)

7.3.1I2C總線

I2C總線常用于將微控制器鏈接到系統(tǒng)。

1.物理層

I2C被設(shè)計(jì)成低成本、易實(shí)現(xiàn)、中速的(標(biāo)準(zhǔn)總線達(dá)到100?kb/s,擴(kuò)展總線達(dá)到400?kb/s)總線。I2C只使用兩條線:串行數(shù)據(jù)線(SDL),用于數(shù)據(jù)傳送;串行時(shí)鐘線(SCL),用于指示什么時(shí)候數(shù)據(jù)線上是有效數(shù)據(jù)。圖7-6展示了一個(gè)典型的I2C總線系統(tǒng)結(jié)構(gòu)。網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都被連接到SCL和SDL,一些節(jié)點(diǎn)能夠起到總線主控器的作用(總線可以有多個(gè)主控器),其他節(jié)點(diǎn)可以起到響應(yīng)總線主控器請(qǐng)求的總線受控器的作用。圖7?6I2C總線系統(tǒng)結(jié)構(gòu)

2.電路接口

圖7-7展示了與總線的基本電路接口??偩€不規(guī)定使用電壓的高低以便雙極電路或MOS電路都能夠連接到總線。所有的總線信號(hào)使用開(kāi)放集電極/開(kāi)放漏極電路。一個(gè)上拉電阻保持信號(hào)的默認(rèn)狀態(tài)為高電平,當(dāng)0被傳輸時(shí)每一條總線的晶體管用于下拉該信號(hào)。開(kāi)放集電極/開(kāi)放漏極信號(hào)允許一些設(shè)備同時(shí)寫總線而不引起電路故障。圖7?7I2C總線電路接口

3.?dāng)?shù)據(jù)鏈路層

每一個(gè)I2C設(shè)備都有自己的地址。設(shè)備的地址是由系統(tǒng)設(shè)計(jì)者決定的,通常是I2C驅(qū)動(dòng)程序的一部分。這個(gè)地址的選擇必須保證任何兩個(gè)設(shè)備之間的地址都不相同。在標(biāo)準(zhǔn)的I2C定義中,設(shè)備地址是7位的(擴(kuò)展的I2C允許10位地址)。地址0000000一般用于發(fā)出通用呼叫或總線廣播,總線廣播可以同時(shí)給所有的設(shè)備發(fā)出信號(hào)。地址11110××為10位地址機(jī)制保留,還有一些其他的保留地址。總線事務(wù)包含一系列單字節(jié)數(shù)據(jù)傳送和一個(gè)地址傳送。I2C形成了一種數(shù)據(jù)推移設(shè)計(jì)風(fēng)格。當(dāng)一個(gè)主控器試圖寫受控器時(shí),它將傳送后面跟有數(shù)據(jù)的受控器地址。因?yàn)槭芸仄鞑荒軋?zhí)行傳輸,所以主控器必須發(fā)送一個(gè)帶著受控器地址的讀請(qǐng)求讓受控器傳送數(shù)據(jù)。因此,地址傳輸包括7位地址和表示數(shù)據(jù)傳輸方向的一個(gè)位:0代表從主控器寫到受控器,1代表從受控器讀到主控器。

地址傳輸?shù)母袷饺鐖D7-8所示。圖7?8I2C地址傳輸格式總線事務(wù)由一個(gè)開(kāi)始信號(hào)啟動(dòng),以一個(gè)結(jié)束信號(hào)完成。

(1)開(kāi)始信號(hào)通過(guò)保留SCL為高電平并且在SDL上發(fā)送1到0的轉(zhuǎn)換產(chǎn)生。

(2)結(jié)束信號(hào)通過(guò)設(shè)置SCL為高電平并且在SDL上發(fā)送0到1的轉(zhuǎn)換產(chǎn)生。

開(kāi)始和結(jié)束信號(hào)必須成對(duì)出現(xiàn)。主控器可以通過(guò)數(shù)據(jù)傳送后發(fā)送開(kāi)始信號(hào)來(lái)先寫后讀(或先讀后寫),接著是另一地址的傳輸,然后是更多的數(shù)據(jù)傳輸。

典型的完整總線事務(wù)格式如圖7-9所示。圖7?9I2C總線上的典型總線事物

4.字節(jié)格式

圖7-10顯示了總線上的數(shù)據(jù)字節(jié)是如何傳送的,其中包括了開(kāi)始和停止事件。當(dāng)SCL保留高電平同時(shí)SDL變?yōu)榈碗娖綍r(shí)傳送開(kāi)始。這個(gè)開(kāi)始狀態(tài)之后,時(shí)鐘信號(hào)變低來(lái)啟動(dòng)數(shù)據(jù)傳送。在每一個(gè)數(shù)據(jù)位,時(shí)鐘線在確保數(shù)據(jù)位正確時(shí)變?yōu)楦唠娖?。在每一個(gè)8位數(shù)據(jù)的結(jié)尾發(fā)送一個(gè)確認(rèn)信號(hào),而不管它是地址還是數(shù)據(jù)。在確認(rèn)時(shí),傳送端不會(huì)把SDL變?yōu)榈碗娖?,如果正確接收到了數(shù)據(jù),則允許接收端把電位變?yōu)?。確認(rèn)信號(hào)后,當(dāng)SCL處于高電平時(shí)SDL從低電平變?yōu)楦唠娖剑甘緮?shù)據(jù)傳送停止。圖7?10I2C總線上一個(gè)字節(jié)的傳輸

5.總線屬性

總線使用設(shè)備監(jiān)聽(tīng)特性來(lái)仲裁每一個(gè)報(bào)文。如果設(shè)備試圖發(fā)送一個(gè)邏輯1但是卻監(jiān)聽(tīng)到一個(gè)邏輯0,它會(huì)立即停止傳送并且把優(yōu)先權(quán)讓給其他發(fā)送設(shè)備。在許多情況下,仲裁在傳送地址部分時(shí)完成。但是仲裁也可以在數(shù)據(jù)部分繼續(xù)。當(dāng)兩個(gè)設(shè)備都試圖向同一地址發(fā)送同樣數(shù)據(jù)時(shí),它們之間不會(huì)互相影響且最后都會(huì)成功發(fā)送報(bào)文。

6.應(yīng)用接口

在微控制器上的I2C接口可以用不同比例的軟/硬件功能來(lái)實(shí)現(xiàn)。如圖7-11所示,一個(gè)典型的系統(tǒng)可由一個(gè)帶有例程的一位硬件接口完成字節(jié)級(jí)的功能。I2C設(shè)備負(fù)責(zé)生成數(shù)據(jù)和時(shí)鐘。應(yīng)用程序調(diào)用例程來(lái)發(fā)送地址和數(shù)據(jù)字節(jié)等。I2C接口產(chǎn)生SCL和SDL信號(hào)、確認(rèn)信號(hào)等。一個(gè)微控制器的定時(shí)器通常用于控制總線上的位長(zhǎng)。中斷用來(lái)識(shí)別位。但是,在主控模式下時(shí)如果沒(méi)有其他掛起任務(wù)可以執(zhí)行,那么輪詢I/O也是可以被接受的(因?yàn)橹骺仄鲉?dòng)了自己的傳輸)。圖7?11微控制器中的I2C接口7.3.2CAN總線

CAN總線最初是為汽車電子設(shè)備設(shè)計(jì)的。當(dāng)數(shù)字電子設(shè)備應(yīng)用到汽車組件時(shí),不只單個(gè)組件變得更智能,而且由于通信的需要,它們的功能也在不斷增加?,F(xiàn)在,CAN也被應(yīng)用于汽車電子系統(tǒng)以外的應(yīng)用中。

CAN總線使用位串行數(shù)據(jù)傳輸。CAN可以以1?Mb/s的速率在40m雙絞線上傳輸數(shù)據(jù)。光纜連接也可以使用,并且在這種總線上的總線協(xié)議支持多主控器。CAN與I2C總線的許多細(xì)節(jié)很類似,但也有一些明顯的區(qū)別。

1.物理層

如圖7-12所示,CAN總線上的每一個(gè)節(jié)點(diǎn)都以AND方式連接到總線的驅(qū)動(dòng)器和接收器上。圖7?12一種CAN總線的物理電器組織結(jié)構(gòu)

2.?dāng)?shù)據(jù)幀

CAN數(shù)據(jù)幀的格式如圖7-13所示。數(shù)據(jù)幀以一個(gè)1開(kāi)始,以七個(gè)0結(jié)束(在兩個(gè)數(shù)據(jù)幀之間至少有三個(gè)位的域)。分組中的第一個(gè)域包含目標(biāo)地址,該域被稱為仲裁域。目標(biāo)標(biāo)識(shí)符長(zhǎng)度是11位。當(dāng)數(shù)據(jù)幀被用來(lái)從標(biāo)識(shí)符指定的設(shè)備請(qǐng)求數(shù)據(jù)時(shí),后面的遠(yuǎn)程傳輸請(qǐng)求(RTR)位被設(shè)置為0。當(dāng)RTR=1時(shí),分組被用來(lái)向目標(biāo)識(shí)別符寫入數(shù)據(jù)??刂朴蛱峁┮粋€(gè)標(biāo)識(shí)符擴(kuò)展和4位的數(shù)據(jù)長(zhǎng)度,在它們之間有一個(gè)1。數(shù)據(jù)域的范圍是從0到64字節(jié),數(shù)據(jù)域的大小取決于控制域中給定的值。數(shù)據(jù)域后發(fā)送一個(gè)循環(huán)冗余校驗(yàn)(CRC),用于錯(cuò)誤檢測(cè)。應(yīng)答域被用于發(fā)出一個(gè)是否幀被正確接收的標(biāo)識(shí)信號(hào):發(fā)送端把一個(gè)隱性位(1)放到應(yīng)答域的ACK插槽中,如果接收端檢測(cè)到了錯(cuò)誤,那么它強(qiáng)制該值變?yōu)轱@性的0值。如果發(fā)送端在ACK插槽中發(fā)現(xiàn)了一個(gè)0在總線上,它就知道必須重發(fā)。ACK插槽后面跟著幀結(jié)束域,兩者由單位分隔符隔開(kāi)。圖7?13CAN數(shù)據(jù)幀格式

3.屬性

CAN總線的控制使用CSMA/AMP(帶有優(yōu)先級(jí)仲裁的載波監(jiān)聽(tīng)多路訪問(wèn))技術(shù)。這種方法類似于I2C總線的仲裁方法。?網(wǎng)絡(luò)節(jié)點(diǎn)同步傳輸,因此它們可以同時(shí)發(fā)送它們的標(biāo)識(shí)符域。當(dāng)一個(gè)節(jié)點(diǎn)在標(biāo)識(shí)符域中監(jiān)聽(tīng)到一個(gè)顯性位而它正試圖發(fā)送一個(gè)隱性位時(shí),該節(jié)點(diǎn)停止發(fā)送。在仲裁域的末尾,只有一個(gè)發(fā)送器會(huì)被保留。標(biāo)識(shí)符域起優(yōu)先級(jí)標(biāo)枳符的作用,全0的標(biāo)識(shí)符具有最高優(yōu)先級(jí)。

4.遠(yuǎn)程幀

遠(yuǎn)程幀通常用于從另外一個(gè)節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)。請(qǐng)求方將RTR位置為0來(lái)指示一個(gè)遠(yuǎn)程幀,它同時(shí)也指示了一個(gè)0數(shù)據(jù)位。標(biāo)識(shí)符域中指定的節(jié)點(diǎn)將對(duì)具有該請(qǐng)求值的數(shù)據(jù)幀做出響應(yīng)。在遠(yuǎn)程幀中節(jié)點(diǎn)沒(méi)有辦法發(fā)送參數(shù),因?yàn)椴荒苁褂脴?biāo)識(shí)符來(lái)標(biāo)識(shí)設(shè)備,也不能提供一個(gè)參數(shù)來(lái)說(shuō)明哪個(gè)設(shè)備的哪個(gè)數(shù)據(jù)值是所需要的。相反地,每一個(gè)可能的數(shù)據(jù)請(qǐng)求必須有自己的標(biāo)識(shí)符。

5.出錯(cuò)處理

出錯(cuò)幀可以由總線上的任何一個(gè)檢測(cè)到錯(cuò)誤的節(jié)點(diǎn)產(chǎn)生。檢測(cè)到錯(cuò)誤時(shí),一個(gè)節(jié)點(diǎn)用一個(gè)出錯(cuò)幀來(lái)中斷當(dāng)前的傳輸。它由一個(gè)錯(cuò)誤標(biāo)志組成,后跟8位隱性的錯(cuò)誤分隔符域。錯(cuò)誤分隔符域允許總線返回到靜止?fàn)顟B(tài)以使數(shù)據(jù)幀傳輸可以重新開(kāi)始。總線也支持超載幀,這是一個(gè)內(nèi)部幀處于靜止周期時(shí)的特殊錯(cuò)誤幀。超載幀指示節(jié)點(diǎn)已經(jīng)超載,將不能處理下一個(gè)消息。節(jié)點(diǎn)能夠用在一行中達(dá)到兩個(gè)超載幀的方式延遲下一幀的傳送,以便有足夠的時(shí)間從超載狀態(tài)中恢復(fù)。CRC域也能用來(lái)測(cè)檢報(bào)文的數(shù)據(jù)域的正確性。如果發(fā)送節(jié)點(diǎn)沒(méi)有接收到數(shù)據(jù)幀的確認(rèn)信號(hào),它會(huì)重發(fā)數(shù)據(jù)幀直到數(shù)據(jù)被確認(rèn)。這種動(dòng)作對(duì)應(yīng)于OSI模型中的數(shù)據(jù)鏈路層。

圖7-14展示了一個(gè)典型CAN控制器的基本體系結(jié)構(gòu)??刂破鲗?shí)現(xiàn)物理層和數(shù)據(jù)鏈路層功能。既然CAN是一種總線,它就不需要網(wǎng)絡(luò)層的服務(wù)來(lái)建立端到端的連接。當(dāng)仲裁丟失而必須重發(fā)報(bào)文和接收?qǐng)?bào)文時(shí),協(xié)議控制塊決定何時(shí)發(fā)送報(bào)文。圖7?14CAN控制器體系結(jié)構(gòu)7.3.3Ethernet

Ethernet(以太網(wǎng))是廣泛用于通用計(jì)算的局域網(wǎng)。由于它的普遍性及其低廉的接口價(jià)格,它已經(jīng)作為一種網(wǎng)絡(luò)出現(xiàn)在嵌入式運(yùn)算中。當(dāng)以PC作為平臺(tái)使標(biāo)準(zhǔn)組件的使用成為可能,以及網(wǎng)絡(luò)不需要滿足嚴(yán)格的實(shí)時(shí)需求時(shí),以太網(wǎng)特別有用。

如圖7-15所示,以太網(wǎng)的物理組成非常簡(jiǎn)單。該網(wǎng)絡(luò)是一條具有單信號(hào)路徑的總線。以太網(wǎng)標(biāo)準(zhǔn)可以有幾種不同的實(shí)現(xiàn)方法,比如雙絞線和同軸電纜。圖7?15以太網(wǎng)組織結(jié)構(gòu)與I2C和CAN總線不同,以太網(wǎng)上的節(jié)點(diǎn)不是同步的,它可以在任何時(shí)間發(fā)送數(shù)據(jù)。I2C和CAN依靠同步機(jī)制在一個(gè)位的發(fā)送時(shí)間內(nèi)實(shí)現(xiàn)沖突的檢測(cè)和取消,而以太網(wǎng)的節(jié)點(diǎn)不是同步的,所以如果兩個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù),那么報(bào)文將會(huì)被破壞。以太網(wǎng)仲裁機(jī)制被稱做帶沖突檢測(cè)的載波監(jiān)聽(tīng)多路訪問(wèn),即CSMA/CD,其算法如圖7-16所示。圖7?16以太網(wǎng)CSMA/CD算法圖7-17顯示了以太網(wǎng)分組的基本格式。它提供了目的地址和源地址,同時(shí)還提供了要傳送的有效數(shù)據(jù)。圖7?17以太網(wǎng)分組格式7.3.4GPRS

1.GPRS的特點(diǎn)

GPRS是一種基于GSM系統(tǒng)的無(wú)線分組交換技術(shù),提供端到端的、廣域的無(wú)線IP連接。GPRS充分利用共享無(wú)線信道,采用IPOverPPP實(shí)現(xiàn)數(shù)據(jù)終端的高速、遠(yuǎn)程接入。作為現(xiàn)有GSM網(wǎng)絡(luò)向第三代移動(dòng)通信演變的過(guò)渡技術(shù),GPRS在許多方面都具有顯著的優(yōu)勢(shì)。

GPRS有下列特點(diǎn):

(1)可充分利用GSM的現(xiàn)有資源,方便、快速、低建設(shè)成本地為用戶數(shù)據(jù)終端實(shí)現(xiàn)遠(yuǎn)程接入網(wǎng)絡(luò)。

(2)傳輸速率高。

(3)接入時(shí)間短。

(4)提供實(shí)時(shí)在線(alwaysonline)功能。

(5)按流量計(jì)費(fèi)。

2.GPRS系統(tǒng)結(jié)構(gòu)

目前,GSM已發(fā)展到了Phase2+?階段,這一階段的核心問(wèn)題就是高速移動(dòng)數(shù)據(jù)通信。近年來(lái),越來(lái)越多的GSM網(wǎng)絡(luò)運(yùn)營(yíng)商引入移動(dòng)數(shù)據(jù)業(yè)務(wù),不僅使GSM網(wǎng)絡(luò)實(shí)現(xiàn)了無(wú)線互聯(lián)網(wǎng)功能,而且積累了無(wú)線多媒體業(yè)務(wù)運(yùn)營(yíng)經(jīng)驗(yàn),為向第三代移動(dòng)通信網(wǎng)絡(luò)的過(guò)渡作好了準(zhǔn)備。

GSM移動(dòng)數(shù)據(jù)業(yè)務(wù)主要分為電路型數(shù)據(jù)業(yè)務(wù)和分組型數(shù)據(jù)業(yè)務(wù)。GSM第一階段提供的9.6kb/s以下數(shù)據(jù)業(yè)務(wù)及Phase2+?階段提出的HSCSD都屬于電路型數(shù)據(jù)業(yè)務(wù),Phase2+?階段提出的GPRS則屬于分組型數(shù)據(jù)業(yè)務(wù)。后者相對(duì)于前者具有很顯著的優(yōu)越性。兩者特點(diǎn)對(duì)比如表7-1所示。表7-1電路型數(shù)據(jù)業(yè)務(wù)與分組型數(shù)據(jù)業(yè)務(wù)的對(duì)比

GPRS網(wǎng)是在GSM電話網(wǎng)的基礎(chǔ)上增加以下功能實(shí)體構(gòu)成的:SGSN(服務(wù)GPRS支持節(jié)點(diǎn))、GGSN(網(wǎng)關(guān)GPRS支持節(jié)點(diǎn))、PTMSC(點(diǎn)對(duì)多點(diǎn)服務(wù)中心)。具體實(shí)現(xiàn)方法包括:共用GSM基站,但基站要進(jìn)行軟件更新;采用新的GPRS移動(dòng)臺(tái);在GPRS中增加新的移動(dòng)性管理程序;通過(guò)路由器實(shí)現(xiàn)GPRS骨干網(wǎng)互聯(lián);對(duì)GSM網(wǎng)絡(luò)系統(tǒng)進(jìn)行軟件更新和增加新的MAP信令與GPRS信令等。GPRS骨干網(wǎng)的邏輯結(jié)構(gòu)如圖7-18所示。圖7?18GPRS骨干網(wǎng)的邏輯結(jié)構(gòu)

GPRS網(wǎng)上增加了一些接口,主要包括:

(1)?Gb口。SGSN通過(guò)Gb口與基站BSS相連,為移動(dòng)臺(tái)MS服務(wù),通過(guò)邏輯控制協(xié)議(LLC),建立SGSN與MS之間的連接,提供移動(dòng)性管理(位置跟蹤)和安全管理功能。SGSN完成MS和SGSN之間的協(xié)議轉(zhuǎn)換,即將骨干網(wǎng)使用的IP協(xié)議轉(zhuǎn)換成SNDCP和LLC協(xié)議,并提供MS鑒權(quán)和登記功能。

(2)?Gn口。SGSN通過(guò)Gn口和GGSN相連,通過(guò)GPRS隧道協(xié)議(GTP)建立SGSN和外部數(shù)據(jù)網(wǎng)(X.25或IP)之間的通道,實(shí)現(xiàn)MS和外部數(shù)據(jù)網(wǎng)的互聯(lián)。

(3)?Gs口。Gs口用于SGSN向MSC/VLR發(fā)送地址信息,并從MSC/VLR接收尋呼請(qǐng)求,實(shí)現(xiàn)分組型業(yè)務(wù)和非分組型業(yè)務(wù)的關(guān)聯(lián)。

(4)?Gr口。Gr口用于HLR保存GPRS用戶數(shù)據(jù)和路由信息(IMSI、SGSN地址),每個(gè)IMSI還包含分組數(shù)據(jù)協(xié)議PDP信息,該信息包括PDP類型(X.25或IP)、PDP地址及其QoS等級(jí)以及路由信息。

(5)?Gi口。GGSN通過(guò)Gi口實(shí)現(xiàn)GPRS網(wǎng)和外部數(shù)據(jù)網(wǎng)(PDP)的互聯(lián)。

3.GPRS業(yè)務(wù)

GPRS網(wǎng)主要為移動(dòng)數(shù)據(jù)用戶提供突發(fā)性數(shù)據(jù)業(yè)務(wù),能快速建立連接,無(wú)建鏈時(shí)延。GPRS特別適用于頻繁傳送小量數(shù)據(jù)和非頻繁傳送大量數(shù)據(jù)。GPRS除能提供PTP(點(diǎn)對(duì)點(diǎn))和PTM(點(diǎn)對(duì)多點(diǎn))數(shù)據(jù)業(yè)務(wù)外,還能支持補(bǔ)充業(yè)務(wù)和短信息業(yè)務(wù)。

GPRS網(wǎng)提供的承載業(yè)務(wù)包括:

(1)點(diǎn)對(duì)點(diǎn)面向無(wú)連接網(wǎng)絡(luò)業(yè)務(wù)(PTP-CLNS)。

(2)點(diǎn)對(duì)點(diǎn)面向連接的數(shù)據(jù)業(yè)務(wù)(PTP-CONS)。

(3)點(diǎn)對(duì)多點(diǎn)數(shù)據(jù)業(yè)務(wù)(PTM)。

(4)其他業(yè)務(wù)。7.3.5藍(lán)牙技術(shù)

藍(lán)牙(Bluetooth)技術(shù)是一種近距離無(wú)線通信的開(kāi)放性全球規(guī)范,它定位于現(xiàn)代通信網(wǎng)絡(luò)末端的無(wú)線連接,其目的是提供一個(gè)低成本、高可靠性、支持較高質(zhì)量的語(yǔ)音和數(shù)據(jù)傳輸?shù)臒o(wú)線通信網(wǎng)絡(luò)。

整個(gè)藍(lán)牙協(xié)議的體系結(jié)構(gòu)包括底層硬件模塊、中間協(xié)議層和高端應(yīng)用層,如圖7-19所示。圖7?19藍(lán)牙體系結(jié)構(gòu)

1.藍(lán)牙硬件模塊

硬件模塊中的射頻部分通過(guò)2.4GHz無(wú)需授權(quán)的ISM頻段,實(shí)現(xiàn)數(shù)據(jù)位流的過(guò)濾和傳輸,主要定義藍(lán)牙收發(fā)器應(yīng)滿足的要求?;鶐迂?fù)責(zé)跳頻和藍(lán)牙數(shù)據(jù)及信息幀的傳輸。鏈路管理層負(fù)責(zé)連接的建立和拆除以及鏈路的安全和控制。藍(lán)牙采用跳頻技術(shù)來(lái)消除干擾和降低衰落,跳頻速率為1600次/秒。目前,藍(lán)牙在兩種頻段上定義了兩種信道分配方案。一種是美國(guó)、歐洲和其他大多數(shù)國(guó)家的標(biāo)準(zhǔn),頻段為2.400~2.4835GHz,信道分配為f=2402+kMHz(k=0,…,78),共計(jì)79個(gè)跳頻信道;由于法國(guó)等在此頻段范圍有限制,因此使用另一種跳頻方案,頻段為2.4465~2.4835GHz,信道分配為f?=?2454?+?kMHz(k=0,…,22),共計(jì)23個(gè)跳頻信道。為減少帶外輻射和干擾,系統(tǒng)在上/下頻帶邊緣使用保護(hù)帶。對(duì)于79信道系統(tǒng),下保護(hù)帶是2MHz,上保護(hù)帶是3.5MHz。每個(gè)信道為1MHz帶寬,支持的信道配置如表7-2所示。表7-2信道配置

RF定義了三種功率級(jí)別,即100mW、2.5mW和1mW。設(shè)備功率為1mW(0dBm)時(shí),發(fā)射范圍一般可達(dá)10m。在發(fā)送過(guò)程中藍(lán)牙使用功率控制來(lái)限制發(fā)射功率。

藍(lán)牙為支持電路交換和分組交換分別定義了兩種鏈路類型,即同步面向連接(SCO)鏈路和異步面向無(wú)連接(ACL)鏈路。

藍(lán)牙組網(wǎng)時(shí)最多可以由256個(gè)藍(lán)牙單元設(shè)備連接起來(lái)組成微微網(wǎng)(Piconet),其中1個(gè)主節(jié)點(diǎn)和7個(gè)從節(jié)點(diǎn)處于工作狀態(tài),而其他節(jié)點(diǎn)則處于空閑模式。藍(lán)牙的節(jié)能狀態(tài)包括三種,依照節(jié)能效率以升序排列依次是呼吸(Sniff)、保持(Hold)和停等(Park)。在Sniff狀態(tài),從節(jié)點(diǎn)降低了從微微網(wǎng)收聽(tīng)消息的速率;在Hold狀態(tài),節(jié)點(diǎn)停止傳送數(shù)據(jù),一旦激活,數(shù)據(jù)傳遞立即重新開(kāi)始;在Park狀態(tài),節(jié)點(diǎn)被賦予Park節(jié)點(diǎn)地址PMA,并以一定間隔監(jiān)聽(tīng)主節(jié)點(diǎn)的消息。主節(jié)點(diǎn)的消息包括:詢問(wèn)該節(jié)點(diǎn)是否愿意成為活動(dòng)節(jié)點(diǎn),詢問(wèn)任何停等節(jié)點(diǎn)是否愿意成為活動(dòng)節(jié)點(diǎn),廣播消息。

2.藍(lán)牙軟件模塊

藍(lán)牙底層硬件模塊與上層軟件模塊之間的消息和數(shù)據(jù)傳遞必須通過(guò)藍(lán)牙主機(jī)控制器接口(HostControllerInterface,HCI)的解釋才能進(jìn)行。HCI提供了一個(gè)調(diào)用下層BB、LM、狀態(tài)和控制寄存器等硬件的統(tǒng)一命令接口。HCI以上的協(xié)議軟件實(shí)體運(yùn)行在主機(jī)上,以下的功能由藍(lán)牙設(shè)備完成,二者之間通過(guò)傳輸層進(jìn)行交互。軟件模塊中L2CAP屬于數(shù)據(jù)鏈路層的一部分,負(fù)責(zé)向上層提供面向連接和無(wú)連接的數(shù)據(jù)服務(wù),其功能包括協(xié)議的復(fù)用能力、分組的分割和重組、組提取。SDP為應(yīng)用提供了一個(gè)發(fā)現(xiàn)可用協(xié)議和決定這些可用協(xié)議特性的方法。SDP強(qiáng)調(diào)藍(lán)牙環(huán)境的特性,使用基于客戶機(jī)/服務(wù)器機(jī)制定義根據(jù)藍(lán)牙服務(wù)類型和屬性發(fā)現(xiàn)服務(wù)的方法,還提供了服務(wù)瀏覽的方法。RFCOMM是射頻通信協(xié)議,可以仿真串行電纜接口協(xié)議。通過(guò)RFCOMM,藍(lán)牙可以在無(wú)線環(huán)境下實(shí)現(xiàn)對(duì)高層協(xié)議,如PPP、TCP/IP、WAP等的支持。RFCOMM還支持AT命令集,從而實(shí)現(xiàn)移動(dòng)電話、傳真機(jī)等與MODEM之間的無(wú)線連接。TCS是一個(gè)基于ITU-T建議Q.931、面向比特的協(xié)議,定義了藍(lán)牙設(shè)備間建立語(yǔ)音和數(shù)據(jù)呼叫的控制信令,用于處理藍(lán)牙TCS設(shè)備的移動(dòng)性管理過(guò)程。

3.藍(lán)牙應(yīng)用模型

藍(lán)牙的應(yīng)用模式相當(dāng)廣泛。結(jié)合藍(lán)牙SIG定義的幾種基本應(yīng)用模型,可以列出以下一些顯著的應(yīng)用模式:

·一機(jī)多用電話模式;

·頭戴式耳機(jī)/聽(tīng)筒設(shè)備模式;

·互聯(lián)網(wǎng)網(wǎng)橋模式;

·局域網(wǎng)接入模式;

·文件傳輸模式;

·同步運(yùn)行模式;

·數(shù)字影像模式;

·智能汽車系統(tǒng)模式;

·家庭信息網(wǎng)絡(luò)模式;

·流動(dòng)辦公與電子商務(wù)模式。概括起來(lái),可以將藍(lán)牙的應(yīng)用模型劃分為以下三種:

(1)替代線纜(CableReplacement)。

(2)因特網(wǎng)橋(InternetBridge)。

(3)臨時(shí)組網(wǎng)(AdHocNetwork)。

4.藍(lán)牙技術(shù)存在的問(wèn)題

藍(lán)牙技術(shù)存在的主要問(wèn)題包括:

(1)?2.4GHzISM頻段使用的電磁兼容和頻率共用問(wèn)題。

(2)互操作與兼容性問(wèn)題。

(3)保密安全問(wèn)題。

(4)與其他相關(guān)技術(shù)的競(jìng)爭(zhēng)問(wèn)題。

(5)價(jià)格、可靠性等綜合吸引力問(wèn)題。7.3.6Internet

IP是Internet上最基本的協(xié)議。它提供了無(wú)連接的、基于分組的通信?;谝蛱鼐W(wǎng)的嵌入式系統(tǒng)已經(jīng)在工業(yè)自動(dòng)化中有了良好的應(yīng)用。使用因特網(wǎng)的信息工具已快速成為嵌入式運(yùn)算中IP的另一用途。

IP不是定義在特定的物理實(shí)現(xiàn)上,它是一種網(wǎng)際互聯(lián)標(biāo)準(zhǔn)。因特網(wǎng)分組采取能夠被其他網(wǎng)絡(luò)(例如以太網(wǎng))承載的形式。一般來(lái)說(shuō),一個(gè)因特網(wǎng)分組從源地址到目的地址會(huì)經(jīng)過(guò)幾種不同的網(wǎng)絡(luò)。IP允許數(shù)據(jù)通過(guò)這些網(wǎng)絡(luò),無(wú)損失地從一端用戶流動(dòng)到另一端用戶。IP和單個(gè)網(wǎng)絡(luò)之間的關(guān)系如圖7-20所示。圖7?20因特網(wǎng)通信中的協(xié)議利用

IP分組的基本格式如圖7-21所示。頭和數(shù)據(jù)有效負(fù)荷都具有可變的長(zhǎng)度,最大長(zhǎng)度是65535字節(jié)。圖7?21IP分組結(jié)構(gòu)圖7-22顯示了IP和高級(jí)因特網(wǎng)服務(wù)之間的關(guān)系。使用IP作為基礎(chǔ),TCP被用來(lái)為批量文件傳輸提供文件傳輸協(xié)議(FTP),超文本傳輸協(xié)議(HTTP)用于萬(wàn)維網(wǎng)服務(wù),簡(jiǎn)單郵件傳輸協(xié)議(SMTP)用于E-mail,Telnet用于虛擬終端。另外一個(gè)單獨(dú)的用戶數(shù)據(jù)報(bào)協(xié)議(UDP)被用作由簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)提供的網(wǎng)絡(luò)管理服務(wù)的基礎(chǔ)。圖7?22因特網(wǎng)服務(wù)棧 7.4基于網(wǎng)絡(luò)的設(shè)計(jì)示例

7.4.1遠(yuǎn)程溫度檢測(cè)系統(tǒng)

該系統(tǒng)是在C8051F020單片機(jī)上實(shí)現(xiàn)基于μC/OS-Ⅱ的遠(yuǎn)程多點(diǎn)溫度檢測(cè)的。它采用C/S模式,設(shè)計(jì)為簡(jiǎn)單的應(yīng)用服務(wù)器,用戶可以通過(guò)網(wǎng)絡(luò)中任一PC機(jī)的瀏覽器界面完成對(duì)溫度的實(shí)時(shí)檢測(cè)。

1.硬件設(shè)計(jì)

系統(tǒng)的硬件結(jié)構(gòu)如圖7-23所示。圖7?23系統(tǒng)硬件結(jié)構(gòu)框圖

2.軟件實(shí)現(xiàn)

1)?TCP/IP協(xié)議實(shí)現(xiàn)

介質(zhì)訪問(wèn)層主要由以太網(wǎng)控制器RTL8019AS來(lái)實(shí)現(xiàn),其數(shù)據(jù)通信協(xié)議采用IEEE802.3標(biāo)準(zhǔn),它只處理接收地址與本機(jī)物理地址相符或?yàn)閺V播地址的以太幀,并且只對(duì)ARP和IP數(shù)據(jù)報(bào)進(jìn)行處理。

網(wǎng)絡(luò)層實(shí)現(xiàn)IP、ARP和ICMP協(xié)議。IP數(shù)據(jù)報(bào)的首部保留20字節(jié)的基本控制信息,每個(gè)IP數(shù)據(jù)報(bào)包含一個(gè)分片,實(shí)現(xiàn)完整的ARP協(xié)議。對(duì)于ICMP協(xié)議,只實(shí)現(xiàn)ICMP中類型號(hào)為0,代碼為0的Ping應(yīng)答協(xié)議。傳輸層實(shí)現(xiàn)TCP協(xié)議。在系統(tǒng)中,TCP協(xié)議只用于支持HTTP協(xié)議。由于在連接時(shí)系統(tǒng)一直處于被動(dòng)服務(wù)的狀態(tài),因此在設(shè)計(jì)中省去了SYN-SENT狀態(tài)和CLOSED狀態(tài),讓它一開(kāi)始就處于LISTEN狀態(tài),以監(jiān)聽(tīng)客戶端的連接請(qǐng)求,避免了主動(dòng)打開(kāi)的操作,可更高效地服務(wù)于客戶機(jī)。當(dāng)該服務(wù)器發(fā)出數(shù)據(jù)報(bào)時(shí),并不存儲(chǔ)這個(gè)數(shù)據(jù)報(bào),只是記錄下這個(gè)數(shù)據(jù)報(bào)的狀態(tài)信息。由于系統(tǒng)中數(shù)據(jù)傳輸量少,因此滑動(dòng)窗口設(shè)置為一個(gè)固定值(1500字節(jié))。

應(yīng)用層實(shí)現(xiàn)HTTP協(xié)議。現(xiàn)場(chǎng)監(jiān)測(cè)設(shè)備與用戶的交互式數(shù)據(jù)交換通過(guò)HTTP協(xié)議來(lái)實(shí)現(xiàn)。HTTP在端口80上使用TCP的服務(wù)。

系統(tǒng)TCP/IP協(xié)議部分的程序流程如圖7-24所示。圖7?24ICP/IP協(xié)議部分的程序流程圖

2)?μC/OS-Ⅱ的溫度監(jiān)測(cè)實(shí)時(shí)管理

首先,需要完成μC/OS-Ⅱ在C8051F020單片機(jī)上的移植。

由于每個(gè)嵌入式監(jiān)測(cè)系統(tǒng)可以同時(shí)與多個(gè)PC機(jī)連接,向不同用戶提供信息,因此在OS_CFG.H頭文件中定義了一個(gè)包含各種連接信息的結(jié)構(gòu)變量。當(dāng)監(jiān)測(cè)系統(tǒng)收到TCP報(bào)文時(shí),檢查該報(bào)文使用的連接狀態(tài)信息是否與已存在的連接相符,如果不存在則建立新的連接。這種處理可以使嵌入式監(jiān)測(cè)系統(tǒng)同時(shí)處理來(lái)自同一或不同PC機(jī)的連接。OS_CFG?.?H頭文件如下:存儲(chǔ)系統(tǒng)的使用方式是將C8051F020的XRAM作為輸入/輸出數(shù)據(jù)的內(nèi)部緩沖區(qū),將RTL8019AS內(nèi)部的16?KBSRAM作為單片機(jī)的外部數(shù)據(jù)緩沖區(qū),存儲(chǔ)輸入/輸出以太幀隊(duì)列。這樣,C8051F020就可以采用查詢方式讀取以太幀,并有充足的時(shí)間處理數(shù)據(jù)。由于輸入幀的大小不定,同時(shí)在ARP數(shù)據(jù)報(bào)發(fā)送或接收時(shí),輸出幀必須存在輸出緩沖區(qū)中,因此輸入/輸出數(shù)據(jù)緩沖區(qū)在C8051F020的XRAM中使用動(dòng)態(tài)分配。網(wǎng)頁(yè)存儲(chǔ)于單片機(jī)的FlashMemory中。當(dāng)嵌入式系統(tǒng)向PC機(jī)發(fā)送網(wǎng)頁(yè)時(shí),先將網(wǎng)頁(yè)從FlashMemory中取出放入XRAM,再根據(jù)用戶請(qǐng)求進(jìn)行整理后放入RTLS019AS的SRAM,最后發(fā)送到以太網(wǎng)上。作為網(wǎng)絡(luò)服務(wù)器,C8051F020需要注意以下幾點(diǎn):

(1)服務(wù)器向一客戶機(jī)發(fā)送ARP查詢分組后,如果在0.5?s內(nèi)未收到ARP響應(yīng)分組,則重發(fā)ARP分組。

(2)如果TCP連接在0.5s內(nèi)未被激活,則初始化斷開(kāi)連接。

(3)為了控制丟失數(shù)據(jù)報(bào),TCP在規(guī)定時(shí)間(0.5s)內(nèi)如果沒(méi)有收到確認(rèn)包,就重組這個(gè)包并發(fā)送,這樣不需要占用存儲(chǔ)區(qū)來(lái)存儲(chǔ)包。當(dāng)TCP收到客戶機(jī)接收到信息包的確認(rèn)包后,就斷開(kāi)連接。下面是基于μC/OS-Ⅱ的任務(wù)創(chuàng)建、優(yōu)先級(jí)設(shè)置及延時(shí)時(shí)間設(shè)置,根據(jù)需要在系統(tǒng)中創(chuàng)建了5個(gè)任務(wù):

任務(wù)1: OSTaskCreate(eth_arive,0,&mystack1[0],4);

//查詢RTL8019AS,是否有以太幀到達(dá)

OSTimeDlyHMSM(0,0,0,500); //延時(shí)0.5s

任務(wù)2: OSTaskCreate(arp_retran,0,&mystack2[0],5);

//重發(fā)ARP分組

OSTimeDlyHMSM(0,0,1,0); //延時(shí)1s任務(wù)3: OSTaskCreate(tcp_inact,0,&mystack3[0],6);

//初始化斷開(kāi)連接

OSTimeDlyHMSM(0,0,1,500); //延時(shí)1.5s

任務(wù)4: OSTaskCreate(read_temp,0,&mystack3[0],7);

//讀溫度值

OSTimeDlyHMSM(0,0,2,0); //延時(shí)2s

任務(wù)5: OSTaskCreate(tcp_retran,0,&mystack3[0],8);

//TCP數(shù)據(jù)報(bào)重發(fā)

OSTimeDlyHMSM(0,0,2,500); //延時(shí)2.5s7.4.2基于VoIP和藍(lán)牙的無(wú)線電話系統(tǒng)

整個(gè)系統(tǒng)設(shè)計(jì)由1臺(tái)認(rèn)證服務(wù)器、2臺(tái)基站(PC1,PC2)、14臺(tái)移動(dòng)終端和多臺(tái)有線終端組成。其中基站以藍(lán)牙模塊ROK101008為無(wú)線接口,可實(shí)現(xiàn)移動(dòng)終端與基站的高速通信;移動(dòng)終端以ARM為核心處理器。系統(tǒng)框圖如圖7-25所示。圖7?25系統(tǒng)總體框圖

1.移動(dòng)終端設(shè)計(jì)

移動(dòng)終端以無(wú)線方式接入基站,可提供呼叫、來(lái)電顯示、語(yǔ)音通話等多種服務(wù),由藍(lán)牙模塊ROK101008提供高速數(shù)據(jù)傳輸。語(yǔ)音壓縮編碼算法采用連續(xù)可變斜率增量調(diào)制(CVSD)方案,通過(guò)ARM處理器實(shí)現(xiàn)。ARM處理器采用Philips公司的LPC2104芯片。ARM處理器實(shí)現(xiàn)的功能有語(yǔ)音編/解碼、模擬接口、藍(lán)牙HCI接口、鍵盤處理與液晶顯示等。移動(dòng)終端的硬件組成如圖7-26所示。圖7?26移動(dòng)終端硬件結(jié)構(gòu)圖硬件層設(shè)計(jì)主要包括串口和SPI總線接口設(shè)計(jì),它們用于收/發(fā)語(yǔ)音數(shù)據(jù)、處理鍵盤中斷和完成對(duì)A/D、D/A以及液晶顯示的控制。任務(wù)層設(shè)計(jì)主要是建立了8個(gè)任務(wù),按其優(yōu)先級(jí)從高到低排列,依次為監(jiān)控任務(wù)、鍵盤處理任務(wù)、模擬接口任務(wù)、藍(lán)牙接口任務(wù)、編碼任務(wù)、解碼任務(wù)、液晶顯示任務(wù)和空閑任務(wù)。其中,監(jiān)視任務(wù)和空閑任務(wù)是為增強(qiáng)系統(tǒng)穩(wěn)健性而設(shè)計(jì)的。各任務(wù)的狀態(tài)有4種:就緒態(tài)、運(yùn)行態(tài)、等待/掛起態(tài)以及中斷態(tài)。在操作系統(tǒng)層,基于μC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論