《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARMuCLinux的網(wǎng)絡控制系統(tǒng)設計與實現(xiàn)
基于ARMuCLinux的網(wǎng)絡控制系統(tǒng)設計與實現(xiàn)
任海剛,孟克
摘要: 本文討論了基于ARM+uCLinux平臺的網(wǎng)絡控制系統(tǒng)設計與實現(xiàn)方法。并對該平臺下應用TCP/IP協(xié)議進行網(wǎng)絡通信進行了探討。該方法對于自動化樓宇、工業(yè)控制、智能家居等方面都有一定的借鑒意義。
Abstract:
Key words :

引言

隨著網(wǎng)絡和通信技術的發(fā)展,嵌入式系統(tǒng)現(xiàn)已進入高速發(fā)展階段。并在社會各個領域得到了廣泛的應用。本文介紹了一種采用ARM" title="ARM">ARM+uCLinux" title="uCLinux">uCLinux作為開發(fā)平臺。實現(xiàn)基于TCP/IP的遠程系統(tǒng)監(jiān)控.從而取代傳統(tǒng)單片機來實現(xiàn)數(shù)據(jù)采集、預處理和通信功能;并依靠互聯(lián)網(wǎng)將數(shù)據(jù)向上位機傳送,同時支持遠端客戶對設備進行遠程控制,從而實現(xiàn)遠程監(jiān)控功能的具體方法。

1 系統(tǒng)平臺的構建

本系統(tǒng)由嵌入式平臺服務器、前端控制器、前端傳感器、客戶端和配置PC組成。開發(fā)時可通過配置PC來下載系統(tǒng)和應用軟件。嵌入式系統(tǒng)平臺能夠收集現(xiàn)場數(shù)據(jù)。并傳送到遠端客戶機,之后由遠端客戶機對數(shù)據(jù)進行處理,接著發(fā)送控制信號給系統(tǒng)服務器,以便通過前端控制器對設備進行遠程控制。其系統(tǒng)結構如圖1所示
 

1.1 硬件開發(fā)平臺
 

該系統(tǒng)的硬件開發(fā)平臺可選擇SmartARM2200。該嵌入式設備的核心是ARM7TDMI的LPC2210.開發(fā)板自身具有A/D轉換器和多個GPIO(通用I/O)口,可對工業(yè)現(xiàn)場的各種設備、儀表進行數(shù)據(jù)采集和監(jiān)控。使用時,只要將相應的傳感器信號接入控制器的端口即可。其開發(fā)板系統(tǒng)的硬件配置如圖2所示。

1.2 uCLinux操作系統(tǒng)

操作系統(tǒng)是嵌入式設備軟件的核心部分。本系統(tǒng)采用uCLinux系統(tǒng)平臺來完成對硬件系統(tǒng)的管理和維護。uCLinux是廣泛應用于微控制領域的一種嵌入式Linux操作系統(tǒng)。它通過對標準Linux內(nèi)核的裁減,可去除虛擬內(nèi)存管理部分代碼,以對內(nèi)存分配進行優(yōu)化。從而達到提高系統(tǒng)運行效率的目的。uCLinux則可經(jīng)過各方面的小型化改造形成一個高度優(yōu)化、代碼緊湊的嵌入式Linux,它保留了Linux的大多數(shù)優(yōu)點,包括穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡功能、完備的文件系統(tǒng)支持、豐富的API等。

1.3 uCLinux在ARM平臺上的移植

若將uCLinux移植到SmartARM2200上,需要進行以下四個步驟:

(1)下載源碼,建立交叉編譯環(huán)境

uCLinux是自由軟件(完全開放代碼)。用戶可以直接從http://www.uclinux.org/pub/uclinux處下載源代碼并安裝到Red Hat9.0系統(tǒng)下,以便正常在Red Hat9.0建立起交叉編譯環(huán)境。

(2)配置和編譯內(nèi)核

進入到安裝好的uCLinux目錄,依次執(zhí)行下面的命令:

make menuconfig;進入配置菜單后,選擇Vendor/Product(廠商/產(chǎn)品)下的PHILIPS/lpc2200;用Kernel Version(內(nèi)核版本)選擇Linux-2.4.x,Libc Version(函數(shù)庫版本)選擇uClibc:其余內(nèi)核和應用程序選項可根據(jù)情況選擇。

make dep

make clean

make lib_only

make user_only

make romfs

make image

make 

編譯結束后會在uCLinux安裝目錄下生成romfs.img文件,利用它可以制作RAM Disk,然后在linux-2.4.X目錄下生成elf格式的Linux內(nèi)核文件,并以下列方式將其轉換成bin格式

#arm-elf-objcopy-O binary linux linux.bin

從而生成下載用的uCLinux內(nèi)核鏡像文件linux.bin。

(3)制作Ram Disk掛栽根文件系統(tǒng)

首先創(chuàng)建一個512 kB的虛擬磁盤,并將虛擬磁盤文件格式轉化成ext2格式:

dd if/dev/zero of=initrd.img bs=1024 count=512

mkfs.ext2-c init.img

然后將init.img和romfs.img加載到主機文件系統(tǒng)上,并在RAM中建立需要的目錄:/bin,/dev,/etc,/var,進而拷貝ROM中的文件到ram目錄中。

下來在RAM盤dev目錄下創(chuàng)建設備節(jié)點:

#mknod ram/dev/ttyS0 c 4 64

#mknod ram/dev/console c 5 1

最后卸載init.img和romfs.img,并應確保init.img修改已保存,至此,RAM DISK便創(chuàng)建完成。

(4)下載內(nèi)核和文件系統(tǒng)

正確設置主板啟動選擇跳線。主板加電后,在超級終端上便可以看到BootLoader引導信息,可選擇默認的FTP連接,并使用BootLoader默認的IP進行下載,然后啟動gftp,輸入主板默認的IP和端口號。這樣,linux主機就可以和主機連接,最后選擇需要下載的Linux內(nèi)核文件和RAM盤及相關的配置文件即可。

2 監(jiān)控系統(tǒng)功能的實現(xiàn)

監(jiān)控系統(tǒng)主要由3個部分組成:數(shù)據(jù)采集部分,設備控制部分,數(shù)據(jù)傳輸部分。數(shù)據(jù)采集部分可對傳感器信號進行A/D轉換,并對采集到的數(shù)據(jù)進行簡單的處理,同時提供調(diào)整運行參數(shù)的接口。數(shù)據(jù)傳輸部分可將采集的數(shù)據(jù)傳送到遠端的主機,并接收遠端主機的控制信息。遠端主機則對傳輸過來的遠程數(shù)據(jù)進行處理、存儲和顯示,并可以修改數(shù)據(jù)采集部分的參數(shù)以控制數(shù)據(jù)采集,同時依據(jù)采集到的數(shù)據(jù)對設備發(fā)出操作指令,或對遠端的設備進行控制,從而實現(xiàn)遠程監(jiān)控功能。

2.1 數(shù)據(jù)采集

使用A/D轉換設備前,首先要創(chuàng)建設備節(jié)點,并加載ADC驅動,然后通過open()和close()將其打開和關閉.主要的數(shù)據(jù)采集程序如下:

……

ioctl(fd,ADC_SET_CLKDIV,(Fpclk+fadc1)/fadc-1);//設置A/D轉換速度

ioctl(fd,ADC_SET_BITS,10);//設置A/D轉換精度; 

while(1) {

ad_data=0;

read(fd,&ad_data,sizeof(ad_data));//讀取A/D轉換的值;

……
 

2.2 GPIO設備控制

同A/D轉換設備類似,使用GPIO也需先創(chuàng)建設備節(jié)點并加載驅動。對GPIO操作前,應通過open()打開,使用后應通過close()關閉。


 首先。選定開發(fā)板上沒有使用過的GPIO端口,設定其輸入/輸入狀態(tài),然后根據(jù)客戶端返回的信息對端口進行操作,輸出0/1的電平,以使其外部連接的繼電器動作。從而控制設備的運轉。程序主要通過函數(shù)ioctl來實現(xiàn)。ioctl是設備驅動程序中對設備的I/O通道進行管理的函數(shù),通過它可對設備的一些特性進行控制.其函數(shù)原形為:

int ioctl(int fd,ind cmd,…);

其中,fd是用程序打開設備時,使用open函數(shù)返回的文件標示符;cmd是用戶程序對設備的控制命令;至于后面的省略號,則是一些補充參數(shù)(一般最多一個,有或沒有是和cmd的意義相關的)。在這里,可通過如下一組函數(shù)來實現(xiàn):

ioctl(fd1,GPIO_SET_PIN_IN,devicel);

//設置管角為輸出狀態(tài);

ioctl( fd2, GPIO_SET_PIN_OUT, devicel_state); 

//設置管角為輸入狀態(tài);

ioctl(fd2,GPIO_READ_PIN,&devicel_state);

//讀取設備狀態(tài)管角;

ioctl(fd1,GPIO_CLR_PIN,device);

//清除設備管角控制信號;

2.3 網(wǎng)絡通信程序

網(wǎng)絡通信程序可使用TCP/IP協(xié)議下標準的socket套接字編寫。套接字(socket)是網(wǎng)絡通信的基本操作單元。它提供了不同主機間進程雙向通信的端點。這些進程在通信前應各自建立一個socket,并通過對socket的讀/寫操作實現(xiàn)網(wǎng)絡通信功能。常用的套接字有兩種:流式套接字(Stream Socket)和數(shù)據(jù)報套接字(Datagram Socket)。其中,流式套接字是可靠的面向連接的通信數(shù)據(jù)流,是無錯誤的傳輸;而數(shù)據(jù)報套接字則使用UDP來傳送數(shù)據(jù)包,數(shù)據(jù)包的順序是沒有保障的。本系統(tǒng)采用流式套接字進行程序設計。

流式套接字的服務進程和客戶進程建立連接及通信的程序流程如圖3所示。現(xiàn)具體說明如下:
 

(1)服務進程首先調(diào)用socket()創(chuàng)建一個流式套接字,并調(diào)用bind()將服務器地址捆扎在該套接字上,接著調(diào)用listen()監(jiān)聽連接請求,隨后調(diào)用accept()做好與客戶進程建立連接的準備。無連接請求時,服務進程被阻塞;

(2)客戶進程先調(diào)用socket()創(chuàng)建流式套接字,然后調(diào)用connect()向服務進程發(fā)出連接請求;

(3)當連接請求到來后,服務進程被喚醒,并生成一個新的流式套接字。同時用新套接字同客戶進程的套接字建立連接,而服務進程最早生成的套接字則繼續(xù)用于監(jiān)聽網(wǎng)絡上的服務請求;

(4)服務進程和客戶進程通過調(diào)用send()和recv()來交換數(shù)據(jù),服務器可向客戶端傳送所收集的數(shù)據(jù)。客戶端則向服務器反饋控制信息和參數(shù)調(diào)整信息; 

(5)服務進程或客戶進程可通過調(diào)用close()來撤消套接字并中斷連接。

服務器端的程序通過交叉編譯環(huán)境編譯后。可通過NFS(網(wǎng)絡文件系統(tǒng))下載到開發(fā)板中,然后手動加入到rc引導文件中。即可實現(xiàn)開機自動運行

3 結束語

基于ARM和CLinux嵌入式系統(tǒng)代表了目前嵌入式系統(tǒng)的發(fā)展方向。嵌入式系統(tǒng)與網(wǎng)絡技術和控制技術相結合.是嵌入式系統(tǒng)發(fā)展的必然趨勢。本文討論了基于ARM+uCLinux平臺的網(wǎng)絡控制" title="網(wǎng)絡控制">網(wǎng)絡控制系統(tǒng)設計與實現(xiàn)方法。并對該平臺下應用TCP/IP協(xié)議進行網(wǎng)絡通信進行了探討。該方法對于自動化樓宇、工業(yè)控制、智能家居等方面都有一定的借鑒意義。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧美一区二区视频| 久久久久国产精品www| 亚洲影视综合| 亚洲美女尤物影院| 伊人婷婷久久| 国内偷自视频区视频综合| 国产精品一区二区三区四区| 欧美日韩一区综合| 欧美激情亚洲| 欧美成年人在线观看| 麻豆精品视频在线观看视频| 久久视频在线免费观看| 久久精品亚洲精品| 午夜性色一区二区三区免费视频| 亚洲少妇自拍| 亚洲在线观看免费视频| 亚洲一区精品视频| 亚洲专区一区| 西瓜成人精品人成网站| 午夜一区二区三视频在线观看| 亚洲免费一在线| 午夜精品亚洲一区二区三区嫩草| 亚洲欧美清纯在线制服| 性色av一区二区怡红| 欧美亚洲免费电影| 久久成人在线| 久久男人av资源网站| 老司机aⅴ在线精品导航| 老司机67194精品线观看| 欧美不卡视频一区发布| 欧美激情视频一区二区三区在线播放 | 久久人人97超碰精品888| 午夜视频一区在线观看| 久久久999精品视频| 久久免费99精品久久久久久| 欧美 日韩 国产一区二区在线视频| 你懂的亚洲视频| 欧美精品在线网站| 国产精品国产三级国产aⅴ无密码| 国产精品久久久久77777| 国产精品香蕉在线观看| 国产视频一区在线观看一区免费| 国内久久婷婷综合| 亚洲全部视频| 亚洲午夜免费福利视频| 欧美伊人精品成人久久综合97| 亚洲国产导航| 一区二区三区国产| 欧美在线国产精品| 欧美xart系列在线观看| 国产精品福利久久久| 国产主播一区二区三区四区| 亚洲激情综合| 亚洲一二三区在线| 久久精品视频播放| 一本大道久久a久久精二百| 亚洲综合三区| 久久永久免费| 欧美午夜免费| 韩日欧美一区二区三区| 日韩系列欧美系列| 欧美在线观看视频在线| 夜夜嗨av一区二区三区四季av | 国产亚洲欧美一区在线观看| 亚洲国产三级网| 亚洲综合日韩| 亚洲免费电影在线| 香蕉乱码成人久久天堂爱免费| 久久这里只有精品视频首页| 欧美性事在线| 在线观看成人av| 亚洲视频一区| 亚洲精品国精品久久99热一| 亚洲欧洲av一区二区| 欧美va亚洲va日韩∨a综合色| 国产精品久久久久久久久久直播 | 欧美网站在线观看| 尤物精品在线| 亚洲专区一区| av成人激情| 麻豆91精品91久久久的内涵| 国产精品国产三级国产aⅴ无密码| 欧美中文字幕在线视频| 欧美激情一区二区三区蜜桃视频| 国产欧美日韩精品一区| 亚洲美女av电影| 久久精品一二三| 亚洲欧美中日韩| 欧美日本高清一区| 韩国美女久久| 亚洲欧美日韩另类精品一区二区三区| 亚洲精品日韩精品| 久久精品视频99| 国产精品黄色| 日韩亚洲欧美在线观看| 亚洲激情另类| 性色一区二区三区| 国产精品久久久久久久久久妞妞| 最新69国产成人精品视频免费| 欧美在线高清| 久久av一区二区| 国产精品久久久免费 | 在线日韩成人| 久久国产精品99久久久久久老狼| 亚洲免费视频中文字幕| 欧美日韩精品二区第二页| 亚洲大胆av| 久久国产手机看片| 久久se精品一区二区| 国产精品www994| 99国产精品久久| 日韩午夜电影av| 欧美成人亚洲| 亚洲高清不卡一区| 久久精品一二三区| 久久免费视频这里只有精品| 国产主播一区二区三区四区| 欧美一区午夜精品| 久久久久久久综合狠狠综合| 国产美女诱惑一区二区| 亚洲专区一区| 欧美一区二区在线免费观看| 国产精品综合av一区二区国产馆| 亚洲永久精品国产| 亚洲欧美日韩精品久久亚洲区| 国产精品豆花视频| 亚洲小视频在线观看| 亚洲一区免费| 国产精品久久久久影院色老大| 亚洲一区二区精品在线| 亚洲欧美一区二区三区极速播放 | 激情欧美日韩一区| 久久精品一区二区三区中文字幕| 久久色在线播放| 136国产福利精品导航网址| 亚洲国产一区二区三区在线播| 蜜臀91精品一区二区三区| 亚洲男同1069视频| 久久九九国产精品| 国产精品乱码一区二三区小蝌蚪 | 欧美亚洲视频在线看网址| 国产精品一区二区你懂的| 亚洲永久免费观看| 久久精品视频免费观看| 国内外成人在线| 亚洲精品一区二区网址| 欧美人成网站| 亚洲无亚洲人成网站77777 | 久久久综合精品| 伊人久久男人天堂| 日韩午夜电影| 国产精品久久久对白| 亚洲欧美综合国产精品一区| 久久精品国产2020观看福利| 伊人成人在线视频| 99亚洲一区二区| 国产精品美女www爽爽爽| 午夜精品国产| 欧美成黄导航| 中文网丁香综合网| 久久精品国产久精国产思思| 伊人成年综合电影网| 在线视频亚洲欧美| 国产农村妇女精品一二区| 亚洲观看高清完整版在线观看| 欧美激情久久久久| 亚洲综合色丁香婷婷六月图片| 久久免费视频一区| 9人人澡人人爽人人精品| 欧美一区二区在线免费观看 | 亚洲国产日韩欧美综合久久| 亚洲一区三区在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲免费视频网站| 毛片一区二区三区| 一区二区三区国产在线观看| 久久免费视频在线| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产一区二区高清不卡| 999在线观看精品免费不卡网站| 国产精品美女在线| 亚洲福利一区| 国产精品久久久久久户外露出| 亚洲电影第三页| 国产精品剧情在线亚洲| 亚洲区国产区| 国产欧美在线看| 99re热精品| 韩国一区二区在线观看| 亚洲永久免费观看| 亚洲激情国产精品| 久久精品国产第一区二区三区| 久久经典综合| 亚洲人成人一区二区在线观看| 久久国产精品99国产| 亚洲精品女av网站| 久久午夜电影网| 亚洲欧美日本在线| 欧美日韩一区二区三| 亚洲国产精品成人|