- 相關推薦
一種雙MCU結構的嵌入式Internet接入服務器
摘要:針對某些單MCU結構的嵌入式Internet服務器性能價格比低且靈活性差的問題,提出了一種雙MCU結構的嵌入式Internet接入服務器(DMCUEIAS)。它使嵌入式Internet的用戶交互和設備控制分離,用戶通過Internet不僅可以監(jiān)視和控制現(xiàn)場設備,而且利用RAC可以將任務下載到現(xiàn)場;解決了低端單MCU處理能力低高端MCU成本高的矛盾,并能夠靈活地實現(xiàn)現(xiàn)場控制程序的功能擴展和升級。關鍵詞:雙MCU結構嵌入式InternetRAC嵌入式TCP/IP協(xié)議棧
嵌入式Internet[1]是指借助于Internet監(jiān)視和控制工廠的機器、通信設備、數(shù)據(jù)采集系統(tǒng)、過程控制系統(tǒng)、醫(yī)療設備、機頂盒、車輛控制器、辦公機械、個人數(shù)字助理(PDA)和其它設備。隨著Internet/Intranet的迅猛發(fā)展,將Internet延伸到8位、16位、32位單片機,實現(xiàn)基于Internet的遠程數(shù)據(jù)采集、遠程控制、自動報警、上傳/下載數(shù)據(jù)文件、自動發(fā)送EMALL等功能已經(jīng)成為嵌入式系統(tǒng)發(fā)展的必然趨勢。就嵌入式Internet系統(tǒng)而言,實現(xiàn)Internet通信協(xié)議及其服務,同時還要控制現(xiàn)場設備將占用大量資源,而嵌入式Internet系統(tǒng)中大量存在的是8位和16位MCU,這些系統(tǒng)在某些環(huán)境下實現(xiàn)上述功能將十分困難[2]。如果采用32位或64位的處理器,無疑會增加成本。為此,本文提出了一種雙MCU結構的嵌入式Internet接入服務器DMCUEIAS。其中一個MCU作為Internet服務器與用戶交互(稱作InetMCU),它支持TCP/IP協(xié)議棧并運行Internet服務程序,形成一個用戶可以通過瀏覽器進行交互的服務器;另一個MCU專門用作設備服務器(稱作DevMCU)控制多個設備。InetMCU和DevMCU通過RAC協(xié)議實現(xiàn)通信,完成現(xiàn)場設備的控制。這樣可以提高性能價格比,具有操作簡便、功能易擴展等特點。
1硬件結構
雙MCU結構的嵌入式Internet接入服務器DMCUEIAS采用ATMEL公司生產(chǎn)的AT90S8515微控制器作為InetMCU,采用AT89S53作為DevMCU,系統(tǒng)體系結構如圖1。其中,DevMCU擁有12K字節(jié)的Flash程序存儲器,256字節(jié)的片內(nèi)RAM,3個可預分頻的16位定時儲器,256字節(jié)的片內(nèi)RAM,3個可預分頻的16位定時器、計數(shù)器,32位I/O口和一個內(nèi)置的全雙工UART;InetMCU擁有8K字節(jié)的Flash程序存儲器,512字節(jié)的片內(nèi)EEPROM,512字節(jié)的片內(nèi)RAM,1個可預分頻的8位定時器、計數(shù)器,1個可預分頻、具有比較、捕捉和8/9/10位PWM功能的16位定時器和計數(shù)器,用于程序下載的SPI口,32位I/O和一個內(nèi)置的全雙工UART。InetMCU的時鐘頻率是8MHz,可以高速地通過ISA口傳遞數(shù)據(jù)(約2Mbps)。通過一個時鐘周期內(nèi)執(zhí)行一條指令,InetMCU可以取得近1MIPS/MHz的性能。通過在單一芯片內(nèi)將一個增強性的8位RISCCPU與可下載的Flash結合,使它非常適合多種嵌入式應用要求,具有高度靈活性和低成本的特點。DMCUEISA的以太網(wǎng)控制器采用臺灣Realtek公司的RTL8019AS(10Mbps)。其采用全雙工通信方式,使幀的發(fā)送與接收能夠在一條通信線路上同時進行。使信道的帶寬增加一倍,實現(xiàn)了基于IEEE802.3協(xié)議標準的MAC層(MediaAccessControlLayer)的所有功能。內(nèi)置的雙DMA通道FIFO完成簡單有效的包管理(數(shù)據(jù)幀的接收和發(fā)送)功能,本地DMA通道的傳輸速率高達10Mbps。其優(yōu)越的性能價格比使它非常適合嵌入式Internet系統(tǒng)。
在InetMCU的片內(nèi)Flash中固化的服務程序可以現(xiàn)任務調(diào)度、線程支持、文件系統(tǒng)、內(nèi)存管理、網(wǎng)絡系統(tǒng)(TCP/IP)和I/O管理等。通過20位(8位A口,8位C口,D口的PD0、PD1、PD2、PD7)I/O口連接到廉價的ISA總線的網(wǎng)卡芯片RTL8019AS卡,能夠?qū)ν猓ㄈ鏘nternet上的用戶)提供一種通過以太網(wǎng)接口訪問嵌入式系統(tǒng)的方法。InetMCU的片內(nèi)EEPROM存儲授權的用戶名、密碼和其固定的IP地址及MAC地址。遠程用戶訪問DMCUEIAS時,要比較用戶名密碼,只有合法用戶可以通過Internet訪問DMCUEIAS。InetMCU的片內(nèi)RAM存儲臨時數(shù)據(jù),同時外擴了32K字節(jié)的SEEPROM。它采用AT24C256存儲不同的控制網(wǎng)頁,完成必要的文件系統(tǒng)功能,通過WEB頁可以實現(xiàn)遠程用戶與DMCUEIAS的交互。InetMCU用12位(8位B口作為數(shù)據(jù)口,D口的PD3、PD4、PD5、PD6作為控制口)I/O完成與DevMCU的通信。DevMCU的片內(nèi)Flash已經(jīng)固化DCX51嵌入式實時操作系統(tǒng)、通信服務和遠程存取控制服務(RAC),負責現(xiàn)場設備的控制。DevMCU的另外16位(8位A口,8位C口作為數(shù)據(jù))I/O口與ISP相連,完成必要的邏輯功能,最后由ISP的IO56~IO63(8位)通過功率驅(qū)動直接驅(qū)動設備。
2軟件體系結構
2.1TCP/IP協(xié)議
由于系統(tǒng)的資源有限,要求實現(xiàn)協(xié)議時應從具體需求著眼,而不是以實現(xiàn)完整的協(xié)議為主要目的。DMCUEIAS要求能夠提供WWW服務,并選擇以太網(wǎng)為其運行的網(wǎng)絡環(huán)境。這樣用戶可以利用瀏覽器通過HTTP協(xié)議瀏覽事先下載到InetMCU的SEEPROM中的控制網(wǎng)頁,通過該網(wǎng)頁傳遞控制命令到InetMCU。客戶端發(fā)來的數(shù)據(jù)以HTTP協(xié)議標準發(fā)到DMCUEIAS。這是因為HTTP協(xié)議是國際標準,它被所有瀏覽器支持,能保證用戶可以通過任何地方的瀏覽器下達命令。HTTP協(xié)議建立在TCP協(xié)議的基礎上。建立連接時經(jīng)過三次握手,每次傳輸數(shù)據(jù)都要求服務器給予確認;如無確認,則重發(fā),保證從客戶端到InetMCU的數(shù)據(jù)正確、無整。
軟件部分要實現(xiàn)的協(xié)議[3]至少是:應用層上負責Web頁面請求和應答的HTTP協(xié)議;位于傳輸層上保證數(shù)據(jù)進行可靠傳輸?shù)腡CP協(xié)議[4],在數(shù)據(jù)傳輸時采用帶重傳機制的停-等協(xié)議,有效保證數(shù)據(jù)的傳輸;位于網(wǎng)絡層上進行數(shù)據(jù)傳輸?shù)腎P協(xié)議;IP[5]是TCP/IP協(xié)議族中最為核心的協(xié)議,它對收到的IP數(shù)據(jù)報進行分用,提交TCP或ICMP協(xié)議處理,對TCP或ICMP[6]報文進行IP封裝,交數(shù)據(jù)鏈路層裝幀發(fā)送是IP協(xié)議負責的主要任務,因此對這兩個功能也要進行實現(xiàn);實現(xiàn)32位IP地址到48位網(wǎng)卡地址轉(zhuǎn)換的ARP協(xié)議,完全可以滿足網(wǎng)絡上主機對InetMCU的IP地址進行解析的需求;實現(xiàn)網(wǎng)卡的驅(qū)動程序。Ping這一常用的網(wǎng)絡診斷工具也應該被提供,所以與Ping相應的ICMP協(xié)議應該予以實現(xiàn)。
2.2DCX嵌入式實時操作系統(tǒng)
DMCUEIAS基于實時多任務操作系統(tǒng)“&”,這是一段在DMCUEIAS啟動后首先執(zhí)行的后臺程序。用戶的應用程序是運行于RTOS上的各個任務,RTOS[8]根據(jù)各個任務時要求,進行資源(包括存儲器、外設等)管理、消息管理、任務調(diào)度、異常處理等工作。在RTOS[9]支持的DMCUEIAS系統(tǒng)中,每個任務均有一個優(yōu)先級。DMCUEIAS根據(jù)各個任務的優(yōu)先級,動態(tài)切換各個任務,保證實時性的要求。
DCX(DistributedControlExecutive)嵌入式實時操作系統(tǒng)[10]相當于實時操作系統(tǒng)的核,本文討論的DMCUEIAS支持8位的DCX51。DCX51執(zhí)行程序已固化在DevMCU中,為BITBUS網(wǎng)絡上的節(jié)點提供多任務能力,并且控制DevMCU和InetMCU之間的通信。DCX51操作系統(tǒng)提供中斷處理,能實時地響應外事件發(fā)出的中斷服務請求、任務間的通訊、任務的同步,內(nèi)部存儲器管理對應用程序代碼段和數(shù)據(jù)區(qū)以不同方式管理;定時服務以及其于優(yōu)先級的搶占式任務調(diào)度方法。新建任務如果優(yōu)先級最高,可立即運行,否則處于就緒狀態(tài)。就緒隊列中的任務按優(yōu)先級順序排列,下一次運行的總是就緒階列中優(yōu)先級最高的任務,同優(yōu)先級的任務則按就緒時間順序排列是。DCX支持多任務,0號任務RAC是系統(tǒng)任務,它管理目標機與上位機通信。含有DCX51的DevMCU作為主控芯片安裝到目標機上,分布到工業(yè)現(xiàn)場中控制設備。對于每部分功能,DCX都提供系統(tǒng)調(diào)用,這些調(diào)用就是用戶任務與DCX的接口。這些服務綜合在一起就實現(xiàn)一個實時系統(tǒng)。這樣在DMCUEIAS中,用戶主要完成控制外部設備的各個程序模塊。
2.3RAC任務
任務是一個可調(diào)度的執(zhí)行單元,它由執(zhí)行代碼和只能由該任務存取的私有數(shù)據(jù)組成。RAC(RemoteAccessControl)任務,即遠程存取和控制,專門負責遠程任務的接收和發(fā)送。當信息發(fā)送到另一節(jié)點時,DCX51執(zhí)行程序發(fā)送信息到RAC任務(即任務0)。RAC任務內(nèi)含通信服務,它已經(jīng)隨同DCX51操作系統(tǒng)一道固化到DevMCU,通過DCX51,可以實現(xiàn)InetMCU與DevMCU的通信。它有兩種類型的服務:數(shù)據(jù)存取和任務控制。數(shù)據(jù)存取類的服務可以對DevMCU不同的存儲器段或I/O空間進行數(shù)據(jù)的讀或?qū)。任務控制類的服務可以下載一個任務的目標代碼到DevMCU,建立或刪除在DevMCU的一個任務。傳到InetMCU的數(shù)據(jù)通過RAC任務從InetMCU傳到DevMCU,再由DevMCU完成遠端設備的控制和訪問。
RAC任務的信息格式如表1。其中,Link是系統(tǒng)用于保存信息表的兩字節(jié)的參數(shù);Messagelength是RAC命令或回答的字節(jié)數(shù)。MT(Message-type):指定信息類型的一位;SE(src-ext)表示產(chǎn)生信息的任務是否在擴展節(jié)點上;DE(dest-ext):表示接收命令信息的任務駐留在擴展節(jié)點上,還是在一個設備上;Nodeaddress:只能通過PC系統(tǒng)接口進行傳遞的信息參數(shù)是0xff,當信息從同一節(jié)點的一個任務傳遞到另一個任務時,參數(shù)是"0";Sourcetask:是源節(jié)點發(fā)送任務的任務ID(0~7);Destinationtask:是目的任務的任務標識符;Command/respond:包含選擇規(guī)定的RAC任務的參數(shù)(不同服務其值也不同),RAC任務的響應信息包含了指示服務結果的狀態(tài)代碼;data:數(shù)據(jù),對不同RAC服務而不同。
表1RAC信息格式
Link(高字節(jié))Link(低字節(jié))MessageLengthMTSEDE00000NodeaddressSourcetaskDestinationtaskCommand/responddata
2.3.1RAC任務控制類
任務控制類允許用戶在遠程節(jié)點上使用適當?shù)腄CX51系統(tǒng)調(diào)用,或者控制遠程節(jié)點自身。在DMCUEIAS中用戶可以把指定的任務文件(必須是十六進制格式,如.hex)通過Internet下載到InetMCU里,然后通過下載后,客戶端還要發(fā)create命令激活下載的文件數(shù)據(jù),通過RAC任務create服務把命令傳到DevMCU,完成新任務的建立,實現(xiàn)控制設備。
用戶還可以控制其它服務如deletetask(刪除特定的任務,并禁止所有與該任務有關的中斷)、resetdevice(全部任務初始化),為此用戶必須知道當前運行的任務號。這需用戶事前發(fā)getfunctionids命令,DevMCU通過RAC任務的getfunctionids服務把ID號傳給InetMCU,并通過Internet返回到客戶端,用戶可對任務進行不同的操作(如刪除等)。
2.3.2RAC數(shù)據(jù)存取類
數(shù)據(jù)存取類使用戶可以對不同的存儲段或I/O空間進行數(shù)據(jù)的讀寫。在DMCUEIAS中,客戶端可以通過對DevMCU的I/O空間進行數(shù)據(jù)讀寫來控制設備,完成數(shù)據(jù)的寫(客戶端傳來的數(shù)據(jù)直接控制設備狀態(tài))、讀(把設備的狀態(tài)通過網(wǎng)絡傳給客戶端)。
RAC任務寫服務:寫數(shù)據(jù)到DevMCU的I/O口中?蛻舳藦腎nternet傳來的設備狀態(tài)碼從InetMCU寫到DevMCU,完成對設備的控制。
RAC任務讀服務:把DevMCU的I/O口內(nèi)容進行讀和顯示。當前設備的狀態(tài)(用一字節(jié)8位表示,即可同時控制8個設備)從DevMCU傳到InetMCU,然后通過Internet返回到遠端的客戶端,用戶就可知道設備的狀態(tài)。
3實驗結果
本文的實驗環(huán)境是:通過計算機的RS-232串口把編好的服務程序(采用匯編語言,這樣可減少程序代碼量,并提高執(zhí)行效率)固化到InetMCU的Flash存儲器里,實現(xiàn)較完整的服務器功能,如任務調(diào)度、線程的支持、文件系統(tǒng)、內(nèi)存管理、網(wǎng)絡系統(tǒng)(TCP/IP)和I/O管理。斷開程序下載線,雙MCU結構的嵌入式Internet接入服務器(DMCUEIAS)和運行客戶端程序的PC機只通過網(wǎng)線連接。了演示實驗結果,把8個設備用8個指示燈代替,對指示燈的控制通過二進制0(燈滅)、1(燈亮)實現(xiàn),即指示燈只有兩個狀態(tài),完成客戶遠端控制和讀取指示燈的狀態(tài)。這個實驗環(huán)境是對用戶通過Internet遠端控制設備的模擬。
驗證RAC任務控制類:首先下載文件fd.hex,它控制指示燈,使8個小燈按序接連亮,然后滅,下一個亮,到最后一個燈,再從第1個燈開始,重復循環(huán)……然后用戶發(fā)create命令,激活任務,實現(xiàn)實驗目的。在這里共有4個任務,所有用戶發(fā)的getfunctionids只有ID0、ID1、ID2、ID3返回,它們分別完成不同的功能。任務0即RAC任務,完成InetMCU與DevMCU的通信。客戶端可以分別控制這4個任務,對不同任務進行不處理(如刪除等)。驗證RAC數(shù)據(jù)存取類:用戶發(fā)“寫”0xff命令,則8個燈全亮(8位,每位控制1個燈);用戶發(fā)“讀”命令,則從DevMCU返回0xff,指示燈狀態(tài)是全亮。
但為使MCU與非標準設備有統(tǒng)一的接口,而不用提供專門的接口是下一步研究的方向。
【一種雙MCU結構的嵌入式Internet接入服務器】相關文章:
用GPRS modem實現(xiàn)嵌入式Internet接入系統(tǒng)04-12
MCU應用系統(tǒng)與Internet連接的一種新技術08-06
一種MCU時鐘系統(tǒng)的設計08-06
基于嵌入式PsoC的MCU選色控制器設計08-06
嵌入式藍牙PSTN語音接入點的設計與實現(xiàn)08-06
CAN總線的嵌入式Web服務器設計08-06