《電子技術應用》
您所在的位置:首頁 > 通信与网络 > 设计应用 > 基于ARM的嵌入式网络接口控制器设计
基于ARM的嵌入式网络接口控制器设计
EEworld
EEworld
摘要: 摘要:随着工业以太网技术的发展,以太网已经渗透到了控制系统网络的控制层和设备层,然而大量的工业现场设备尚不...
Abstract:
Key words :

關鍵字:嵌入式 網(wǎng)絡接口 控制器

1前言   

以太網(wǎng)作為目前應用最為廣泛的局域網(wǎng)技術,在工業(yè)自動化和過程控制領域得到了越來越的應用。傳統(tǒng)的控制系統(tǒng)在信息層大都采用以太網(wǎng),而在控制層和設備層一般采用不同的現(xiàn)場總線或其他專用網(wǎng)絡。目前,隨著工業(yè)以太網(wǎng)技術的發(fā)展,以太網(wǎng)已經(jīng)滲透到了控制層和設備層。基于以太網(wǎng)的控制網(wǎng)絡最典型的應用形式是Ethernet+ICP/IP,它的底層是Ethernet,網(wǎng)絡層和傳輸層采用國際公認的標準TCP/IP.然而大量的工業(yè)現(xiàn)場設備,如數(shù)控機床、機械手等設備,這些設備最常用的通訊方式為RS-232/485/422串行接口,不具備網(wǎng)絡接口,以至無法直接接到以太網(wǎng)。

隨著半導體產(chǎn)業(yè)和集成電路技術的發(fā)展,以微控制器/微處理為硬件核心的嵌入式系統(tǒng)得到迅速發(fā)展,并在無線通訊、網(wǎng)絡設備、工業(yè)控制等領域得到廣泛應用。本文選用基于ARM9和armlinux開發(fā)嵌入式網(wǎng)絡接口控制器,實現(xiàn)串行口數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的相互轉(zhuǎn)換,通過這種方式,可以使傳統(tǒng)串口設備成為具有網(wǎng)絡接口的設備,直接接入工業(yè)以太網(wǎng)。

2嵌入式網(wǎng)絡接口控制器工作原理   

嵌入式網(wǎng)絡接口器選用DM9000E芯片作以太網(wǎng)控制器,來完成與上級以太網(wǎng)的數(shù)據(jù)交換,采用32位微處理器s3c2410和嵌入式Linux進行協(xié)議實現(xiàn)和數(shù)據(jù)處理,然后將處理過的數(shù)據(jù)下傳給底層設備終端;把從底層終端設備接收的數(shù)據(jù),進行數(shù)據(jù)處理和協(xié)議實現(xiàn),通過DM900E傳輸?shù)剑桑睿簦澹颍睿澹羯稀9ぷ髟砣纾彼?  

3 嵌入式網(wǎng)絡接口控制器硬件平臺   

嵌入式網(wǎng)絡接口控制器硬件平臺的整體連接框圖如圖 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 Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個USB主機,1個USB設備,SD主機和MMC接口,2路SPI。S3C2410處理器最高可運行在203MHz。本系統(tǒng)的FLASH存儲器選INTEL公司的28F128,SDRAM芯片選用兩片HY57V561620構成32位的存儲器系統(tǒng).   以太網(wǎng)控制器芯片選擇DM9000,它是完全綜合的、成本較低的單一快速,具有通用的處理器接口,10/100M自適應,以及4K雙字節(jié)靜態(tài)存取存儲器。它被設計為低功耗、高處理性能,支持3.3V到5V的容差。DM9000提供一個MII接口來連接HPNA設備或者其他支持MII接口的收發(fā)器,并支持8位、16位、32位的接口來適應不同的處理器對內(nèi)部存儲器的訪問,它支持IEEE802.3u規(guī)格,還支持IEEE 802.3x全雙工流控制。在DM9000和RJ45接口之間需要用漢仁電子有限公司的網(wǎng)絡隔離變壓器HR601627來連接,網(wǎng)絡隔離變壓器起信號傳輸、阻抗匹配、波形修復、雜波抑制以及高電壓隔離等作用,以保護系統(tǒng)的安全。

   圖1嵌入式網(wǎng)絡接口控制器工作原理

  

圖 2嵌入式網(wǎng)絡接口控制器硬件框   

4 嵌入式操作系統(tǒng)的選擇   

本系統(tǒng)的設計,網(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)提供了很好的支持,移植過程中只需要修改源代碼和配置相應模塊即可實現(xiàn)對網(wǎng)絡的支持。

5以太網(wǎng)數(shù)據(jù)與串口數(shù)據(jù)轉(zhuǎn)換實現(xiàn)   

本文開發(fā)的接口控制器主要完成兩個功能,即將串口接收到的數(shù)據(jù)通過網(wǎng)卡發(fā)送至以太網(wǎng),將網(wǎng)卡接收到的數(shù)據(jù)通過串口發(fā)送至另一串口端。工作模式上可以選擇為服務器或客戶端模式,數(shù)據(jù)傳輸協(xié)議可以選擇為TCP(Transmission Control Protocol,傳輸控制協(xié)議)方式或UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)方式。其中TCP和UDP是以太網(wǎng)數(shù)據(jù)的兩種傳輸協(xié)議,TCP是基于連接的協(xié)議,在正式收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連接,而UDP是面向非連接的數(shù)據(jù)直接傳輸協(xié)議,不需要對方的回答確認。

5.1應用程序的開發(fā)環(huán)境和網(wǎng)絡編程   

由于嵌人式系統(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)絡通信而開發(fā)的一個接口程序,后來被成功移植到DOS、Windows等操作系統(tǒng)上,成為Internet上網(wǎng)絡開發(fā)最為通用的API函數(shù)。用于網(wǎng)絡開發(fā)的SOCKET主要有Stream Sockets(流格式)和Datagram Sockets(數(shù)據(jù)報格式)兩種類型,流格式Socket與TCP協(xié)議對應,數(shù)據(jù)報格式Socket與UDP協(xié)議對應。

5.2 軟件設計   

本系統(tǒng)采用工作模式TCP Server服務器,等待客戶端請求連接,實現(xiàn)數(shù)據(jù)傳輸功能。本程序的流程圖如圖3所示。首先,打開串口,在Linux下打開串口是通過標準的文件打開函數(shù)

   

 圖3 功能實現(xiàn)流程圖

  

圖4 以太網(wǎng)數(shù)據(jù)通過串口發(fā)送

  

圖5 串口數(shù)據(jù)通過網(wǎng)卡發(fā)送   

操作,程序代碼如下:   int fd;   fd=open(“/dev/ttyS0”,O_RDWR);   if(fd==-1) {perror(“提示錯誤!”);}   然后設置串口的波特率、校驗位和停止位。要用網(wǎng)卡接收發(fā)送數(shù)據(jù),就要首先創(chuàng)建套接字,程序代碼如下:   int sock_fd;   sock_fd=socket(AF_INET,SOCK_STREAM,O)   if(sock_fd==-1)   {perror(“socket”);   exit(1);}   然后設置屬性,然后等待客戶端的連接,一旦建立連接,就可以實現(xiàn)數(shù)據(jù)的接收和傳送。

數(shù)據(jù)處理在整個程序中是十分關鍵的一環(huán),該環(huán)節(jié)中實現(xiàn)的是在網(wǎng)絡數(shù)據(jù)和串口數(shù)據(jù)之間的相互交換,根據(jù)實際需要也可以將網(wǎng)絡數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)或者其他類型接口的數(shù)據(jù);這里網(wǎng)絡和串口數(shù)據(jù)交互處理分成兩部分,一部份是網(wǎng)絡數(shù)據(jù)轉(zhuǎn)變成串口數(shù)據(jù),另一部份是串口數(shù)據(jù)發(fā)送到網(wǎng)絡上,其流程圖如圖4、5所示。為了充分利用系統(tǒng)資源,在數(shù)據(jù)處理程序中調(diào)用select()函數(shù)。Select函數(shù)原型為:int select(int numfds,fd_set *readfds,fd_set *writeset,fd_set *exceptset,const struct timeval *timeout);   返回:準備好的文件描述符個數(shù)(可以是0),-1表示出錯。

6結束語   

本文作者創(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)串口設備方便接入以太網(wǎng),為以太網(wǎng)在控制層和設備層的應用奠定了基礎。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。
主站蜘蛛池模板: www欧美日韩| 国产欧美在线播放| 久久精品在线视频| 欧美激情一级欧美精品| 国产精品久久久久久久久久免费 | 99九九视频| 久久精品色欧美aⅴ一区二区| 亚洲一区高清| 国产精品入口尤物| 久久av一区二区| 欧美 日韩 国产 在线观看| 丝袜一区二区三区| 一区二区免费在线观看| 99国产视频在线| 国产精品日韩av| 国产精品一久久香蕉国产线看观看| 久久久久久久91| 欧美综合在线第二页| 亚洲欧美日韩精品在线| 不卡视频一区二区| 国产精品久久77777| 久久久亚洲精品无码| 欧美日韩一道本| 久久在线中文字幕| 欧美日韩国产不卡在线看| 日本高清久久一区二区三区| 日韩中文字幕在线视频| 午夜免费电影一区在线观看| 亚洲国产一区二区在线| 色综合五月天导航| 日本精品二区| 欧美在线日韩精品| 久久久久人妻精品一区三寸| 久久视频在线观看免费| 久久久久国色av免费观看性色| 久久久久久69| 久久99精品久久久久久青青日本| 久久综合电影一区| 激情综合在线观看| 国产精品美女网站| 亚洲一区二区自拍|