(2)系統(tǒng)的硬件設(shè)計方案 LPC2132微控制器是所設(shè)計的嵌入式Web服務(wù)器的核心,一方面LPC2132微控制器內(nèi)部要實現(xiàn)TCP/IP協(xié)議棧,并驅(qū)動網(wǎng)絡(luò)接口控制器ENC28J60,經(jīng)耦合隔離變壓器H1102和以太網(wǎng)以實現(xiàn)Internet接入;另一方面,LPC2132微控制器又是相應(yīng)控制系統(tǒng)的控制單元。 由于以太網(wǎng)的廣泛使用,本文選擇了最為常用的Internet接入方式,即通過以太網(wǎng)接入Internet.由美國Microchip公司生產(chǎn)的以太網(wǎng)控制芯片ENC28J60是本設(shè)計所選擇的網(wǎng)絡(luò)接口控制器,它集成了介質(zhì)訪問控制子層和物理層的功能,主要完成網(wǎng)絡(luò)接口層中數(shù)據(jù)幀的發(fā)送和接收。 H1102是一款耦合隔離變壓器,用來對網(wǎng)絡(luò)上的脈沖進(jìn)行轉(zhuǎn)換和濾波。H1102聯(lián)接RJ45接頭,可以直接接入以太網(wǎng)。 串行電平轉(zhuǎn)換模塊選用了Maxim公司出品的MAXSP3232E芯片。該芯片內(nèi)部含有倍增電路和轉(zhuǎn)換電路,只需+5V電源供電即可實現(xiàn)TTL電平到RS232C電平的轉(zhuǎn)換。RS232串口一方面是作為開發(fā)調(diào)試用的,一方面可以作為相應(yīng)的通信應(yīng)用。 I/O口擴(kuò)展包括系統(tǒng)的LED顯示電路、JTAG調(diào)試電路以及其他測試電路等。 (3)系統(tǒng)的軟件設(shè)計方案 Web服務(wù)器是在嵌入式TCP/IP協(xié)議棧的基礎(chǔ)上實現(xiàn)的一種應(yīng)用程序。從系統(tǒng)軟件工作過程來看,可將系統(tǒng)分三部分:第一部分,以太網(wǎng)控制器驅(qū)動程序的實現(xiàn);第二部分:嵌入式TCP/IP協(xié)議的實現(xiàn),這部分內(nèi)容在第一部分的基礎(chǔ)上,結(jié)合系統(tǒng)具體環(huán)境,對標(biāo)準(zhǔn)TCP/IP協(xié)議進(jìn)行簡化并在ARM7單片機(jī)上進(jìn)行移植;第三部分:應(yīng)用層部分,通過嵌入式TCP/IP協(xié)議對用戶數(shù)據(jù)進(jìn)行收發(fā)處理。這里是在應(yīng)用層實現(xiàn)HTTP協(xié)議來完成Web服務(wù)器功能的。 所以系統(tǒng)軟件設(shè)計部分主要包括了以太網(wǎng)控制器的驅(qū)動程序、嵌入式TCP/IP協(xié)議棧以及動態(tài)web網(wǎng)頁的實現(xiàn)等幾個模塊: 1)以太網(wǎng)控制器驅(qū)動程序是指LPC2132微控制器對ENC28J60芯片的驅(qū)動、控制過程。 2)在LPC2132微控制器內(nèi)部嵌入TCP/IP協(xié)議棧是系統(tǒng)實現(xiàn)的關(guān)鍵,它主要包括了ARP,ICMP,IP,TCP和HTTP協(xié)議的設(shè)計與實現(xiàn)。 3)動態(tài)網(wǎng)頁的實現(xiàn)。使用CGI技術(shù),可以實現(xiàn)動態(tài)信息的交換,從而達(dá)到遠(yuǎn)程監(jiān)視、控制的目的。 軟件設(shè)計中的另一任務(wù)是確定開發(fā)語言。對于嵌入式系統(tǒng)來說,掌握匯編語言的編程是至關(guān)重要的,即使使用高級語言來進(jìn)行編程,通過閱讀編譯出來的匯編代碼,也可以發(fā)現(xiàn)高級語言編程時需要優(yōu)化的地方,從而提高高級語言所編寫代碼的執(zhí)行效率。 同時嵌入式系統(tǒng)的資源緊張,要合理利用資源,提高運(yùn)行效率,關(guān)鍵部分、時間要求嚴(yán)格的部分還是需要使用匯編語言來完成。但匯編語言在代碼編寫和維護(hù)上效率較低,通用性不強(qiáng),在復(fù)雜的項目上還是選用高級語言比較合理。在本設(shè)計中,采用匯編語言編寫ARM7內(nèi)核的啟動代碼(boot loader),其它的程序采用C語言作為設(shè)計語言。它有很明顯的優(yōu)勢:C語言是一種編譯型程序設(shè)計語言,它兼顧了多種高級語言的特點(diǎn),有豐富的庫函數(shù)、運(yùn)算速度快,而且可以直接實現(xiàn)對系統(tǒng)硬件的控制,較匯編語言有更好的可讀性。 3.嵌入式Web服務(wù)器設(shè)計的實現(xiàn) (1)主程序流程 在主程序流程中,主要設(shè)計實現(xiàn)包括兩大部分:第一是對接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包:第二則是對要發(fā)送的數(shù)據(jù)進(jìn)行封裝并發(fā)送。 系統(tǒng)初始化模塊主要包括了LPC2I32微控制器的初始化、網(wǎng)絡(luò)接口芯片ENC28J60的初始化、TCP/IP協(xié)議棧中各標(biāo)志的初始化等: ARP處理模塊主要完成接收ARP請求并發(fā)送ARP響應(yīng);ICMP處理模塊主要完成接收ICMP回顯請求并發(fā)送ICMP回顯響應(yīng);TCP數(shù)據(jù)處理模塊主要完成對TCP數(shù)據(jù)報及HTTP數(shù)據(jù)的處理。 當(dāng)程序運(yùn)行時,首先對系統(tǒng)初始化,這時系統(tǒng)處于等待狀態(tài),直到有數(shù)據(jù)幀到達(dá)。ENC28J60接收完數(shù)據(jù)幀以后,首先去除幀頭,然后判斷該數(shù)據(jù)幀的報文是否為ARP包,若是,則進(jìn)行ARP數(shù)據(jù)包處理,若不是,則檢查數(shù)據(jù)報頭,看IP數(shù)據(jù)包的報文是否為ICMP數(shù)據(jù)包,若是ICMP數(shù)據(jù)包,則轉(zhuǎn)到ICMP數(shù)據(jù)處理子程序。若不是ICMP數(shù)據(jù)包,就繼續(xù)進(jìn)行判斷,看是否為TCP數(shù)據(jù)包,若為TCP數(shù)據(jù)包則轉(zhuǎn)入TCP數(shù)據(jù)處理子程序,若此時即不是ICMP數(shù)據(jù)包也不是TCP數(shù)據(jù)包,則將該包丟棄。 子程序的設(shè)計是為了完成TCP/IP協(xié)議體系的每一層的功能的,TCP/IP協(xié)議的每一層都是相互聯(lián)系的,但也是相對獨(dú)立的,具體由下面7個部分實現(xiàn):以太網(wǎng)驅(qū)動程序、以太網(wǎng)層程序、ARP協(xié)議處理程序、IP協(xié)議處理程序、ICMP協(xié)議處理程序、TCP協(xié)議處理程序、HTTP協(xié)議處理程序。 |
|