關(guān)鍵字:嵌入式 網(wǎng)絡(luò)接口 控制器
1前言
以太網(wǎng)作為目前應(yīng)用最為廣泛的局域網(wǎng)技術(shù),,在工業(yè)自動化和過程控制領(lǐng)域得到了越來越的應(yīng)用,。傳統(tǒng)的控制系統(tǒng)在信息層大都采用以太網(wǎng),,而在控制層和設(shè)備層一般采用不同的現(xiàn)場總線或其他專用網(wǎng)絡(luò)。目前,,隨著工業(yè)以太網(wǎng)技術(shù)的發(fā)展,,以太網(wǎng)已經(jīng)滲透到了控制層和設(shè)備層?;谝蕴W(wǎng)的控制網(wǎng)絡(luò)最典型的應(yīng)用形式是Ethernet+ICP/IP,,它的底層是Ethernet,網(wǎng)絡(luò)層和傳輸層采用國際公認的標準TCP/IP.然而大量的工業(yè)現(xiàn)場設(shè)備,,如數(shù)控機床,、機械手等設(shè)備,這些設(shè)備最常用的通訊方式為RS-232/485/422串行接口,,不具備網(wǎng)絡(luò)接口,,以至無法直接接到以太網(wǎng)。
隨著半導(dǎo)體產(chǎn)業(yè)和集成電路技術(shù)的發(fā)展,,以微控制器/微處理為硬件核心的嵌入式系統(tǒng)得到迅速發(fā)展,,并在無線通訊、網(wǎng)絡(luò)設(shè)備,、工業(yè)控制等領(lǐng)域得到廣泛應(yīng)用,。本文選用基于ARM9和armlinux開發(fā)嵌入式網(wǎng)絡(luò)接口控制器,實現(xiàn)串行口數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的相互轉(zhuǎn)換,,通過這種方式,,可以使傳統(tǒng)串口設(shè)備成為具有網(wǎng)絡(luò)接口的設(shè)備,直接接入工業(yè)以太網(wǎng),。
2嵌入式網(wǎng)絡(luò)接口控制器工作原理
嵌入式網(wǎng)絡(luò)接口器選用DM9000E芯片作以太網(wǎng)控制器,,來完成與上級以太網(wǎng)的數(shù)據(jù)交換,采用32位微處理器s3c2410和嵌入式Linux進行協(xié)議實現(xiàn)和數(shù)據(jù)處理,,然后將處理過的數(shù)據(jù)下傳給底層設(shè)備終端,;把從底層終端設(shè)備接收的數(shù)據(jù),進行數(shù)據(jù)處理和協(xié)議實現(xiàn),,通過DM900E傳輸?shù)剑桑睿簦澹颍睿澹羯?。工作原理如1所?
3 嵌入式網(wǎng)絡(luò)接口控制器硬件平臺
嵌入式網(wǎng)絡(luò)接口控制器硬件平臺的整體連接框圖如圖 2 所示,。本文選用基于ARM9內(nèi)核ARM9TDMI的32位微處理器s3c2410作為主控芯片,。S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器,。該處理器擁有:獨立的16KB指令Cache和16KB數(shù)據(jù)Cache,,MMU,,支持TFT的LCD控制器,NAND閃存控制器,,3路UART,,4路DMA,4路帶PWM的Timer ,,I/O口,,RTC,8路10位ADC,,Touch?。樱悖颍澹澹罱涌冢桑桑茫拢眨印〗涌?,IIS-BUS 接口,,2個USB主機,1個USB設(shè)備,,SD主機和MMC接口,,2路SPI。S3C2410處理器最高可運行在203MHz,。本系統(tǒng)的FLASH存儲器選INTEL公司的28F128,,SDRAM芯片選用兩片HY57V561620構(gòu)成32位的存儲器系統(tǒng). 以太網(wǎng)控制器芯片選擇DM9000,它是完全綜合的,、成本較低的單一快速,,具有通用的處理器接口,10/100M自適應(yīng),,以及4K雙字節(jié)靜態(tài)存取存儲器,。它被設(shè)計為低功耗、高處理性能,,支持3.3V到5V的容差。DM9000提供一個MII接口來連接HPNA設(shè)備或者其他支持MII接口的收發(fā)器,,并支持8位,、16位、32位的接口來適應(yīng)不同的處理器對內(nèi)部存儲器的訪問,,它支持IEEE802.3u規(guī)格,,還支持IEEE 802.3x全雙工流控制,。在DM9000和RJ45接口之間需要用漢仁電子有限公司的網(wǎng)絡(luò)隔離變壓器HR601627來連接,,網(wǎng)絡(luò)隔離變壓器起信號傳輸、阻抗匹配,、波形修復(fù),、雜波抑制以及高電壓隔離等作用,,以保護系統(tǒng)的安全。
圖1嵌入式網(wǎng)絡(luò)接口控制器工作原理
圖?。睬度胧骄W(wǎng)絡(luò)接口控制器硬件框
4 嵌入式操作系統(tǒng)的選擇
本系統(tǒng)的設(shè)計,,網(wǎng)卡驅(qū)動和TCP/IP協(xié)議的實現(xiàn)是重點,選擇嵌入式Linux,,它已經(jīng)嵌入了TCP/IP協(xié)議棧,,使TCP/IP協(xié)議得以實現(xiàn)。嵌入式Linux系統(tǒng)支持多種類型的網(wǎng)卡如各種lOM/lOOM,,1000M 的Ethemet網(wǎng)卡等,。對于 DM9000E以太網(wǎng)控制器,,嵌入式Linux已經(jīng)提供了很好的支持,,移植過程中只需要修改源代碼和配置相應(yīng)模塊即可實現(xiàn)對網(wǎng)絡(luò)的支持。
5以太網(wǎng)數(shù)據(jù)與串口數(shù)據(jù)轉(zhuǎn)換實現(xiàn)
本文開發(fā)的接口控制器主要完成兩個功能,,即將串口接收到的數(shù)據(jù)通過網(wǎng)卡發(fā)送至以太網(wǎng),,將網(wǎng)卡接收到的數(shù)據(jù)通過串口發(fā)送至另一串口端。工作模式上可以選擇為服務(wù)器或客戶端模式,,數(shù)據(jù)傳輸協(xié)議可以選擇為TCP(Transmission?。茫铮睿簦颍铮臁。校颍铮簦铮悖铮?,傳輸控制協(xié)議)方式或UDP(User?。模幔簦幔纾颍幔怼。校颍铮簦铮悖铮?,用戶數(shù)據(jù)報協(xié)議)方式,。其中TCP和UDP是以太網(wǎng)數(shù)據(jù)的兩種傳輸協(xié)議,TCP是基于連接的協(xié)議,,在正式收發(fā)數(shù)據(jù)前,,必須和對方建立可靠的連接,而UDP是面向非連接的數(shù)據(jù)直接傳輸協(xié)議,,不需要對方的回答確認,。
5.1應(yīng)用程序的開發(fā)環(huán)境和網(wǎng)絡(luò)編程
由于嵌人式系統(tǒng)程序的開發(fā)和執(zhí)行是在PC和ARM 兩個不同的平臺上進行的,因此需要進行交叉編譯和連接,。用串口和以太網(wǎng)將宿主機和目標板連接起來,,程序開發(fā)在RedHat9.0 Linux操作系統(tǒng)下編輯,,調(diào)試通過后,,加入自己開發(fā)的程序重新編譯armlinux內(nèi)核,并將編譯好的二進制文件固化到開發(fā)板的ROM中,使其開機后自動運行,。
TCP/IP處理模塊采用SOCKET套接字編程實現(xiàn),。SOCKET最早是在UNIX系統(tǒng)上為TCP/IP網(wǎng)絡(luò)通信而開發(fā)的一個接口程序,后來被成功移植到DOS,、Windows等操作系統(tǒng)上,,成為Internet上網(wǎng)絡(luò)開發(fā)最為通用的API函數(shù)。用于網(wǎng)絡(luò)開發(fā)的SOCKET主要有Stream?。樱铮悖耄澹簦螅鞲袷剑┖停模幔簦幔纾颍幔怼,。樱铮悖耄澹簦螅〝?shù)據(jù)報格式)兩種類型,流格式Socket與TCP協(xié)議對應(yīng),,數(shù)據(jù)報格式Socket與UDP協(xié)議對應(yīng),。
5.2 軟件設(shè)計
本系統(tǒng)采用工作模式TCP Server服務(wù)器,,等待客戶端請求連接,,實現(xiàn)數(shù)據(jù)傳輸功能。本程序的流程圖如圖3所示,。首先,,打開串口,在Linux下打開串口是通過標準的文件打開函數(shù)
圖3 功能實現(xiàn)流程圖
圖4 以太網(wǎng)數(shù)據(jù)通過串口發(fā)送
圖5 串口數(shù)據(jù)通過網(wǎng)卡發(fā)送
操作,,程序代碼如下: ?。椋睿簟。妫?; ?。妫洌剑铮穑澹睿?ldquo;/dev/ttyS0”,O_RDWR),; ?。椋妫ǎ妫洌剑剑保。穑澹颍颍铮颍?ldquo;提示錯誤,!”),;} 然后設(shè)置串口的波特率、校驗位和停止位,。要用網(wǎng)卡接收發(fā)送數(shù)據(jù),,就要首先創(chuàng)建套接字,程序代碼如下: ?。椋睿簟。螅铮悖耄撸妫?; ?。螅铮悖耄撸妫洌剑螅铮悖耄澹簦ǎ粒疲撸桑危牛裕樱希茫耍撸樱裕遥牛粒停希? ?。椋妫ǎ螅铮悖耄撸妫洌剑剑保? ?。穑澹颍颍铮颍?ldquo;socket”); ?。澹椋簦ǎ保?;} 然后設(shè)置屬性,然后等待客戶端的連接,,一旦建立連接,,就可以實現(xiàn)數(shù)據(jù)的接收和傳送。
數(shù)據(jù)處理在整個程序中是十分關(guān)鍵的一環(huán),,該環(huán)節(jié)中實現(xiàn)的是在網(wǎng)絡(luò)數(shù)據(jù)和串口數(shù)據(jù)之間的相互交換,,根據(jù)實際需要也可以將網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)或者其他類型接口的數(shù)據(jù);這里網(wǎng)絡(luò)和串口數(shù)據(jù)交互處理分成兩部分,,一部份是網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)變成串口數(shù)據(jù),,另一部份是串口數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,其流程圖如圖4,、5所示,。為了充分利用系統(tǒng)資源,在數(shù)據(jù)處理程序中調(diào)用select()函數(shù),。Select函數(shù)原型為:int?。螅澹欤澹悖簦ǎ椋睿簟。睿酰恚妫洌?,fd_set?。颍澹幔洌妫洌螅妫洌撸螅澹簟,。鳎颍椋簦澹螅澹?,fd_set *exceptset,,const?。螅簦颍酰悖簟。簦椋恚澹觯幔臁,。簦椋恚澹铮酰簦?; 返回:準備好的文件描述符個數(shù)(可以是0),-1表示出錯,。
6結(jié)束語
本文作者創(chuàng)新點:本文采用性價比高的32位微處理器s3c2410作為主控芯片,,移植了源代碼開放的Linux,它易于實現(xiàn)了TCP/IP處理模塊,,這樣大大縮短了產(chǎn)品開發(fā)周期,,并有利于提高了串口數(shù)據(jù)和以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)換速率,提高數(shù)據(jù)傳輸?shù)膶崟r性,使傳統(tǒng)串口設(shè)備方便接入以太網(wǎng),,為以太網(wǎng)在控制層和設(shè)備層的應(yīng)用奠定了基礎(chǔ),。