摘? 要: 針對(duì)某些單MCU結(jié)構(gòu)的嵌入式" title="的嵌入式">的嵌入式Internet服務(wù)器性能價(jià)格比低且靈活性差的問(wèn)題,提出了一種雙MCU結(jié)構(gòu)的嵌入式Internet接入服務(wù)器(DMCUEIAS)。它使嵌入式Internet的用戶(hù)交互和設(shè)備控制分離,用戶(hù)通過(guò)Internet不僅可以監(jiān)視和控制現(xiàn)場(chǎng)設(shè)備,而且利用RAC可以將任務(wù)下載到現(xiàn)場(chǎng);解決了低端單MCU處理能力低和高端MCU成本高的矛盾,并能夠靈活地實(shí)現(xiàn)現(xiàn)場(chǎng)控制程序的功能擴(kuò)展和升級(jí)。
關(guān)鍵詞: 雙MCU結(jié)構(gòu)? 嵌入式Internet? RAC? 嵌入式TCP/IP" title="TCP/IP">TCP/IP協(xié)議棧
?
嵌入式Internet[1]是指借助于Internet監(jiān)視和控制工廠的機(jī)器、通信設(shè)備、數(shù)據(jù)采集系統(tǒng)、過(guò)程控制系統(tǒng)、醫(yī)療設(shè)備、機(jī)頂盒、車(chē)輛控制器、辦公機(jī)械、個(gè)人數(shù)字助理(PDA)和其它設(shè)備。隨著Internet/Intranet的迅猛發(fā)展,將Internet延伸到8位、16位、32位單片機(jī),實(shí)現(xiàn)基于Internet的遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程控制、自動(dòng)報(bào)警、上傳/下載數(shù)據(jù)文件、自動(dòng)發(fā)送EMAIL等功能已經(jīng)成為嵌入式系統(tǒng)發(fā)展的必然趨勢(shì)。就嵌入式Internet系統(tǒng)而言,實(shí)現(xiàn)Internet通信協(xié)議及其服務(wù),同時(shí)還要控制現(xiàn)場(chǎng)設(shè)備將占用大量資源,而嵌入式Internet系統(tǒng)中大量存在的是8位和16位MCU,這些系統(tǒng)在某些環(huán)境下實(shí)現(xiàn)上述功能將十分困難[2]。如果采用32位或64位的處理器,無(wú)疑會(huì)增加成本。為此,本文提出了一種雙MCU結(jié)構(gòu)的嵌入式Internet接入服務(wù)器DMCUEIAS。其中一個(gè)MCU作為Internet服務(wù)器與用戶(hù)交互(稱(chēng)作InetMCU),它支持TCP/IP協(xié)議棧并運(yùn)行Internet服務(wù)程序,形成一個(gè)用戶(hù)可以通過(guò)瀏覽器進(jìn)行交互的服務(wù)器;另一個(gè)MCU專(zhuān)門(mén)用作設(shè)備服務(wù)器(稱(chēng)作DevMCU)控制多個(gè)設(shè)備。InetMCU和DevMCU通過(guò)RAC協(xié)議實(shí)現(xiàn)通信,完成現(xiàn)場(chǎng)設(shè)備的控制。這樣可以提高性能價(jià)格比,具有操作簡(jiǎn)便、功能易擴(kuò)展等特點(diǎn)。
1 硬件結(jié)構(gòu)
雙MCU結(jié)構(gòu)的嵌入式Internet接入服務(wù)器DMCUEIAS采用ATMEL公司生產(chǎn)的AT90S8515微控制器作為InetMCU,采用AT89S53作為DevMCU,系統(tǒng)體系結(jié)構(gòu)如圖1。其中,DevMCU擁有12K字節(jié)的Flash程序存儲(chǔ)器,256字節(jié)的片內(nèi)RAM,3個(gè)可預(yù)分頻的16位定時(shí)器、計(jì)數(shù)器,32位I/O" title="I/O">I/O口和一個(gè)內(nèi)置的全雙工UART;InetMCU擁有8K字節(jié)的Flash程序存儲(chǔ)器,512字節(jié)的片內(nèi)EEPROM,512字節(jié)的片內(nèi)RAM,1個(gè)可預(yù)分頻的8位定時(shí)器、計(jì)數(shù)器,1個(gè)可預(yù)分頻、具有比較、捕捉和8/9/10位PWM功能的16位定時(shí)器和計(jì)數(shù)器,用于程序下載的SPI口,32位I/O口和一個(gè)內(nèi)置的全雙工UART。InetMCU的時(shí)鐘頻率是8MHz,可以高速地通過(guò)ISA口傳遞數(shù)據(jù)(約2Mbps)。通過(guò)一個(gè)時(shí)鐘周期內(nèi)執(zhí)行一條指令,InetMCU可以取得近1MIPS/MHz的性能。通過(guò)在單一芯片內(nèi)將一個(gè)增強(qiáng)性能的8位RISC CPU與可下載的Flash結(jié)合,使它非常適合多種嵌入式應(yīng)用要求,具有高度靈活性和低成本的特點(diǎn)。DMCUEIAS的以太網(wǎng)控制器采用臺(tái)灣Realtek公司的RTL8019AS(10Mbps)。其采用全雙工通信方式,使幀的發(fā)送與接收能夠在一條通信線(xiàn)路上同時(shí)進(jìn)行。使信道的帶寬增加一倍,實(shí)現(xiàn)了基于IEEE802.3協(xié)議標(biāo)準(zhǔn)的MAC層(Media Access Control Layer)的所有功能。內(nèi)置的雙DMA通道和FIFO完成簡(jiǎn)單有效的包管理(數(shù)據(jù)幀的接收和發(fā)送)功能,本地DMA通道的傳輸速率高達(dá)10Mbps。其優(yōu)越的性能價(jià)格比使它非常適合嵌入式Internet系統(tǒng)。
?
在InetMCU的片內(nèi)Flash中固化的服務(wù)程序可實(shí)現(xiàn)任務(wù)調(diào)度、線(xiàn)程支持、文件系統(tǒng)、內(nèi)存管理、網(wǎng)絡(luò)系統(tǒng)(TCP/IP)和I/O管理等。通過(guò)20位(8位A口,8位C口,D口的PD0、PD1、PD2、PD7)I/O口連接到廉價(jià)的ISA總線(xiàn)的網(wǎng)卡芯片RTL8019AS上,能夠?qū)ν?如Internet上的用戶(hù))提供一種通過(guò)以太網(wǎng)接口訪問(wèn)嵌入式系統(tǒng)的方法。InetMCU的片內(nèi)EEPROM存儲(chǔ)授權(quán)的用戶(hù)名、密碼和其固定的IP地址及MAC地址。遠(yuǎn)程用戶(hù)訪問(wèn)DMCUEIAS時(shí),要比較用戶(hù)名和密碼,只有合法用戶(hù)可以通過(guò) Internet訪問(wèn)DMCUEIAS。InetMCU的片內(nèi)RAM存儲(chǔ)臨時(shí)數(shù)據(jù),同時(shí)外擴(kuò)了32K字節(jié)的SEEPROM。它采用AT24C256存儲(chǔ)不同的控制網(wǎng)頁(yè),完成必要的文件系統(tǒng)功能,通過(guò)WEB頁(yè)可以實(shí)現(xiàn)遠(yuǎn)程用戶(hù)與DMCUEIAS的交互。InetMCU用12位(8位B口作為數(shù)據(jù)口,D口的PD3、PD4、PD5、PD6 作為控制口)I/O口完成與DevMCU的通信。DevMCU的片內(nèi)Flash已經(jīng)固化DCX51嵌入式實(shí)時(shí)操作系統(tǒng)、通信服務(wù)和遠(yuǎn)程存取控制服務(wù)(RAC),負(fù)責(zé)現(xiàn)場(chǎng)設(shè)備的控制。DevMCU的另外16位(8位A口,8位C口作為數(shù)據(jù))I/O口與ISP相連,完成必要的邏輯功能,最后由ISP的IO56~IO63(8位)通過(guò)功率驅(qū)動(dòng)直接驅(qū)動(dòng)設(shè)備。
2 軟件體系結(jié)構(gòu)
2.1 TCP/IP協(xié)議
由于系統(tǒng)的資源有限,要求實(shí)現(xiàn)協(xié)議時(shí)應(yīng)從具體需求著眼,而不是以實(shí)現(xiàn)完整的協(xié)議為主要目的。DMCUEIAS要求能夠提供WWW服務(wù),并選擇以太網(wǎng)為其運(yùn)行的網(wǎng)絡(luò)環(huán)境。這樣用戶(hù)可以利用瀏覽器通過(guò)HTTP協(xié)議瀏覽事先下載到InetMCU的SEEPROM中的控制網(wǎng)頁(yè),通過(guò)該網(wǎng)頁(yè)傳遞控制命令到InetMCU。客戶(hù)端" title="客戶(hù)端">客戶(hù)端發(fā)來(lái)的數(shù)據(jù)以HTTP協(xié)議標(biāo)準(zhǔn)發(fā)到DMCUEIAS。這是因?yàn)镠TTP協(xié)議是國(guó)際標(biāo)準(zhǔn),它被所有瀏覽器支持,能保證用戶(hù)可以通過(guò)任何地方的瀏覽器下達(dá)命令。HTTP協(xié)議建立在TCP協(xié)議的基礎(chǔ)上。建立連接時(shí)經(jīng)過(guò)三次握手,每次傳輸數(shù)據(jù)都要求服務(wù)器給予確認(rèn);如無(wú)確認(rèn),則重發(fā),保證從客戶(hù)端到InetMCU的數(shù)據(jù)正確、完整。
軟件部分要實(shí)現(xiàn)的協(xié)議[3]至少是:應(yīng)用層上負(fù)責(zé)Web頁(yè)面請(qǐng)求和應(yīng)答的HTTP協(xié)議;位于傳輸層上保證數(shù)據(jù)進(jìn)行可靠傳輸?shù)腡CP協(xié)議[4],在數(shù)據(jù)傳輸時(shí)采用帶重傳機(jī)制的停-等協(xié)議,有效保證數(shù)據(jù)的傳輸;位于網(wǎng)絡(luò)層上進(jìn)行數(shù)據(jù)傳輸?shù)腎P協(xié)議,IP[5]是TCP/IP協(xié)議族中最為核心的協(xié)議,它對(duì)收到的IP數(shù)據(jù)報(bào)進(jìn)行分用,提交TCP或ICMP協(xié)議處理,對(duì)TCP或ICMP[6]報(bào)文進(jìn)行IP封裝,交數(shù)據(jù)鏈路層裝幀發(fā)送是IP協(xié)議負(fù)責(zé)的主要任務(wù),因此對(duì)這兩個(gè)功能也要進(jìn)行實(shí)現(xiàn);實(shí)現(xiàn)32位IP地址到48位網(wǎng)卡地址轉(zhuǎn)換的ARP協(xié)議,它完全可以滿(mǎn)足網(wǎng)絡(luò)上主機(jī)對(duì)InetMCU的IP地址進(jìn)行解析的需求;實(shí)現(xiàn)網(wǎng)卡的驅(qū)動(dòng)程序。Ping這一常用的網(wǎng)絡(luò)診斷工具也應(yīng)該被提供,所以與Ping相關(guān)的ICMP協(xié)議應(yīng)該予以實(shí)現(xiàn)。
2.2 DCX嵌入式實(shí)時(shí)操作系統(tǒng)
DMCUEIAS基于實(shí)時(shí)多任務(wù)操作系統(tǒng)[7],它是一段在DMCUEIAS啟動(dòng)后首先執(zhí)行的后臺(tái)程序。用戶(hù)的應(yīng)用程序是運(yùn)行于RTOS上的各個(gè)任務(wù),RTOS[8]根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源(包括存儲(chǔ)器、外設(shè)等)管理、消息管理、任務(wù)調(diào)度、異常處理等工作。在RTOS[9]支持的DMCUEIAS系統(tǒng)中,每個(gè)任務(wù)均有一個(gè)優(yōu)先級(jí)。DMCUEIAS根據(jù)各個(gè)任務(wù)的優(yōu)先級(jí),動(dòng)態(tài)切換各個(gè)任務(wù),保證實(shí)時(shí)性的要求。
DCX(Distributed Control Executive)嵌入式實(shí)時(shí)操作系統(tǒng)[10]相當(dāng)于實(shí)時(shí)操作系統(tǒng)的核,本文討論的DMCUEIAS支持8位的DCX51。DCX51執(zhí)行程序已固化在DevMCU中,為BITBUS網(wǎng)絡(luò)上的節(jié)點(diǎn)提供多任務(wù)能力,并且控制DevMCU和InetMCU之間的通信。DCX51操作系統(tǒng)提供中斷處理,能實(shí)時(shí)地響應(yīng)外部事件發(fā)出的中斷服務(wù)請(qǐng)求、任務(wù)間的通訊、任務(wù)的同步,內(nèi)部存儲(chǔ)器管理對(duì)應(yīng)用程序代碼段和數(shù)據(jù)區(qū)以不同方式管理;定時(shí)服務(wù)以及基于優(yōu)先級(jí)的搶占式任務(wù)調(diào)度方法。新建任務(wù)如果優(yōu)先級(jí)最高,可立即運(yùn)行,否則處于就緒狀態(tài)。就緒隊(duì)列中的任務(wù)按優(yōu)先級(jí)順序排列,下一次運(yùn)行的總是就緒隊(duì)列中優(yōu)先級(jí)最高的任務(wù),同優(yōu)先級(jí)的任務(wù)則按就緒時(shí)間順序排列。DCX支持多任務(wù),0號(hào)任務(wù)RAC是系統(tǒng)任務(wù),它管理目標(biāo)機(jī)與上位機(jī)通信。含有DCX51的DevMCU作為主控芯片安裝到目標(biāo)機(jī)上,分布到工業(yè)現(xiàn)場(chǎng)中控制設(shè)備" title="控制設(shè)備">控制設(shè)備。對(duì)于每部分功能,DCX都提供系統(tǒng)調(diào)用,這些調(diào)用就是用戶(hù)任務(wù)與DCX的接口。這些服務(wù)綜合在一起就實(shí)現(xiàn)一個(gè)實(shí)時(shí)系統(tǒng)。這樣在DMCUEIAS中,用戶(hù)主要完成控制外部設(shè)備的各個(gè)程序模塊。
2.3 RAC任務(wù)
任務(wù)是一個(gè)可調(diào)度的執(zhí)行單元,它由執(zhí)行代碼和只能由該任務(wù)存取的私有數(shù)據(jù)組成。RAC(Remote Access Control)任務(wù),即遠(yuǎn)程存取和控制,專(zhuān)門(mén)負(fù)責(zé)遠(yuǎn)程任務(wù)的接收和發(fā)送。當(dāng)信息發(fā)送到另一節(jié)點(diǎn)時(shí),DCX51執(zhí)行程序發(fā)送信息到RAC任務(wù)(即任務(wù)0)。RAC任務(wù)內(nèi)含通信服務(wù),它已經(jīng)隨同DCX51操作系統(tǒng)一道固化到DevMCU,通過(guò)DCX51,可以實(shí)現(xiàn)InetMCU與DevMCU的通信。它有兩種類(lèi)型的服務(wù):數(shù)據(jù)存取和任務(wù)控制。數(shù)據(jù)存取類(lèi)的服務(wù)可以對(duì)DevMCU不同的存儲(chǔ)器段或I/O空間進(jìn)行數(shù)據(jù)的讀或?qū)憽H蝿?wù)控制類(lèi)的服務(wù)可以下載一個(gè)任務(wù)的目標(biāo)代碼到DevMCU,建立或刪除在DevMCU的一個(gè)任務(wù)。傳到InetMCU的數(shù)據(jù)通過(guò)RAC任務(wù)從InetMCU傳到DevMCU,再由DevMCU完成遠(yuǎn)端設(shè)備的控制和訪問(wèn)。
RAC任務(wù)的信息格式如表1。其中,Link是系統(tǒng)用于保存信息表的兩字節(jié)的參數(shù);Message length 是RAC命令或回答的字節(jié)數(shù)。MT(Message-type):指定信息類(lèi)型的一位;SE(src-ext)表示產(chǎn)生信息的任務(wù)是否在擴(kuò)展節(jié)點(diǎn)上;DE(dest-ext):表示接收命令信息的任務(wù)駐留在擴(kuò)展節(jié)點(diǎn)上,還是在一個(gè)設(shè)備上;Node address:只能通過(guò)PC系統(tǒng)接口進(jìn)行傳遞的信息參數(shù)是0xff,當(dāng)信息從同一節(jié)點(diǎn)的一個(gè)任務(wù)傳送到另一個(gè)任務(wù)時(shí),參數(shù)是“0”;Source task:是源節(jié)點(diǎn)發(fā)送任務(wù)的任務(wù)ID(0~7);Destination task: 是目的任務(wù)的任務(wù)標(biāo)識(shí)符;Command/respond:包含選擇規(guī)定的RAC任務(wù)的參數(shù)(不同服務(wù)其值也不同),RAC任務(wù)的響應(yīng)信息包含了指示服務(wù)結(jié)果的狀態(tài)代碼;data:數(shù)據(jù),對(duì)不同RAC服務(wù)而不同。
?
?
2.3.1 RAC任務(wù)控制類(lèi)
任務(wù)控制類(lèi)允許用戶(hù)在遠(yuǎn)程節(jié)點(diǎn)上使用適當(dāng)?shù)腄CX51系統(tǒng)調(diào)用,或者控制遠(yuǎn)程節(jié)點(diǎn)自身。在DMCUEIAS中用戶(hù)可以把指定的任務(wù)文件(必須是十六進(jìn)制格式,如.hex)通過(guò)Internet下載到InetMCU里,然后通過(guò)RAC任務(wù)的下載服務(wù)傳到DevMCU。把文件所有數(shù)據(jù)都下載后,客戶(hù)端還要發(fā)create命令激活下載的文件數(shù)據(jù),通過(guò)RAC任務(wù)create服務(wù)把命令傳到DevMCU,完成新任務(wù)的建立,實(shí)現(xiàn)控制設(shè)備。
用戶(hù)還可以控制其它服務(wù)如delete task(刪除特定的任務(wù),并禁止所有與該任務(wù)有關(guān)的中斷)、reset device(全部任務(wù)初始化),為此用戶(hù)必須知道當(dāng)前運(yùn)行的任務(wù)號(hào)。這需用戶(hù)事前發(fā)get function ids命令,DevMCU通過(guò)RAC任務(wù)的get function ids服務(wù)把ID號(hào)傳給 InetMCU,并通過(guò)Internet返回到客戶(hù)端,用戶(hù)可對(duì)任務(wù)進(jìn)行不同的操作(如刪除等)。
2.3.2 RAC數(shù)據(jù)存取類(lèi)
數(shù)據(jù)存取類(lèi)使用戶(hù)可以對(duì)不同的存儲(chǔ)段或I/O空間進(jìn)行數(shù)據(jù)的讀寫(xiě)。在DMCUEIAS中,客戶(hù)端可以通過(guò)對(duì)DevMCU的I/O空間進(jìn)行數(shù)據(jù)讀寫(xiě)來(lái)控制設(shè)備,完成數(shù)據(jù)的寫(xiě)(客戶(hù)端傳來(lái)的數(shù)據(jù)直接控制設(shè)備狀態(tài))、讀(把設(shè)備的狀態(tài)通過(guò)網(wǎng)絡(luò)傳給客戶(hù)端)。
RAC任務(wù)寫(xiě)服務(wù):寫(xiě)數(shù)據(jù)到DevMCU的I/O口中??蛻?hù)端從Internet傳來(lái)的設(shè)備狀態(tài)碼從InetMCU寫(xiě)到DevMCU,完成對(duì)設(shè)備的控制。
RAC任務(wù)讀服務(wù):把DevMCU的I/O口內(nèi)容進(jìn)行讀和顯示。當(dāng)前設(shè)備的狀態(tài)(用一字節(jié)8位表示,即可同時(shí)控制8個(gè)設(shè)備)從DevMCU傳到InetMCU,然后通過(guò)Internet返回到遠(yuǎn)端的客戶(hù)端,用戶(hù)就可知道設(shè)備的狀態(tài)。
3 實(shí)驗(yàn)結(jié)果
本文的實(shí)驗(yàn)環(huán)境是:通過(guò)計(jì)算機(jī)的RS-232串口把編好的服務(wù)程序(采用匯編語(yǔ)言,這樣可減少程序代碼量,并提高執(zhí)行效率)固化到InetMCU 的Flash存儲(chǔ)器里,實(shí)現(xiàn)較完整的服務(wù)器功能,如任務(wù)調(diào)度、線(xiàn)程的支持、文件系統(tǒng)、內(nèi)存管理、網(wǎng)絡(luò)系統(tǒng)(TCP/IP)和I/O管理。斷開(kāi)程序下載線(xiàn),雙MCU結(jié)構(gòu)的嵌入式Internet接入服務(wù)器(DMCUEIAS)和運(yùn)行客戶(hù)端程序的PC機(jī)只通過(guò)網(wǎng)線(xiàn)連接。為了演示實(shí)驗(yàn)結(jié)果,把8個(gè)設(shè)備用8個(gè)指示燈代替, 對(duì)指示燈的控制通過(guò)二進(jìn)制0(燈滅)、1(燈亮)實(shí)現(xiàn),即指示燈只有兩個(gè)狀態(tài),完成客戶(hù)遠(yuǎn)端控制和讀取指示燈的狀態(tài)。這個(gè)實(shí)驗(yàn)環(huán)境是對(duì)用戶(hù)通過(guò)Internet遠(yuǎn)端控制設(shè)備的模擬。
驗(yàn)證RAC任務(wù)控制類(lèi):首先下載文件fd.hex,它控制指示燈,使8個(gè)小燈按序接連亮,然后滅,下一個(gè)亮,到最后一個(gè)燈,再?gòu)牡?個(gè)燈開(kāi)始,重復(fù)循環(huán)……然后用戶(hù)發(fā)create命令,激活任務(wù),實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康?。在這里共有4個(gè)任務(wù),所以用戶(hù)發(fā)的get function ids只有ID0、ID1、ID2、ID3返回,它們分別完成不同的功能。任務(wù)0即RAC任務(wù),完成InetMCU與DevMCU的通信。客戶(hù)端可以分別控制這4個(gè)任務(wù),對(duì)不同任務(wù)進(jìn)行不同處理(如刪除等)。驗(yàn)證RAC數(shù)據(jù)存取類(lèi):用戶(hù)發(fā)“寫(xiě)”0xff命令,則8個(gè)燈全亮(8位,每位控制1個(gè)燈);用戶(hù)發(fā)“讀”命令,則從DevMCU返回0xff,指示燈狀態(tài)是全亮。
但為使MCU與非標(biāo)準(zhǔn)設(shè)備有統(tǒng)一的接口,而不用提供專(zhuān)門(mén)的接口是下一步研究的方向。
?
參考文獻(xiàn)
1 Christopher D. Leidigh.Web Based Management of Network Devices. American Power Conversion,July, 1997
2 Dr.Nigel Tracey FAE Manager. Meeting real-time requirement in distributed system. Embedded Systems Conference.?26/03/2002
3 Thomas F. Herbert.An Introduction to TCP/IP for Embedded Engineers, Sessions,203,213? Embedded Systems Conference Papers, Boston, 2001
4 Thomas F. Herbert. Implementing Network Protocols and?Drivers with STREAMS, Embedded Systems programming.
? VOL. 10 NO. 4 April 1997, http://www.embedded.com/97/feat9704.htm
5 W. Richard Stevens. TCP/IP Illustrated, vol. 1,Addison? Wesley, ISBN 0-201-63346-9
6 Gary R. Wright, W. Richard Stevens. TCP/IP Illustrated.vol. 2,Addison-Wesley, ISBN 0-201-63354-X
7 R. Davis, N. Merriam, N. Tracey. How an Embedded?Application Using an RTOS Can Stay Within On-Chip
? Limits.12th Euromicro Conference on Real-Time Systems,?2000
8 San Jose. True Real-Time Embedded Systems Engineering:Building Hard Real-Time Systems Using Deadline Monotonic Analysis. Embedded Systems Conference, 1999
9 Nigel Tracey. Engineering real-time behaviorthrough the?development process. Embedded Systems Conference Papers,Boston 2001