新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM開發(fā)板+uCLinux的網(wǎng)絡(luò)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        基于ARM開發(fā)板+uCLinux的網(wǎng)絡(luò)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        作者: 時(shí)間:2012-11-16 來源:網(wǎng)絡(luò) 收藏

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

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

          其中,fd是用程序打開設(shè)備時(shí),使用open函數(shù)返回的文件標(biāo)示符;cmd是用戶程序?qū)υO(shè)備的控制命令;至于后面的省略號(hào),則是一些補(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);

         ?。O(shè)置管角為輸入狀態(tài);

          ioctl(fd2,GPIO_READ_PIN,devicel_state);

         ?。x取設(shè)備狀態(tài)管角;

          ioctl(fd1,GPIO_CLR_PIN,device);

         ?。宄O(shè)備管角控制信號(hào);

          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,并通過對(duì)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所示。現(xiàn)具體說明如下:

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

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

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

          (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ā)板中,然后手動(dòng)加入到rc引導(dǎo)文件中。即可實(shí)現(xiàn)開機(jī)自動(dòng)運(yùn)行。

          3 結(jié)束語

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

        [1].7TDMIdatasheethttp://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
        [2].LPC2210datasheethttp://www.dzsc.com/datasheet/LPC2210_454566.html.
        [3].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.


        上一頁 1 2 3 下一頁

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 无锡市| 房产| 广丰县| 临颍县| 大英县| 彭泽县| 凯里市| 闸北区| 高密市| 河曲县| 苏州市| 龙江县| 贵溪市| 阿拉善右旗| 南江县| 云龙县| 淳化县| 达日县| 金沙县| 崇信县| 平果县| 双鸭山市| 四平市| 凌源市| 祁连县| 贵港市| 沧州市| 凤庆县| 东海县| 兴义市| 新绛县| 乡城县| 大名县| 阳信县| 蓬安县| 贡山| 耿马| 西丰县| 克山县| 东辽县| 凌海市|