段慧婷
(河北省電子信息技術(shù)研究院,河北石家莊 050051)
基于ARM和μC/OS-П以太網(wǎng)接口系統(tǒng)設(shè)計(jì)
段慧婷
(河北省電子信息技術(shù)研究院,河北石家莊 050051)
TCP/IP及互聯(lián)網(wǎng)技術(shù)在工業(yè)領(lǐng)域得到廣泛應(yīng)用,然而大量工業(yè)現(xiàn)場(chǎng)設(shè)備尚不具備網(wǎng)絡(luò)接口,主要通過(guò)串行口進(jìn)行通訊,因而無(wú)法直接連接到Internet。筆者設(shè)計(jì)了一種基于ARM處理器的嵌入式以太網(wǎng)接口系統(tǒng),用來(lái)解決這些傳統(tǒng)設(shè)備與現(xiàn)今的網(wǎng)絡(luò)設(shè)備之間的互聯(lián)問(wèn)題。
嵌入式系統(tǒng);以太網(wǎng);SPI串行通信;μC/OS-П;ZLG/IP
在工業(yè)控制等領(lǐng)域,傳統(tǒng)SPI串行口設(shè)備仍然被廣泛地應(yīng)用,隨著網(wǎng)絡(luò)技術(shù)上廣泛應(yīng)用,SPI串行通信固有的傳輸速率低、傳輸距離有限、布線繁雜等缺點(diǎn)逐漸顯現(xiàn)出來(lái)。以太網(wǎng)技術(shù)克服了上述缺點(diǎn),采用以太網(wǎng)可以方便地接入現(xiàn)有網(wǎng)絡(luò),數(shù)據(jù)傳輸率高,由于采用了通用的通信協(xié)議,兼容性較好。
基于TCP/IP的以太網(wǎng)已經(jīng)發(fā)展成為IT產(chǎn)業(yè)的主要通訊手段,在工業(yè)生產(chǎn)中,為了能跟上網(wǎng)絡(luò)自動(dòng)化的潮流,而不至于失去競(jìng)爭(zhēng)優(yōu)勢(shì),必須建立高效的數(shù)據(jù)采集、生產(chǎn)監(jiān)控、即時(shí)成本管理的聯(lián)網(wǎng)系統(tǒng)。對(duì)于這些領(lǐng)域的SPI串口設(shè)備來(lái)說(shuō),讓這些設(shè)備連上以太網(wǎng)將是一種趨勢(shì)。
筆者所設(shè)計(jì)的遠(yuǎn)程監(jiān)控系統(tǒng)以嵌入式系統(tǒng)為核心,利用其串口與底層I/O節(jié)點(diǎn)相連,上層則直接聯(lián)入以太網(wǎng),允許被授權(quán)的用戶在以太網(wǎng)任意一點(diǎn)應(yīng)用瀏覽器訪問(wèn)該系統(tǒng),并實(shí)現(xiàn)對(duì)下層設(shè)備的監(jiān)控。
本系統(tǒng)設(shè)計(jì)一個(gè)嵌入式以太網(wǎng)接口,主要完成一個(gè)SPI串行通信和以太網(wǎng)之間的數(shù)據(jù)存儲(chǔ)控制,系統(tǒng)對(duì)多種類型的數(shù)據(jù)進(jìn)行處理,接收來(lái)自SPI串行口設(shè)備的串口數(shù)據(jù)流,并對(duì)其進(jìn)行格式轉(zhuǎn)換,使之成為可以在以太網(wǎng)中傳播的數(shù)據(jù)幀。
根據(jù)嵌入式系統(tǒng)的一般設(shè)計(jì)方法,可以將系統(tǒng)分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分,硬件部分主要完成微處理器與SPI口、以太網(wǎng)等模塊間的接口電路設(shè)計(jì),以及控制信號(hào)的處理;軟件部分主要完成SPI口與網(wǎng)口間的雙向數(shù)據(jù)傳輸。這其中包括硬件系統(tǒng)的啟動(dòng)實(shí)現(xiàn),由于系統(tǒng)需要運(yùn)行多任務(wù),一個(gè)嵌入式操作系統(tǒng)必不可少,TCP/IP協(xié)議實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)包的收發(fā),SPI串口驅(qū)動(dòng)程序完成串行數(shù)據(jù)的收發(fā)。
在嵌入式系統(tǒng)中,擴(kuò)展以太網(wǎng)接口,通常有如下兩種方法實(shí)現(xiàn):
(1)嵌入式處理器加上以太網(wǎng)接口芯片,如RTL8019AS。這種方法對(duì)嵌入式處理器沒(méi)有特殊要求,只要把以太網(wǎng)芯片連接到嵌入式處理器的總線上即可。此方法通用性強(qiáng),不受處理器的限制;但是,處理器和網(wǎng)絡(luò)通過(guò)外部總線交換數(shù)據(jù),速度慢,可靠性不高,電路走線復(fù)雜。
(2)選擇帶有以太網(wǎng)接口的嵌入式處理器。這種方法要求嵌入式處理器有通用的網(wǎng)絡(luò)接口控制器。處理器和網(wǎng)絡(luò)數(shù)據(jù)交換通過(guò)內(nèi)部總線,速度快[1]。
本研究選用的嵌入式處理器芯片是帶有以太網(wǎng)接口控制器LM3S8962。硬件簡(jiǎn)單,傳輸速率快。
數(shù)據(jù)采集系統(tǒng)主要由3部分組成:數(shù)據(jù)接收部分、ARM芯片數(shù)據(jù)處理部分、遠(yuǎn)端主機(jī)(見(jiàn)圖1)。
數(shù)據(jù)接收部分,通過(guò)傳感器對(duì)室內(nèi)的溫度數(shù)據(jù)信號(hào)進(jìn)行采樣、保持,射頻收發(fā)模塊n RF24E1作為主機(jī)通過(guò)SPI接口傳送給LM3S8962微處理器芯片,LM3S8962作為從機(jī)接收數(shù)據(jù),放入緩存區(qū),并利用μC/OS-П操作系統(tǒng),在user文件夾下的main.C進(jìn)行程序的編寫(xiě),把接收過(guò)來(lái)的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換使之成為適合在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù),最終通過(guò)網(wǎng)絡(luò)接口RJ45傳送到遠(yuǎn)端的主機(jī),最終實(shí)現(xiàn)遠(yuǎn)程控制。
LM3S8962具備SPI數(shù)據(jù)總線,1個(gè)10M/100M全雙工和半雙工以太網(wǎng)接口。其中以太網(wǎng)接口與上位機(jī)通訊,將采集的數(shù)據(jù)上傳到PC機(jī)中,并且接收上位機(jī)的命令對(duì)數(shù)據(jù)處理系統(tǒng)進(jìn)行控制。其中SPI接口是中央處理器與射頻收發(fā)模塊n RF24E1通信的接口,因?yàn)閚 RF24E1只能作為主機(jī)發(fā)送,所以嵌入式微處理器作為從機(jī)接收所采集的各種數(shù)據(jù)并實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)化數(shù)據(jù)采集系統(tǒng)的控制。嵌入式ARM微處理器中的μC/OS-П的功能就是實(shí)時(shí)的將采集的數(shù)據(jù)通過(guò)以太網(wǎng)接口上傳給上位機(jī)進(jìn)行處理。
圖1 硬件平臺(tái)
軟件設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)的重要組成部分,在硬件系統(tǒng)完成數(shù)據(jù)格式轉(zhuǎn)換以及控制信號(hào)處理等主要功能基礎(chǔ)上,軟件系統(tǒng)與硬件系統(tǒng)遵循一個(gè)標(biāo)準(zhǔn)的接口,在這個(gè)接口之上來(lái)傳遞數(shù)據(jù)信號(hào)和控制信號(hào)。軟件設(shè)計(jì)主要有:
(1)硬件系統(tǒng)啟動(dòng)代碼的實(shí)現(xiàn)。啟動(dòng)代碼是系統(tǒng)上電復(fù)位后最先執(zhí)行的部分,完成對(duì)于系統(tǒng)的初始化工作,在μC/OS-П操作系統(tǒng)中采用基于ARM核的匯編語(yǔ)言來(lái)編寫(xiě)。它主要實(shí)現(xiàn)向量表定義、堆棧初始化、系統(tǒng)變量的初始化、中斷系統(tǒng)初始化、I/O、外圍初始化、地址重映射等操作。
(2)μC/OS-П嵌入式操作系統(tǒng)的移植。μC/OS-П的移植主要任務(wù)是重新編寫(xiě)與處理器和編譯器相關(guān)的代碼,這些代碼包括:與編譯器相關(guān)的數(shù)據(jù)類型的重定義、開(kāi)關(guān)中斷的代碼、堆棧的增長(zhǎng)方向、任務(wù)堆棧初始化函數(shù)、任務(wù)切換函數(shù)等等。
(3)以太網(wǎng)口驅(qū)動(dòng)和TCP/IP協(xié)議棧的實(shí)現(xiàn)。主要完成的功能有:實(shí)現(xiàn)以太網(wǎng)模塊的收發(fā)數(shù)據(jù)驅(qū)動(dòng)、在目標(biāo)系統(tǒng)中運(yùn)行TCP/IP,從而實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)的收發(fā)功能。由于TCP/IP協(xié)議體系龐大,考慮到目標(biāo)系統(tǒng)的資源有限,有必要對(duì)TCP/IP協(xié)議進(jìn)行精簡(jiǎn)。僅實(shí)現(xiàn)嵌入式系統(tǒng)中所用到的協(xié)議,包括:IP協(xié)議、ARP協(xié)議、ICMP協(xié)議、TCP協(xié)議、UDP協(xié)議,同時(shí),采用與類似BSD標(biāo)準(zhǔn)的Socket接口實(shí)現(xiàn)TCP/IP協(xié)議的API。
(4)SPI口驅(qū)動(dòng)實(shí)現(xiàn)。SPI對(duì)從外設(shè)器件接收到的數(shù)據(jù)執(zhí)行串行到并行的轉(zhuǎn)換。
(5)系統(tǒng)功能應(yīng)用的實(shí)現(xiàn)。主程序部分通過(guò)創(chuàng)建兩個(gè)μC/OS-П任務(wù),來(lái)實(shí)現(xiàn)串口數(shù)據(jù)傳送至以太網(wǎng)。當(dāng)從串口接收數(shù)據(jù)并發(fā)送至以太網(wǎng)時(shí),允許建立多個(gè)連接,同時(shí)向多個(gè)客戶端發(fā)送數(shù)據(jù);當(dāng)從以太網(wǎng)接收數(shù)據(jù)時(shí),也允許建立多個(gè)連接以接收多個(gè)主機(jī)的數(shù)據(jù),但必須滿足數(shù)據(jù)包的延時(shí)和丟包率在給定的范圍之內(nèi)。
3.2.1 μC/OS-П移植
本移植在如下環(huán)境中完成:編譯工具采用IAR FOR ARM,目標(biāo)板采用Easy ARM8962開(kāi)發(fā)板。主機(jī)通過(guò)LMLINK JTAG連接目標(biāo)板以建立交叉開(kāi)發(fā)調(diào)試環(huán)境。移植過(guò)后的模版如圖2。
(1)移植過(guò)程中,μC/OS-П的核心源代碼不用修改,可以直接放在μC/OS-ПSource文件夾中。
(2)μC/OSП\Ports目錄存放μC/OS-П基于LM3S單片機(jī)的移植代碼,包括OS_CPU_C.C、OS_CPU_A.ASM、OS_CPU.H三個(gè)必要的文件。
(3)Target目錄中的Startup.S文件是單片機(jī)的啟動(dòng)代碼和中斷向量表,Target.C和Target.H提供單片機(jī)初始化函數(shù)Target Init()和其他簡(jiǎn)單的外設(shè)控制API函數(shù),包括LED控制、蜂鳴器控制、按鍵檢測(cè)和定時(shí)器0中斷服務(wù)等,方便用戶調(diào)試程序。
(4)將μC/OS-П移植到ARM處理器LM3S8962上需要修改3個(gè)與ARM體系結(jié)構(gòu)相關(guān)的文件:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。
完成上述工作后,只要再根據(jù)目標(biāo)板的實(shí)際情況編寫(xiě)Target目錄中的3個(gè)文件,μC/OS-П就可以運(yùn)行在LM3S8962單片機(jī)上了[2]。
3.2.2 ZLG/IP精簡(jiǎn)協(xié)議棧
為使轉(zhuǎn)接口具有以太網(wǎng)接入功能,必須在ARM處理器中嵌入TCP/IP協(xié)議,ZLG/IP精簡(jiǎn)協(xié)議棧完全符合嵌入式TCP/IP協(xié)議棧的特殊性要求,是面向嵌入式系統(tǒng)開(kāi)發(fā)的基于μC/OS-П的小型TCP/IP協(xié)議棧。ZLG/IP提供實(shí)現(xiàn)Internet網(wǎng)絡(luò)上IP接點(diǎn)的功能,是個(gè)高性能的嵌入式TCP/IP協(xié)議軟件[3]。它使用μC/OS-П實(shí)時(shí)操作系統(tǒng)的信號(hào)機(jī)制來(lái)實(shí)現(xiàn)一個(gè)多任務(wù)并行可重入的協(xié)議棧,完全使用ANSI C進(jìn)行編寫(xiě),可以像μC/OS-П那樣支持多種CPU。
精簡(jiǎn)TCP/IP協(xié)議中各層采用的協(xié)議如下(主要是嵌入式系統(tǒng)硬件平臺(tái)上運(yùn)行的協(xié)議):
1)鏈路層:由控制同一物理網(wǎng)絡(luò)上的不同機(jī)器間數(shù)據(jù)傳送的底層協(xié)議組成,主要包括:Ethernet Driver協(xié)議。
圖2 ARM Cortex移植模版層次結(jié)構(gòu)
2)網(wǎng)絡(luò)層:IP/ARP/ICMP協(xié)議。
3)傳輸層:采用TCP或UDP協(xié)議,TCP協(xié)議提供了一種可靠的面向連接的字節(jié)流運(yùn)輸層服務(wù),而UDP協(xié)議是一個(gè)簡(jiǎn)單的面向非連接的數(shù)據(jù)包的運(yùn)輸層協(xié)議,考慮到所設(shè)計(jì)的系統(tǒng)數(shù)據(jù)傳輸?shù)陌踩?,設(shè)計(jì)中選用UDP協(xié)議。
因?yàn)橄到y(tǒng)對(duì)數(shù)據(jù)傳輸?shù)臄?shù)量的要求遠(yuǎn)遠(yuǎn)低于互聯(lián)網(wǎng)的要求,所以要設(shè)計(jì)TCP/IP協(xié)議簇中那些基本的、系統(tǒng)所要求的那一部分。將ZLG/IP協(xié)議嵌入到操作系統(tǒng)μC/OS-П中,并提供API接口函數(shù)供應(yīng)用程序調(diào)用,使得ARM可以快速無(wú)沖突地收發(fā)網(wǎng)絡(luò)UDP數(shù)據(jù)包,符合遠(yuǎn)程監(jiān)控系統(tǒng)對(duì)實(shí)時(shí)性和可靠性的要求。
測(cè)試中使用PC機(jī)同時(shí)作為SPI口設(shè)備和上位機(jī)。使用SPI串行接口與上端n RF24E1相連接;使用交叉網(wǎng)線分別連接PC機(jī)和目標(biāo)系統(tǒng)的RJ45接口,同時(shí)設(shè)置IP地址、子網(wǎng)掩碼,以使它們?cè)谕痪W(wǎng)絡(luò)中通訊。
在PC機(jī)上運(yùn)行TCP&UDP測(cè)試軟件和UDP通訊程序作為上位機(jī)軟件進(jìn)行測(cè)試。在UDP通訊程序中設(shè)置遠(yuǎn)程主機(jī)(即目標(biāo)系統(tǒng))地址為192.168.0.5,遠(yuǎn)程端口號(hào)為1025,輸入一組數(shù)據(jù),在TCP&UDP測(cè)試軟件創(chuàng)建連接的情況下,在TCP&UDP測(cè)試軟件的接收區(qū)中接收到消息。同樣發(fā)送其他信息,在接受區(qū)中收到的消息和鍵盤(pán)輸入的信息一樣。表明雙方通信的成功。運(yùn)行結(jié)果如圖3。
圖3 測(cè)試結(jié)果
系統(tǒng)經(jīng)測(cè)試能夠同時(shí)對(duì)多臺(tái)監(jiān)控模塊實(shí)現(xiàn)數(shù)據(jù)收發(fā)分析顯示以及在線控制,而且實(shí)時(shí)性能滿足要求,能滿足大多數(shù)小型系統(tǒng)的使用。
根據(jù)本文所論述的解決方案和設(shè)計(jì)的系統(tǒng),可以在SPI串行數(shù)據(jù)和以太網(wǎng)傳送的TCP/IP數(shù)據(jù)包之間進(jìn)行相互轉(zhuǎn)換,使帶有SPI串行數(shù)據(jù)通信設(shè)備的信息可以通過(guò)互聯(lián)網(wǎng)絡(luò)進(jìn)行傳送或共享。可將現(xiàn)有SPI串行設(shè)備轉(zhuǎn)換成具有網(wǎng)絡(luò)接口的外設(shè),從而保證了SPI串行口設(shè)備的兼容性。該系統(tǒng)可以應(yīng)用于:門(mén)禁、安防、考勤系統(tǒng);工業(yè)現(xiàn)場(chǎng)聯(lián)網(wǎng)監(jiān)控;倉(cāng)儲(chǔ)自動(dòng)控制系統(tǒng);醫(yī)療、實(shí)驗(yàn)儀器聯(lián)網(wǎng)自動(dòng)化;大型零售(OPS)系統(tǒng)聯(lián)網(wǎng)自動(dòng)化。具有一定的市場(chǎng)前景,能產(chǎn)生較好的經(jīng)濟(jì)效益。
[1]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航天航空大學(xué)出版社,2005.
[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第四版)[M].大連:大連理工大學(xué)出版社,2005.
[3]頓雁兵,張海南.基于LPC2210的嵌入式以太網(wǎng)接口芯片設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2007,(6):1077-1080.
[4]龐海濤,陳昕,程高峰.μC/OS-Ⅱ在Cortex-M3系列單片機(jī)上的移植[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008,(11):31-33.
Design of ethernet conversion interface system based on ARM andμC/OS-П
DUAN Hui-ting
(HebeiElectronicandInformationTechnologyAcademy,ShijiazhuangHebei050051,China)
TCP/IP and Internet are widely used in industrial field,yet plenty of industrial equipments do not have network interfaces and can not be connected to the Internet directly.In order to seek a new kind of method to solve the interconnection problem between these tradition equipments and the current network equipments,Internet Conversion Interface Based on ARM andμC/OS-Пis desiged in this paper.
Embedded system;Ethernet;SPI Serial Communication;S-П;ZLG/IP
TP393
:A
1001-9383(2011)04-0045-04
2011-06-30
段慧婷(1982-),女,河北石家莊人,碩士,主要從事信息系統(tǒng)技術(shù)、數(shù)據(jù)傳輸與交換技術(shù)研究.