《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM+uCLinux的網(wǎng)絡(luò)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于ARM+uCLinux的網(wǎng)絡(luò)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
摘要: 隨著網(wǎng)絡(luò)和通信技術(shù)的發(fā)展,嵌入式系統(tǒng)現(xiàn)已進(jìn)入高速發(fā)展階段。并在社會各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。本文介紹了一種采用ARM+uCLinux作為開發(fā)平臺。實(shí)現(xiàn)基于TCP/IP的遠(yuǎn)程系統(tǒng)監(jiān)控.從而取代傳統(tǒng)單片機(jī)來實(shí)現(xiàn)數(shù)據(jù)采集、預(yù)處理和通信功能;并依靠互聯(lián)網(wǎng)將數(shù)據(jù)向上位機(jī)傳送,同時(shí)支持遠(yuǎn)端客戶對設(shè)備進(jìn)行遠(yuǎn)程控制,從而實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能的具體方法。
關(guān)鍵詞: ARM uClinux 網(wǎng)絡(luò)控制
Abstract:
Key words :

  隨著網(wǎng)絡(luò)和通信技術(shù)的發(fā)展,嵌入式系統(tǒng)現(xiàn)已進(jìn)入高速發(fā)展階段。并在社會各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。本文介紹了一種采用ARM+uCLinux" target="_blank">uCLinux作為開發(fā)平臺。實(shí)現(xiàn)基于TCP/IP的遠(yuǎn)程系統(tǒng)監(jiān)控.從而取代傳統(tǒng)單片機(jī)來實(shí)現(xiàn)數(shù)據(jù)采集、預(yù)處理和通信功能;并依靠互聯(lián)網(wǎng)將數(shù)據(jù)向上位機(jī)傳送,同時(shí)支持遠(yuǎn)端客戶對設(shè)備進(jìn)行遠(yuǎn)程控制,從而實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能的具體方法。
  
  1 系統(tǒng)平臺的構(gòu)建
  
  本系統(tǒng)由嵌入式平臺服務(wù)器、前端控制器、前端傳感器、客戶端和配置PC組成。開發(fā)時(shí)可通過配置PC來下載系統(tǒng)和應(yīng)用軟件。嵌入式系統(tǒng)平臺能夠收集現(xiàn)場數(shù)據(jù)。并傳送到遠(yuǎn)端客戶機(jī),之后由遠(yuǎn)端客戶機(jī)對數(shù)據(jù)進(jìn)行處理,接著發(fā)送控制信號給系統(tǒng)服務(wù)器,以便通過前端控制器對設(shè)備進(jìn)行遠(yuǎn)程控制。其系統(tǒng)結(jié)構(gòu)如圖1所示。

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

  1.2 uCLinux操作系統(tǒng)
  
  操作系統(tǒng)是嵌入式設(shè)備軟件的核心部分。本系統(tǒng)采用uCLinux系統(tǒng)平臺來完成對硬件系統(tǒng)的管理和維護(hù)。uCLinux是廣泛應(yīng)用于微控制領(lǐng)域的一種嵌入式Linux操作系統(tǒng)。它通過對標(biāo)準(zhǔn)Linux內(nèi)核的裁減,可去除虛擬內(nèi)存管理部分代碼,以對內(nèi)存分配進(jìn)行優(yōu)化。從而達(dá)到提高系統(tǒng)運(yùn)行效率的目的。uCLinux則可經(jīng)過各方面的小型化改造形成一個(gè)高度優(yōu)化、代碼緊湊的嵌入式Linux,它保留了Linux的大多數(shù)優(yōu)點(diǎn),包括穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡(luò)功能、完備的文件系統(tǒng)支持、豐富的API等。
  
  1.3 uCLinux在ARM平臺上的移植
  
  若將uCLinux移植到SmartARM2200上,需要進(jìn)行以下四個(gè)步驟:
  (1)下載源碼,建立交叉編譯環(huán)境
  
  uCLinux是自由軟件(完全開放代碼)。用戶可以直接從http://www.uclinux.org/pub/uclinux處下載源代碼并安裝到Red Hat9.0系統(tǒng)下,以便正常在Red Hat9.0建立起交叉編譯環(huán)境。
  
  (2)配置和編譯內(nèi)核
  
  進(jìn)入到安裝好的uCLinux目錄,依次執(zhí)行下面的命令:
  
  make menuconfig;進(jìn)入配置菜單后,選擇Vendor/Product(廠商/產(chǎn)品)下的PHILIPS/lpc2200;用Kernel Version(內(nèi)核版本)選擇Linux-2.4.x,Libc Version(函數(shù)庫版本)選擇uClibc:其余內(nèi)核和應(yīng)用程序選項(xiàng)可根據(jù)情況選擇。
  make dep
  make clean
  make lib_only
  make user_only
  make romfs
  make image
  make
  
  編譯結(jié)束后會在uCLinux安裝目錄下生成romfs.img文件,利用它可以制作RAM Disk,然后在linux-2.4.X目錄下生成elf格式的Linux內(nèi)核文件,并以下列方式將其轉(zhuǎn)換成bin格式:
#arm-elf-objcopy-O binary linux linux.bin從而生成下載用的uCLinux內(nèi)核鏡像文件linux.bin。
  
  (3)制作Ram Disk掛栽根文件系統(tǒng)
  
  首先創(chuàng)建一個(gè)512 kB的虛擬磁盤,并將虛擬磁盤文件格式轉(zhuǎn)化成ext2格式:
dd if/dev/zero of=initrd.img bs=1024 count=512
mkfs.ext2-c init.img
  
  然后將init.img和romfs.img加載到主機(jī)文件系統(tǒng)上,并在RAM中建立需要的目錄:/bin,/dev,/etc,/var,進(jìn)而拷貝ROM中的文件到ram目錄中。
  
  下來在RAM盤dev目錄下創(chuàng)建設(shè)備節(jié)點(diǎn):

  #mknod ram/dev/ttyS0 c 4 64
  #mknod ram/dev/console c 5 1
  
  后卸載init.img和romfs.img,并應(yīng)確保init.img修改已保存,至此,RAM DISK便創(chuàng)建完成。
  
  (4)下載內(nèi)核和文件系統(tǒng)
  
  正確設(shè)置主板啟動選擇跳線。主板加電后,在超級終端上便可以看到BootLoader引導(dǎo)信息,可選擇默認(rèn)的FTP連接,并使用BootLoader默認(rèn)的IP進(jìn)行下載,然后啟動gftp,輸入主板默認(rèn)的IP和端口號。這樣,linux主機(jī)就可以和主機(jī)連接,最后選擇需要下載的Linux內(nèi)核文件和RAM盤及相關(guān)的配置文件即可。
  
  2 監(jiān)控系統(tǒng)功能的實(shí)現(xiàn)
  
  監(jiān)控系統(tǒng)主要由3個(gè)部分組成:數(shù)據(jù)采集部分,設(shè)備控制部分,數(shù)據(jù)傳輸部分。數(shù)據(jù)采集部分可對傳感器信號進(jìn)行A/D轉(zhuǎn)換,并對采集到的數(shù)據(jù)進(jìn)行簡單的處理,同時(shí)提供調(diào)整運(yùn)行參數(shù)的接口。數(shù)據(jù)傳輸部分可將采集的數(shù)據(jù)傳送到遠(yuǎn)端的主機(jī),并接收遠(yuǎn)端主機(jī)的控制信息。遠(yuǎn)端主機(jī)則對傳輸過來的遠(yuǎn)程數(shù)據(jù)進(jìn)行處理、存儲和顯示,并可以修改數(shù)據(jù)采集部分的參數(shù)以控制數(shù)據(jù)采集,同時(shí)依據(jù)采集到的數(shù)據(jù)對設(shè)備發(fā)出操作指令,或?qū)h(yuǎn)端的設(shè)備進(jìn)行控制,從而實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能。
  
  2.1 數(shù)據(jù)采集
  
  使用A/D轉(zhuǎn)換設(shè)備前,首先要創(chuàng)建設(shè)備節(jié)點(diǎn),并加載ADC驅(qū)動,然后通過open()和close()將其打開和關(guān)閉.主要的數(shù)據(jù)采集程序如下:
  ……
  ioctl(fd,ADC_SET_CLKDIV,(Fpclk+fadc1)/fadc-1);//設(shè)置A/D轉(zhuǎn)換速度;
  ioctl(fd,ADC_SET_BITS,10);//設(shè)置A/D轉(zhuǎn)換精度;
  while(1) {
  ad_data=0;
  read(fd,&ad_data,sizeof(ad_data));//讀取A/D轉(zhuǎn)換的值;
  ……
  
  2.2 GPIO設(shè)備控制
  
  同A/D轉(zhuǎn)換設(shè)備類似,使用GPIO也需先創(chuàng)建設(shè)備節(jié)點(diǎn)并加載驅(qū)動。對GPIO操作前,應(yīng)通過open()打開,使用后應(yīng)通過close()關(guān)閉。
  
  首先。選定開發(fā)板上沒有使用過的GPIO端口,設(shè)定其輸入/輸入狀態(tài),然后根據(jù)客戶端返回的信息對端口進(jìn)行操作,輸出0/1的電平,以使其外部連接的繼電器動作。從而控制設(shè)備的運(yùn)轉(zhuǎn)。程序主要通過函數(shù)ioctl來實(shí)現(xiàn)。ioctl是設(shè)備驅(qū)動程序中對設(shè)備的I/O通道進(jìn)行管理的函數(shù),通過它可對設(shè)備的一些特性進(jìn)行控制.其函數(shù)原形為:
int ioctl(int fd,ind cmd,…);
  
  其中,fd是用程序打開設(shè)備時(shí),使用open函數(shù)返回的文件標(biāo)示符;cmd是用戶程序?qū)υO(shè)備的控制命令;至于后面的省略號,則是一些補(bǔ)充參數(shù)(一般最多一個(gè),有或沒有是和cmd的意義相關(guān)的)。在這里,可通過如下一組函數(shù)來實(shí)現(xiàn):

  ioctl(fd1,GPIO_SET_PIN_IN,devicel);
 ?。O(shè)置管角為輸出狀態(tài);
  ioctl( fd2, GPIO_SET_PIN_OUT, devicel_state);
  //設(shè)置管角為輸入狀態(tài);
  ioctl(fd2,GPIO_READ_PIN,&devicel_state);
 ?。x取設(shè)備狀態(tài)管角;
  ioctl(fd1,GPIO_CLR_PIN,device);
  //清除設(shè)備管角控制信號;
  
  2.3 網(wǎng)絡(luò)通信程序
  
  網(wǎng)絡(luò)通信程序可使用TCP/IP協(xié)議下標(biāo)準(zhǔn)的socket套接字編寫。套接字(socket)是網(wǎng)絡(luò)通信的基本操作單元。它提供了不同主機(jī)間進(jìn)程雙向通信的端點(diǎn)。這些進(jìn)程在通信前應(yīng)各自建立一個(gè)socket,并通過對socket的讀/寫操作實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。常用的套接字有兩種:流式套接字(Stream Socket)和數(shù)據(jù)報(bào)套接字(Datagram Socket)。其中,流式套接字是可靠的面向連接的通信數(shù)據(jù)流,是無錯(cuò)誤的傳輸;而數(shù)據(jù)報(bào)套接字則使用UDP來傳送數(shù)據(jù)包,數(shù)據(jù)包的順序是沒有保障的。本系統(tǒng)采用流式套接字進(jìn)行程序設(shè)計(jì)。
  
  流式套接字的服務(wù)進(jìn)程和客戶進(jìn)程建立連接及通信的程序流程如圖3所示?,F(xiàn)具體說明如下:

  (1)服務(wù)進(jìn)程首先調(diào)用socket()創(chuàng)建一個(gè)流式套接字,并調(diào)用bind()將服務(wù)器地址捆扎在該套接字上,接著調(diào)用listen()監(jiān)聽連接請求,隨后調(diào)用accept()做好與客戶進(jìn)程建立連接的準(zhǔn)備。無連接請求時(shí),服務(wù)進(jìn)程被阻塞;
  
  (2)客戶進(jìn)程先調(diào)用socket()創(chuàng)建流式套接字,然后調(diào)用connect()向服務(wù)進(jìn)程發(fā)出連接請求;
  
  (3)當(dāng)連接請求到來后,服務(wù)進(jìn)程被喚醒,并生成一個(gè)新的流式套接字。同時(shí)用新套接字同客戶進(jìn)程的套接字建立連接,而服務(wù)進(jìn)程最早生成的套接字則繼續(xù)用于監(jiān)聽網(wǎng)絡(luò)上的服務(wù)請求;
  
  (4)服務(wù)進(jìn)程和客戶進(jìn)程通過調(diào)用send()和recv()來交換數(shù)據(jù),服務(wù)器可向客戶端傳送所收集的數(shù)據(jù)??蛻舳藙t向服務(wù)器反饋控制信息和參數(shù)調(diào)整信息;
  
  (5)服務(wù)進(jìn)程或客戶進(jìn)程可通過調(diào)用close()來撤消套接字并中斷連接。
  
  服務(wù)器端的程序通過交叉編譯環(huán)境編譯后。可通過NFS(網(wǎng)絡(luò)文件系統(tǒng))下載到開發(fā)板中,然后手動加入到rc引導(dǎo)文件中。即可實(shí)現(xiàn)開機(jī)自動運(yùn)行。
  
  結(jié)束語
  
  基于ARM和uCLinux嵌入式系統(tǒng)代表了目前嵌入式系統(tǒng)的發(fā)展方向。嵌入式系統(tǒng)與網(wǎng)絡(luò)技術(shù)和控制技術(shù)相結(jié)合.是嵌入式系統(tǒng)發(fā)展的必然趨勢。本文討論了基于ARM+uCLinux平臺的網(wǎng)絡(luò)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)方法。并對該平臺下應(yīng)用TCP/IP協(xié)議進(jìn)行網(wǎng)絡(luò)通信進(jìn)行了探討。該方法對于自動化樓宇、工業(yè)控制、智能家居等方面都有一定的借鑒意義。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区中文| 亚洲国产精品成人一区二区| 国产精品有限公司| 欧美日韩精品久久| 欧美成人精品在线| 久久久精品午夜少妇| 亚洲女爱视频在线| 一区二区三区成人| 一区二区三区免费网站| 亚洲国产欧美日韩精品| 久久精品国产综合| 欧美一区二区高清| 午夜精品视频在线观看一区二区| 艳妇臀荡乳欲伦亚洲一区| 亚洲精品一区在线观看| 亚洲精品1区2区| 91久久国产综合久久| 亚洲欧美日韩精品综合在线观看| 亚洲国产小视频| 欧美在线视频a| 欧美一级在线播放| 羞羞色国产精品| 欧美一区二区精美| 久久精品成人一区二区三区蜜臀 | 亚洲精品综合精品自拍| 一本色道久久综合亚洲91| 亚洲黄色性网站| 亚洲国产精品成人精品| 亚洲福利国产| 亚洲国产小视频| 亚洲三级视频| 亚洲精品综合精品自拍| 亚洲国产日韩精品| 亚洲精品视频在线| 日韩一本二本av| 99精品国产一区二区青青牛奶| 日韩一级精品视频在线观看| 99pao成人国产永久免费视频| 日韩亚洲一区在线播放| 亚洲网站在线看| 性欧美精品高清| 亚洲国产免费| 中文国产一区| 午夜一区在线| 麻豆精品精华液| 欧美人与禽性xxxxx杂性| 欧美日韩精品在线播放| 国产精品二区三区四区| 国产欧美精品va在线观看| 国产一区二区三区四区三区四 | 国产一区二区三区久久悠悠色av| 一区二区视频在线观看| 亚洲承认在线| avtt综合网| 性高湖久久久久久久久| 亚洲高清激情| 在线一区二区三区做爰视频网站| 亚洲欧美日韩国产另类专区| 欧美一区影院| 欧美二区在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美精品在线一区二区| 国产精品成人一区| 国产一区二区三区高清播放| 亚洲黄网站黄| 亚洲在线观看视频| 最新国产成人av网站网址麻豆 | 一区二区三区自拍| 9l国产精品久久久久麻豆| 午夜精品成人在线视频| 亚洲精品黄色| 午夜欧美精品| 男女视频一区二区| 国产精品成人免费| 亚洲成人自拍视频| 亚洲一二三级电影| 最新亚洲一区| 欧美有码在线观看视频| 久久精视频免费在线久久完整在线看| 亚洲欧美日韩中文在线制服| 午夜精品福利电影| 牛人盗摄一区二区三区视频| 欧美少妇一区| 在线观看不卡av| 亚洲专区一区二区三区| 亚洲日韩欧美视频一区| 午夜精品久久久久久久久| 欧美顶级大胆免费视频| 国产日韩欧美中文在线播放| 日韩视频一区二区三区在线播放免费观看 | 久久夜精品va视频免费观看| 欧美无砖砖区免费| 亚洲国产精品ⅴa在线观看| 亚洲欧美日韩国产| 一区二区高清视频在线观看| 久久男女视频| 国产精品综合久久久| 日韩视频在线免费观看| 91久久国产综合久久蜜月精品 | 国产精品美腿一区在线看| 亚洲国产精品福利| 久久精品二区三区| 午夜日韩在线观看| 欧美日韩另类丝袜其他| 伊人久久大香线蕉综合热线| 欧美一级一区| 先锋资源久久| 欧美色欧美亚洲另类七区| 亚洲大片一区二区三区| 欧美在线观看一二区| 午夜在线视频一区二区区别| 欧美日韩亚洲一区二| 在线日韩成人| 久久国内精品视频| 欧美中文字幕不卡| 国产精品久久久久久超碰| 亚洲精品国精品久久99热| 亚洲欧洲一区二区在线播放| 久久成人国产精品| 国产麻豆精品久久一二三| 一区二区三区日韩| 亚洲私人影院| 欧美日精品一区视频| 亚洲人妖在线| 一本色道**综合亚洲精品蜜桃冫 | 久久夜色精品国产亚洲aⅴ| 国产精品私房写真福利视频 | 久久成人免费| 国产日韩成人精品| 亚洲欧美精品在线观看| 午夜日韩在线| 国产日韩欧美精品在线| 亚洲免费一在线| 欧美一区二区三区在线看| 国产精品久久久久久久久免费 | 夜夜精品视频一区二区| 夜夜嗨av色一区二区不卡| 欧美韩日一区二区| 亚洲精品色婷婷福利天堂| 99视频有精品| 欧美视频在线观看视频极品| 99热免费精品| 亚洲欧美在线观看| 国产日韩精品视频一区二区三区| 亚洲女人天堂成人av在线| 欧美一区二区三区在| 国产中文一区二区| 亚洲国产精品一区二区三区| 每日更新成人在线视频| 亚洲欧洲日产国产网站| 亚洲一区二区三区在线看 | 国产精品国产三级国产aⅴ浪潮| 中日韩高清电影网| 欧美在线视频在线播放完整版免费观看 | 亚洲欧美国产高清| 国产日韩高清一区二区三区在线| 欧美在线日韩在线| 欧美gay视频| 99re热精品| 欧美亚洲免费在线| 激情综合五月天| 亚洲精品在线观看视频| 欧美日韩亚洲不卡| 午夜精彩国产免费不卡不顿大片| 久久久久免费| 亚洲人成在线观看网站高清| 国产精品99久久久久久人 | 亚洲人屁股眼子交8| 在线亚洲观看| 性欧美办公室18xxxxhd| 国产尤物精品| 日韩亚洲欧美在线观看| 欧美日韩在线一区二区| 亚洲欧美日韩区| 毛片一区二区| 在线中文字幕不卡| 久久久久久国产精品mv| 亚洲区一区二| 欧美一级片久久久久久久| 伊人久久综合97精品| 这里只有精品在线播放| 国产情侣久久| 亚洲人成久久| 国产精品美女久久| 亚洲国产欧美一区二区三区同亚洲| 欧美区在线播放| 性久久久久久久| 欧美日韩成人| 亚洲国产91| 国产精品丝袜91| 99精品欧美| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲精品护士| 国产亚洲精品一区二555| 日韩视频免费在线| 国产欧美一区二区三区久久| 日韩视频在线你懂得| 欧美福利视频一区| 亚洲在线观看免费视频| 欧美一级艳片视频免费观看|