技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于S3C2410的嵌入式網(wǎng)關(guān)的設(shè)計(jì)與研究

基于S3C2410的嵌入式網(wǎng)關(guān)的設(shè)計(jì)與研究

時間:2008-05-14 10:32:00來源:ronggang

導(dǎo)語:?本文設(shè)計(jì)了一種基于嵌入式處理器s3c2410及l(fā)inux操作系統(tǒng)的串行設(shè)備與以太網(wǎng)通信的嵌入式網(wǎng)關(guān)系統(tǒng)
1 引言   隨著通信網(wǎng)絡(luò)技術(shù)和集成電路設(shè)計(jì)的高速發(fā)展,以tcp/ip網(wǎng)絡(luò)傳輸通信協(xié)議為代表,成熟度較高的開放式網(wǎng)絡(luò)通信技術(shù)向各種自動化系統(tǒng)進(jìn)行滲透,連接并控制所有設(shè)備。   而在工業(yè)控制和各種通訊設(shè)備中,更多的卻是符合rs-232標(biāo)準(zhǔn)的串行口設(shè)備。要將串行口的數(shù)據(jù)轉(zhuǎn)發(fā)到網(wǎng)絡(luò)上以實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸,就必須使用網(wǎng)關(guān)系統(tǒng)。網(wǎng)關(guān)又被稱為網(wǎng)間協(xié)議變換器,用于連接采用不同通信協(xié)議的網(wǎng)絡(luò),實(shí)現(xiàn)網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸。本文提出了一種基于嵌入式系統(tǒng)來實(shí)現(xiàn)串口和以太網(wǎng)口之間的數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)方案。   本文以32位嵌入式微處理器s3c241o為核心,通過移植嵌入式操作系統(tǒng)linux,并在linux上開發(fā)相應(yīng)的驅(qū)動程序和應(yīng)用程序來構(gòu)建一個方便、實(shí)用的網(wǎng)關(guān)。 2 嵌入式網(wǎng)關(guān)的結(jié)構(gòu)化設(shè)計(jì)   本網(wǎng)關(guān)主要實(shí)現(xiàn)串口和以太網(wǎng)口之間的數(shù)據(jù)傳輸。其總體結(jié)構(gòu)可簡化為硬件層和軟件層兩部分。硬件層由高性能的微處理器和多個功能模塊組成,軟件層由嵌入式操作系統(tǒng)及應(yīng)用軟件構(gòu)成.   2.1 硬件設(shè)計(jì)   本系統(tǒng)采用結(jié)構(gòu)化設(shè)計(jì),由串行口模塊,協(xié)議轉(zhuǎn)換模塊和以太網(wǎng)接口模塊等三部分組成。串口的數(shù)據(jù)以報文的格式發(fā)送到以s3c2410為核心的協(xié)議轉(zhuǎn)換模塊中,協(xié)議轉(zhuǎn)換模塊完成對該報文的接收和翻譯,并通過以太網(wǎng)接口模塊轉(zhuǎn)發(fā)到internet上,最終實(shí)現(xiàn)串口設(shè)備到以太網(wǎng)的協(xié)議轉(zhuǎn)換。   各模塊基本組成描述如下:   (1) 微處理器mcu   基于arm92ot內(nèi)核的s3c241o微處理器是一個多用途的通用芯片,它內(nèi)部集成了微處理器和常用外圍組件,特別適用于手持設(shè)備;  ?。?) 1o/1oom以太網(wǎng)接口   選用realtek公司生產(chǎn)的rtl82oi芯片作為以太網(wǎng)的物理層接口控制芯片。再通過rj45就可連接到以太網(wǎng);  ?。?) flash存儲器   采用一片hy29lv16o構(gòu)建flash存儲器系統(tǒng),其存儲容量為2mb;  ?。?) sdram存儲器   選用兩片hynix公司的hy57v64162o芯片并聯(lián)構(gòu)建sdram存儲器系統(tǒng);   (5) jtag接口   可對芯片內(nèi)部的所有部件進(jìn)行訪問,通過該接口可對系統(tǒng)進(jìn)行調(diào)試,編程等;  ?。?) 串行接口   s3c241o自身就帶有兩個uart控制器,我們將它們與max232相連進(jìn)行電平轉(zhuǎn)換,就可以得到兩個標(biāo)準(zhǔn)rs-232串行接口;  ?。?) i/o接口   主要包括鍵盤控制模塊和液晶顯示模塊等。   2.2 軟件設(shè)計(jì)   網(wǎng)關(guān)的軟件體系結(jié)構(gòu)設(shè)計(jì)分為3個層次:  ?。?) linux內(nèi)核:提供文件系統(tǒng)管理、中斷和中斷處理、系統(tǒng)初始化、網(wǎng)絡(luò)協(xié)議棧等;  ?。?) 硬件驅(qū)動層:包括驅(qū)動串口、以太網(wǎng)等;  ?。?) 應(yīng)用程序:如串口通信程序、網(wǎng)絡(luò)服務(wù)程序等。   ● 建立linux開發(fā)環(huán)境。基于linux操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境由s3c2410的開發(fā)板和宿主pc機(jī)所構(gòu)成。目標(biāo)板所用到的操作系統(tǒng)的內(nèi)核編譯、應(yīng)用程序的開發(fā)和調(diào)試由宿主pc機(jī)來完成。雙方通過串口和以太網(wǎng)接口建立連接關(guān)系。   首先,在宿主機(jī)上安裝linux操作系統(tǒng),然后從網(wǎng)上下載工具鏈如:arm-elf-gcc-2.95.3-2.i386.rpm將它復(fù)制到宿主機(jī)上的任一目錄下,鍵入安裝命令,將交叉編譯器安裝到宿主機(jī),建立起交叉開發(fā)環(huán)境.就可以用交叉編譯器arm-elf-gcc編譯操作系統(tǒng)內(nèi)核和用戶應(yīng)用程序了。   ● 設(shè)備驅(qū)動程序。設(shè)備驅(qū)動程序是內(nèi)核和硬件之間的接口。它是一組數(shù)據(jù)結(jié)構(gòu)和函數(shù)的集合,其中以init_module和cleanup_module這兩個函數(shù)和file_operations,inode,file這三個數(shù)據(jù)結(jié)構(gòu)最重要,它們都在linux/fs.h中定義。這些數(shù)據(jù)結(jié)構(gòu)和函數(shù)通過定義的接口控制一個或多個設(shè)備。設(shè)備驅(qū)動程序位于內(nèi)核的最底層,直接與硬件進(jìn)行交互。內(nèi)核提供統(tǒng)一的系統(tǒng)調(diào)用,用戶程序通過這些標(biāo)準(zhǔn)系統(tǒng)調(diào)用來訪問硬件設(shè)備。   本設(shè)計(jì)中需要開發(fā)的硬件驅(qū)動有:以太網(wǎng)卡控制器,串口,lcd,小鍵盤等驅(qū)動程序。為linux內(nèi)核編寫驅(qū)動要做的只是為相應(yīng)的設(shè)備編寫幾個基本函數(shù)并vfs注冊即可。一般都是在一個現(xiàn)成的驅(qū)動程序的基礎(chǔ)上針對特殊的硬件設(shè)備作相應(yīng)的改動。驅(qū)動編好以后,就為上層的應(yīng)用程序提供了接口函數(shù),然后開始編寫針對該設(shè)備的應(yīng)用程序。最后重新編譯內(nèi)核,把linux的二進(jìn)制文件燒進(jìn)flash存儲器,就可以使用這些外部設(shè)備了。   ● 應(yīng)用程序設(shè)計(jì)。本網(wǎng)關(guān)的主要功能就是實(shí)現(xiàn)串口協(xié)議和網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換。由于移植了linux操作系統(tǒng),我們只需在linux操作系統(tǒng)上編寫串口應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序就可以實(shí)現(xiàn)網(wǎng)關(guān)的設(shè)計(jì)要求。應(yīng)用程序設(shè)計(jì)框圖如圖3所示。主要包括三個應(yīng)用程序:linux下的串口編程、socket編程以及進(jìn)程間通信。   2.3 linux下的串口編程   串口是通信應(yīng)用中最簡單也是最常用的接口。在linux下,串口被當(dāng)作文件對待,每個串口都被賦予了一個文件描述符。在linux中打開和預(yù)置一個串行設(shè)備的基本步驟:   (1) 打開串口   在 linux 下串口文件是位于/dev下的,串口一為/dev/ttys0,串口二為/dev/ttys1。打開串口是通過使用標(biāo)準(zhǔn)的文件打開函數(shù)open操作。   (2) 設(shè)置串口   設(shè)置串口包括波特率設(shè)置,效驗(yàn)位和停止位設(shè)置,它主要是設(shè)置struct termios結(jié)構(gòu)體各成員c_ illag, c_ oflag, c_ cflag、c_1nag的值。設(shè)置這個結(jié)構(gòu)體比較復(fù)雜,下面是設(shè)置波特率的函數(shù):   void set_speed(int fd, int speed){   //fd為打開串口的文件句柄,speed為串口速率   int i;   int status;   struct termios opt;   tcgetattr(fd, &opt);   //使用tcgetattr獲取當(dāng)前設(shè)備方式   for (i= 0; i   if(speed == name_arr[i]) {   tcflush(fd, tcioflush);   cfsetispeed(&opt, speed_arr[ i ]);   //設(shè)置波特率,speed_arr[ i ]為波特率表某值   cfsetospeed(&opt, speed_arr[ i ]);   status = tcsetattr(fd1, tcsanow, &opt);   //使用tcsetattr設(shè)置設(shè)備工作方式   if(status != 0) {   perror("tcsetattr fd1");   return;   }   tcflush(fd,tcioflush);  ?。?   }  ?。?  ?。?) 讀寫串口   設(shè)置好串口之后,把串口當(dāng)作文件,使用read和write讀寫串口終端。函數(shù)原型為write(fd,buffer,length)和read(fd,buffer,length)。   (4) 關(guān)閉串口   輸入輸出處理完畢,用close關(guān)閉串口。關(guān)閉串口就是關(guān)閉文件,即close(fd)。   2.4 linux下的socket編程   socket接口是tcp/ip網(wǎng)絡(luò)的api,它是建立在傳輸層協(xié)議(主要是tcp和udp)上的一種套接字規(guī)范。socket接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)tcp/ip網(wǎng)絡(luò)上的應(yīng)用程序。網(wǎng)絡(luò)的socket數(shù)據(jù)傳輸是一種特殊的i/o,socket也是一種文件描述符。socket具有一個類似于打開文件的函數(shù)調(diào)用socket(),該函數(shù)返回一個整型的socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該socket實(shí)現(xiàn)的。常用的socket類型有兩種:流式socket(sock_stream)和數(shù)據(jù)報式socket(sock_dgram)。流式是一種面向連接的socket,針對于面向連接的tcp服務(wù)應(yīng)用;數(shù)據(jù)報式是一種無連接的socket,對應(yīng)于無連接的udp服務(wù)應(yīng)用。本方案采用流式socket,因?yàn)樗峁┮环N可靠的面向連接的數(shù)據(jù)傳輸辦法,有自己的檢錯和糾錯機(jī)制,并且不管是對單個的數(shù)據(jù)報,還是對于數(shù)據(jù)包,它都提供了一種流式數(shù)據(jù)傳輸方式。 3 進(jìn)程之間通信   在linux中,每一個進(jìn)程都有它的獨(dú)立的運(yùn)行空間,進(jìn)程之間要實(shí)現(xiàn)通信就要用到系統(tǒng)提供的通信機(jī)制。在linux中用來進(jìn)行進(jìn)程間通信與同步的機(jī)制有:共享內(nèi)存、信號量、消息隊(duì)列、管道、有名管道、socket等等。在本系統(tǒng)中,用到的是共享內(nèi)存和信號量。在兩個進(jìn)程間通信時用到的是共享內(nèi)存,實(shí)現(xiàn)對它的互斥訪問用的是信號量。共享內(nèi)存允許兩個或更多的進(jìn)程共享一塊內(nèi)存。在linux任務(wù)中通過/dev/mem設(shè)備在這段內(nèi)存中尋址,進(jìn)程也通過讀取這段內(nèi)存的數(shù)據(jù)獲得信息。共享內(nèi)存從理論上講,應(yīng)該是兩個進(jìn)程之間最快速的通信方式,因?yàn)樗鼘⑿畔⒅苯拥挠成淙雰?nèi)存省去了其它ipg方法的中間步驟。使用共享內(nèi)存時,同步問題尤其重要。"信號量"就是為解決這種問題而引入的。信號量能夠讓程序員實(shí)現(xiàn)一種對任意事件的鎖定機(jī)制。 4 結(jié)束語   本文設(shè)計(jì)了一種基于嵌入式處理器s3c2410及l(fā)inux操作系統(tǒng)的串行設(shè)備與以太網(wǎng)通信的嵌入式網(wǎng)關(guān)系統(tǒng)。本網(wǎng)關(guān)可實(shí)現(xiàn)以太網(wǎng)與串行設(shè)備的通信,通過改進(jìn)可以滿足與更多類型的串行設(shè)備的通信。隨著以太網(wǎng)的發(fā)展和嵌入式系統(tǒng)設(shè)計(jì)被人們越來越廣泛的關(guān)注,這種設(shè)計(jì)方案將會在工業(yè)控制、樓宇自動化、智能家居等領(lǐng)域得到越來越廣泛的應(yīng)用,具有廣闊的應(yīng)用前景。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:淺談變頻器容量的選擇

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號