日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

嵌入式系統(tǒng)在串口網(wǎng)絡服務器的應用

出處:維庫電子市場網(wǎng) 發(fā)布于:2023-06-26 10:48:30

  1 引言

嵌入式系統(tǒng)是"控制、監(jiān)視或者輔助裝置、機器和設備運行的裝置"(devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。目前國內(nèi)一個普遍被認同的定義是:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。

在嵌入式系統(tǒng)時代,所有的設備都要網(wǎng)絡化,這是未來科技發(fā)展的趨勢。而在自動化領域有成千上萬的傳感器,控制器及其他設備。而他們之間常用的通信接口就是 RS-232 串口。而隨著通信技術的進步,這種簡單的通信方法越來越不能適應需要。而高度成熟的網(wǎng)絡技術為這一問題的解決提供了一種思路。在實際工作中,筆者為了通過Internet讀取只有RS-232串口的傳感器中數(shù)據(jù),基于S3C4510B設計了一個串口網(wǎng)絡服務器的系統(tǒng)。

  2 硬件設計

本系統(tǒng)微處理器采用三星公司的硬件S3C4510B,網(wǎng)口控制芯片采用Realtek公司的RTL8201,串口控制芯片采用常見的MAX232.主要芯片都是高度集成,接線簡潔,原理清晰。



  2.1  S3C4510B簡介

S3C4510CPU芯片是samsung公司arm7TDMI系列中的一個型號,其工作頻率為50MHZ,片內(nèi)集成了豐富的通用模塊,含有支持10M/100M自適應的以太網(wǎng)控制器,可以直接通過PHY芯片引出以太網(wǎng)接口。已太網(wǎng)PHY芯片選用Intel公司的lxt972a芯片,它具有10M、100M自適應收發(fā)功能,支持全雙工操作,經(jīng)過網(wǎng)絡變壓器YL18-2050S連接到RJ45,進行收發(fā)數(shù)據(jù)包功能。此外,該系統(tǒng)還使用聊2MBflash,16MBSDRAM和512KBSRAM作為存儲器

  2.2  Flash存儲器接口電路

FLASH閃存閃存的英文名稱是"FlashMemory",一般簡稱為"Flash",它屬于內(nèi)存器件的一種。不過閃存的物理特性與常見的內(nèi)存有根本性的差異:目前各類DDR、SDRAM或者RDRAM都屬于揮發(fā)性內(nèi)存,只要停止電流供應內(nèi)存中的數(shù)據(jù)便無法保持,因此每次電腦開機都需要把數(shù)據(jù)重新載入內(nèi)存;閃存則是一種不揮發(fā)性(Non-Volatile)內(nèi)存,在沒有電流供應的條件下也能夠長久地保持數(shù)據(jù),其存儲特性相當于硬盤,這項特性正是閃存得以成為各類便攜型數(shù)字設備的存儲介質(zhì)的基礎。

本系統(tǒng)中采用的Flash存儲器日本富士公司生產(chǎn)的MBM29F016.具有16M位(2M字節(jié))、單一5V供電的閃速存儲器。2M字節(jié)的數(shù)據(jù)區(qū)被分為32個64k字節(jié)的區(qū)段,因而具有靈活擦除功能。

Flash在本系統(tǒng)中用來存放uClinux操作系統(tǒng)程序代碼。系統(tǒng)上電或復位后從此處獲取指令并開始執(zhí)行。因此S3C4510B的nRCS<0>接至MBM29F016的CE#端。RES#端接系統(tǒng)服務信號。OE#接S3C4510B的nOE,

WE#端接S3C4510B的nWBE<0>.地址總線[a19~A0]與S3C4510B的地址總線[ADDR19~ADDR0]相連。16位數(shù)據(jù)總線[DQ15~DQ0]與S3C4510B的低16位數(shù)據(jù)總線[XDATA15~XDATA0].

  2.3  SDRAM接口電路

SDRAM:SynchronousDynamicRandomAccessMemory,同步動態(tài)隨機存儲器,同步是指Memory工作需要同步時鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準;動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機是指數(shù)據(jù)不是線性依次存儲,而是自由指定地址進行數(shù)據(jù)讀寫。SDRAM從發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷了四代,分別是:代SDRSDRAM,第二代DDRSDRAM,第三代DDR2SDRAM,第四代DDR3SDRAM.(顯卡上的DDR已經(jīng)發(fā)展到DDR5)

與Flash存儲器相比較,SDRAM不具有掉電保持數(shù)據(jù)的特性,但其存取速度大大高于Flash存儲器,且具有讀/寫的屬性。因此,SDRAM在系統(tǒng)中主要用作程序的運行空間、數(shù)據(jù)及堆棧區(qū)。當系統(tǒng)啟動時,CPU首先從復位地址0x0處讀取啟動代碼,在完成系統(tǒng)的初始化后,程序代碼一般應調(diào)入SDRAM中運行,以提供系統(tǒng)的運行速度。同時,系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都存放在SDRAM中。與Flash存儲器相比,SDRAM的控制信號較多,其連接電路也相對復雜。

本系統(tǒng)采用兩片HY57V641620并聯(lián)構(gòu)成32位的SDRAM存儲系統(tǒng),其中一片為高16位,另一片為低16位。兩片HY57V641620的CLK端接的SDCLK端。兩片HY57V641620的CLE端接S3C4510B CLE端。兩片HY57V641620的A11~A0接S3C4510B ADDR<11>~ADDR<0>;高16位片的DQ15~DQ0接S3C4510B  的數(shù)據(jù)總線的高16位XDATA<31>~XDATA<16>;低16位片的DQ15~DQ0接S3C4510B的數(shù)據(jù)總線的低16位XDATA<15>~XDATA<0>.

  2.4  RTL8201接口電路

RTL8201是Realtek公司生產(chǎn)的一種全雙工以太網(wǎng)控制器,由于其優(yōu)良的性能、廉價的價格,使其在市場上10MbpsiISA總線網(wǎng)卡中占有相當?shù)谋壤0磾?shù)據(jù)鏈路的不同,可以將RTL8201內(nèi)部劃分為遠程DMA(remote,DMA)通道和本地DMA(local DMA)通道兩部分。本地DMA完成控制器與網(wǎng)線的數(shù)據(jù)交換,主處理器收發(fā)數(shù)據(jù)只需對遠程DMA操作。當主處理器要向網(wǎng)上發(fā)送數(shù)據(jù)時,先將一幀數(shù)據(jù)通過遠程DMA通道送到RTL8201中的發(fā)送緩存區(qū),然后發(fā)出傳送數(shù)據(jù)命令。RTL8201在完成了上一幀的發(fā)送后,再完成此幀的發(fā)送。RTL8201接收到的數(shù)據(jù)通過MAC比較,CRC校驗后,由FIFO存到接收緩沖區(qū),收滿一幀后,以中斷的方式通知主處理器。

由于S3C4510B片內(nèi)已有帶MII接口的MAC控制器,而RTL8201也提供了MII接口,各種信號的定義也很明確,因此RTL8201與S3C4510B的連接也比較簡單。直接將兩者的同名端連接即可。

  2.5 MAX232接口電路

Max232產(chǎn)品是由德州儀器公司(TI)推出的一款兼容RS232標準的芯片。該器件包含2驅(qū)動器、2接收器和一個電壓發(fā)生器電路提供TIA/EIA-232-F電平。該器件符合TIA/EIA-232-F標準,每一個接收器將TIA/EIA-232-F電平轉(zhuǎn)換成5-VTTL/CMOS電平。每一個發(fā)送器將TTL/CMOS電平轉(zhuǎn)換成TIA/EIA-232-F電平。

MAX232芯片時MAXIM公司生產(chǎn)的低功耗、單電源雙RS232發(fā)送/接收器。適用于各種EIA-232E和V.28/V.24的通信接口。MAX232芯片內(nèi)部有一個電源電壓變換器,可以把輸入的+5V電源變換城RS-232C輸出電平所需10V電壓,所以采用此芯片接口的串行通信系統(tǒng)只要單一的+5V電源就可以。

現(xiàn)選用其中一路發(fā)送/接受。T1I接S3C4510B的TXD0端,R1O接S3C4510B的RXD0端。因為MAX232具有驅(qū)動能力,所以不需要外加驅(qū)動電路。

  3 軟件設計

本系統(tǒng)采用uClinux作為操作系統(tǒng)。與一般全靠硬件實現(xiàn)的串口服務器比較起來,配置要復雜,需要用戶具有一定的技術背景,不過因為帶有操作系統(tǒng),其靈活性也是硬件串口服務器所不能比擬的。用戶可以通過編寫應用程序,來隨意擴展所需的功能。

uCLinux是一種的嵌入式Linux版本,是micro-Conrol-Linux的縮寫。它秉承了標準Linux的優(yōu)良特性,經(jīng)過各方面的小型化改造,形成了一個高度優(yōu)化的、代碼緊湊的嵌入式Linux.雖然它的體積很小,卻仍然保留了Linux的大多數(shù)的優(yōu)點:穩(wěn)定、良好的移植性、的網(wǎng)絡功能、對各種文件系統(tǒng)完備的支持和標準豐富的API.它專為嵌入式系統(tǒng)做了許多小型化的工作,目前已支持多款CPU.其編譯后目標文件可控制在幾百KB數(shù)量級,并已經(jīng)被成功地移植到很多平臺上。具有以下優(yōu)點:

(1) Linux是開放源代碼的,不存在黑箱技術,遍布的眾多Linux愛好者都是Linux開發(fā)者的強大技術支持者。

(2) Linux源代碼隨處可見,注釋豐富,文檔齊全,易于解決各種問題。

(3) Linux的內(nèi)核小,效率高。

(4) Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡方面是非常完整的,它提供了對包括十兆位、百兆位及千兆位的以太網(wǎng)絡,還有無線網(wǎng)絡,以及光纖等的支持。

(5) Linux在內(nèi)核結(jié)構(gòu)的設計中考慮適應系統(tǒng)的可裁減性的要求。可將無用的代碼去除掉,近一步減少內(nèi)核規(guī)模。

  3.1 串口程序的設計

Linux對所有各類設備文件的輸入輸出擦作看上去就像對普通文件的輸入輸出一樣。所以Linux對串口的操作,也是通過設備文件訪問的。為了訪問串口,只需打開相應的設備文件即可。在Linux下,默認串行口COM1和COM2對應的設備分別為/dev/ttyS0 和/dev/ttyS1.

(1) 打開串口是通過使用標準的文件打開函數(shù)操作:

int fd;

/*以讀寫方式打開串口*/

fd = open( "/dev/ttyS0", O_RDWR);

if (-1 == fd){

/* 不能打開串口一*/

perror(" 提示錯誤!");

}

(2) 設置串口

基本的設置串口包括波特率設置,效驗位和停止位設置。串口的設置主要是設置 struct termios 結(jié)構(gòu)體的各成員值。

struct termio

{ unsigned short  c_iflag; /* 輸入模式標志 */

unsigned short  c_oflag;  /* 輸出模式標志 */

unsigned short  c_cflag;  /* 控制模式標志*/

unsigned short  c_lflag;  /* local mode flags */

unsigned char  c_line;      /* line discipline */

unsigned char  c_cc[NCC];    /* control characters */

};

(3) 發(fā)送數(shù)據(jù)

char  buffer[1024];int    Length;int    nByte;nByte = write(fd, buffer ,Length)

(4) 讀取串口數(shù)據(jù)

使用文件操作read函數(shù)讀取,如果設置為原始模式(Raw Mode)傳輸數(shù)據(jù),那么read函數(shù)返回的字符數(shù)是實際串口收到的字符數(shù)。可以使用操作文件的函數(shù)來實現(xiàn)異步讀取,如fcntl,或者select等來操作。

char  buff[1024];int    Len;int  readByte = read(fd,buff,Len);

  3.2 網(wǎng)絡程序的設計

Linux系統(tǒng)是通過提供套接字(socket)來進行網(wǎng)絡編程的。網(wǎng)絡程序通過socket和其它幾個函數(shù)的調(diào)用,會返回一個 通訊的文件描述符,我們可以將這個描述符看成普通的文件的描述符來操作,這就是linux的設備無關性的 好處。我們可以通過向描述符讀寫操作實現(xiàn)網(wǎng)絡之間的數(shù)據(jù)交流。以下介紹一下程序設計時常用的函數(shù)。

(1) socket

int socket(int domain, int type,int protocol)

domain:說明我們網(wǎng)絡程序所在的主機采用的通訊協(xié)族(AF_UNIX和AF_INET等)。

type:我們網(wǎng)絡程序所采用的通訊協(xié)議。

protocol:由于我們指定了type,所以這個地方我們一般只要用0來代替就可以了。

(2) bind

int bind(int sockfd, struct sockaddr *my_addr, int addrlen)

sockfd:是由socket調(diào)用返回的文件描述符。

addrlen:是sockaddr結(jié)構(gòu)的長度。

my_addr:是一個指向sockaddr的指針。

(3) listen

int listen(int sockfd,int backlog)

sockfd:是bind后的文件描述符。

backlog:設置請求排隊的長度。當有多個客戶端程序和服務端相連時, 使用這個表示可以介紹的排隊長度。 listen函數(shù)將bind的文件描述符變?yōu)楸O(jiān)聽套接字。返回的情況和bind一樣。

(4) accept

int accept(int sockfd, struct sockaddr *addr,int *addrlen)

sockfd:是listen后的文件描述符。

(5)connect

int connect(int sockfd, struct sockaddr * serv_addr,int addrlen)。

sockfd:socket返回的文件描述符。

serv_addr:儲存了服務器端的連接信息。其中sin_add是服務端的地址。

addrlen:serv_addr的長度。

connect函數(shù)是客戶端用來同服務端連接的。

總的來說網(wǎng)絡程序是由兩個部分組成的--客戶端和服務器端。它們的建立步驟一般是: 服務器端 socket-->bind-->listen-->accept.客戶端 socket-->connect.

 4 結(jié)語

本串口服務器,采用三星公司的S3C4510B ARM7系列微處理器及uClinux操作系統(tǒng),通過編程實現(xiàn)了串口數(shù)據(jù)到以太網(wǎng)口或以太網(wǎng)口到串口的數(shù)據(jù)轉(zhuǎn)換。經(jīng)過幾個月的運行,證明穩(wěn)定可靠。由于ARM系列微處理器的優(yōu)異性能,本系統(tǒng)上完全可以再加上1/2/4/8個RS-485/422/232串口,輕松連接網(wǎng)絡并管理數(shù)量眾多且分散在不同位置的串行設備。

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!