《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 面向物聯(lián)網(wǎng)應(yīng)用的UART-WIFI網(wǎng)關(guān)設(shè)計(jì)
面向物聯(lián)網(wǎng)應(yīng)用的UART-WIFI網(wǎng)關(guān)設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2013年第8期
王希朝1,張 毅1,程 鵬2,馬洪亮2,吳 斌2
(1.重慶郵電大學(xué),重慶400065; 2.中國(guó)科學(xué)院微電子研究所,北京100029)
摘要: 以飛思卡爾MCIMX27為控制器,設(shè)計(jì)了一款基于WIFI的串口數(shù)據(jù)無(wú)線收發(fā)模塊,實(shí)現(xiàn)了通過串口配置模塊參數(shù)以及用戶串口數(shù)據(jù)的網(wǎng)絡(luò)化。通過UART-WIFI模塊,傳統(tǒng)的串口設(shè)備也能輕松接入無(wú)線網(wǎng)絡(luò)。著重介紹了系統(tǒng)軟件設(shè)計(jì)整體架構(gòu)、自定義協(xié)議以及實(shí)現(xiàn)中需要解決的關(guān)鍵問題。實(shí)驗(yàn)結(jié)果表明模塊無(wú)線通信性能好、穩(wěn)定性強(qiáng)。
Abstract:
Key words :

摘  要: 以飛思卡爾MCIMX27為控制器,設(shè)計(jì)了一款基于WIFI的串口數(shù)據(jù)無(wú)線收發(fā)模塊,實(shí)現(xiàn)了通過串口配置模塊參數(shù)以及用戶串口數(shù)據(jù)的網(wǎng)絡(luò)化。通過UART-WIFI模塊,傳統(tǒng)的串口設(shè)備也能輕松接入無(wú)線網(wǎng)絡(luò)。著重介紹了系統(tǒng)軟件設(shè)計(jì)整體架構(gòu)、自定義協(xié)議以及實(shí)現(xiàn)中需要解決的關(guān)鍵問題。實(shí)驗(yàn)結(jié)果表明模塊無(wú)線通信性能好、穩(wěn)定性強(qiáng)。
關(guān)鍵詞: 物聯(lián)網(wǎng)網(wǎng)關(guān);WIFI;UART

    物聯(lián)網(wǎng)作為互聯(lián)網(wǎng)的延伸和擴(kuò)展,使得通信的主體不再是人與人之間的通信,還有人與物、物與物之間的通信。隨著物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展,各種老式設(shè)備也有了接入網(wǎng)絡(luò)的需求,在工業(yè)控制和通信設(shè)備中,很多是符合RS232標(biāo)準(zhǔn)的串口設(shè)備,通常很難在作業(yè)現(xiàn)場(chǎng)鋪設(shè)有線網(wǎng)絡(luò)。如何保證在原來(lái)設(shè)備不做太大改動(dòng)的基礎(chǔ)上實(shí)現(xiàn)這些設(shè)備的聯(lián)網(wǎng),便成了一個(gè)首先需要解決的問題。
    面向物聯(lián)網(wǎng)應(yīng)用的UART-WIFI網(wǎng)關(guān),基于目前成熟的WIFI無(wú)線傳輸解決方案實(shí)現(xiàn)串口數(shù)據(jù)的網(wǎng)絡(luò)化傳輸。本文設(shè)計(jì)的方案,使得只要具有UART接口的設(shè)備即可接入網(wǎng)絡(luò),提高了設(shè)備的智能化水平,簡(jiǎn)化了設(shè)備組網(wǎng)流程[1],具有很重要的現(xiàn)實(shí)意義和使用價(jià)值。
1 系統(tǒng)整體架構(gòu)
    UART-WIFI網(wǎng)關(guān)在用戶側(cè)留有標(biāo)準(zhǔn)RS232接口,使得設(shè)備只要具有串口就可以接入網(wǎng)絡(luò),網(wǎng)關(guān)的應(yīng)用場(chǎng)景如圖1所示。

    網(wǎng)關(guān)從功能上分為串口數(shù)據(jù)收發(fā)模塊、網(wǎng)絡(luò)數(shù)據(jù)收發(fā)模塊和用戶數(shù)據(jù)處理模塊等。依據(jù)數(shù)據(jù)流向,系統(tǒng)模塊組成原理框圖如圖2所示。系統(tǒng)通過串口配置網(wǎng)卡參數(shù),實(shí)現(xiàn)串口數(shù)據(jù)的無(wú)線透明傳輸。
    串口數(shù)據(jù)收發(fā)模塊負(fù)責(zé)用戶主機(jī)與網(wǎng)卡之間的數(shù)據(jù)交互;無(wú)線網(wǎng)卡模塊負(fù)責(zé)收發(fā)網(wǎng)絡(luò)數(shù)據(jù),進(jìn)行802.11與802.3協(xié)議之間的相互轉(zhuǎn)換并交由操作系統(tǒng)處理;用戶數(shù)據(jù)處理模塊負(fù)責(zé)識(shí)別主機(jī)側(cè)用戶接口數(shù)據(jù),用于配置網(wǎng)卡參數(shù)或進(jìn)行數(shù)據(jù)透明傳輸。

 

 

2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)硬件原理框圖

    硬件系統(tǒng)主要由處理器、無(wú)線網(wǎng)卡、標(biāo)準(zhǔn)RS232收發(fā)器模塊、外部存儲(chǔ)器以及系統(tǒng)電源組成。系統(tǒng)硬件原理框圖如圖3所示。

2.2 系統(tǒng)硬件設(shè)計(jì)及選型
    系統(tǒng)原型開發(fā)選用飛思卡爾半導(dǎo)體面向多媒體應(yīng)用的MCIMX27處理器,該處理器采用ARM926-EJS內(nèi)核,工作頻率可達(dá)400 MHz,其內(nèi)建的MMU功能,能很方便地實(shí)現(xiàn)嵌入式Linux的移植。
    系統(tǒng)存儲(chǔ)系統(tǒng)由兩片DDR SDRAM 和一片NAND Flash構(gòu)成。處理器內(nèi)嵌的SDIO主控制器提供4 bit模式下最高100 Mb/s的數(shù)據(jù)速率。無(wú)線網(wǎng)絡(luò)收發(fā)模塊選用Marvell的WLAN片上系統(tǒng)芯片88W8686設(shè)計(jì),芯片集成IEEE802.11a/g/b MAC/Baseband/RF等功能模塊,支持典型的WLAN數(shù)據(jù)速率;支持SDIO接口的主機(jī)接口單元(HUI),允許主機(jī)控制器使用SDIO總線協(xié)議與WLAN設(shè)備進(jìn)行通信。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)軟件整體架構(gòu)

    在Linux操作系統(tǒng)下通過對(duì)各個(gè)功能模塊的劃分實(shí)現(xiàn)了對(duì)WLAN的完美支持,圖4所示為L(zhǎng)inux下典型的WLAN層次模型[2]。

    硬件層是軟件運(yùn)行的承載體和通信的物理實(shí)現(xiàn)層;固件(Firmware)層向驅(qū)動(dòng)程序屏蔽具體的物理細(xì)節(jié),提供驅(qū)動(dòng)訪問硬件的接口;驅(qū)動(dòng)程序向WT(Wireless-Tools)或者其他配置工具提供訪問底層的接口;配置程序?qū)酉蛏蠈犹峁┮粋€(gè)統(tǒng)一的Linux用戶接口;用戶使用相關(guān)配置工具來(lái)訪問和配置不同的無(wú)線網(wǎng)卡。本設(shè)計(jì)軟件整體架構(gòu)參照Linux操作系統(tǒng)下典型的WLAN層次模型來(lái)設(shè)計(jì),系統(tǒng)軟件整體架構(gòu)如圖5所示。

3.2 Linux操作系統(tǒng)
    嵌入式Linux以其內(nèi)核高效穩(wěn)定、網(wǎng)絡(luò)功能強(qiáng)大等特性,成為嵌入式系統(tǒng)領(lǐng)域中的佼佼者[3]。本設(shè)計(jì)選用成熟的Linux-2.6.19.2操作系統(tǒng)內(nèi)核,編譯器使用專用arm-926ejs-linux-gcc交叉編譯器。
3.3 WT工具
    Wireless Tools for Linux是一個(gè)Linux命令行工具包,用來(lái)設(shè)置支持Linux Wireless Extension的無(wú)線設(shè)備。Wireless-Extension(WE)是一組通用的API,能在用戶空間對(duì)通用Wireless LANs進(jìn)行配置和統(tǒng)計(jì)。
    WT(Wireless-Tools)就是用來(lái)操作Wireless-Extensions的工具集合,支持所有Wireless-Extension,它主要包括iwconfig、iwlist和iwpriv等工具。
3.4 網(wǎng)卡驅(qū)動(dòng)和固件
    按照主機(jī)驅(qū)動(dòng)與設(shè)備驅(qū)動(dòng)分離設(shè)計(jì)的思想,一個(gè)標(biāo)準(zhǔn)的無(wú)線收發(fā)系統(tǒng)軟件包含主機(jī)驅(qū)動(dòng)和WLAN固件兩部分。
    WLAN固件主要實(shí)現(xiàn)802.11和802.3協(xié)議幀格式之間的轉(zhuǎn)換。在系統(tǒng)接收數(shù)據(jù)時(shí),網(wǎng)卡接收符合標(biāo)準(zhǔn)802.11協(xié)議的數(shù)據(jù),由WLAN固件轉(zhuǎn)換成符合802.3協(xié)議的幀格式,通過SDIO接口送達(dá)主機(jī)驅(qū)動(dòng);在發(fā)送串口用戶數(shù)據(jù)時(shí),應(yīng)用層程序?qū)⒎?02.3協(xié)議的數(shù)據(jù)通過SDIO接口發(fā)送到WLAN固件,固件將其轉(zhuǎn)換為802.11協(xié)議數(shù)據(jù)幀,通過無(wú)線方式發(fā)往服務(wù)器端。
    主機(jī)驅(qū)動(dòng)模塊主要包含三部分:Ethernet Driver、802.11Extensions和Hardware Interface Driver。Ethernet Driver實(shí)現(xiàn)標(biāo)準(zhǔn)的以太網(wǎng)驅(qū)動(dòng);802.11Extensions擴(kuò)展標(biāo)準(zhǔn)以太網(wǎng)驅(qū)動(dòng)以控制WLAN Adapter的狀態(tài);Hardware Interface Driver即硬件接口驅(qū)動(dòng)控制在主機(jī)側(cè)的硬件接口。
3.5 通信協(xié)議設(shè)計(jì)
    通過UART接口在用戶終端設(shè)備與UART-WIFI之間傳輸?shù)臄?shù)據(jù)稱之為用戶接口數(shù)據(jù),接口數(shù)據(jù)分為控制數(shù)據(jù)和用戶數(shù)據(jù)兩種類型:
    (1)控制數(shù)據(jù)
    用于用戶終端設(shè)備與UART-WIFI之間的控制信息傳輸,配置模塊的網(wǎng)絡(luò)參數(shù)和系統(tǒng)參數(shù)。
    (2)用戶數(shù)據(jù)
    模塊用于數(shù)據(jù)透明傳輸時(shí)遵循用戶數(shù)據(jù)幀格式,協(xié)議由用戶自定義。
3.6 系統(tǒng)軟件工作流程設(shè)計(jì)
    在系統(tǒng)中軟件將分為兩個(gè)線程工作,一個(gè)線程接收串口數(shù)據(jù),用于系統(tǒng)參數(shù)配置或者網(wǎng)絡(luò)數(shù)據(jù)傳輸;另一個(gè)線程用于接收服務(wù)器端信息,并通過串口發(fā)送至主機(jī)端。
    系統(tǒng)完成初始化相關(guān)參數(shù)設(shè)置后,創(chuàng)建兩個(gè)線程來(lái)使系統(tǒng)進(jìn)入穩(wěn)定工作狀態(tài)。主要代碼如下:
    i=pthread_create(&thread_a,NULL,(void *)
UartDataProcessFun,NULL);
    if(i==0)   //創(chuàng)建線程1
    printf("Create thread1 success!\n");
    else{
    printf("Create thread1failure!\n");
        exit(0);
        }
    j=pthread_create(&thread_b,NULL,(void *)
NetDataProcessFun,NULL);
    if(j==0)   //創(chuàng)建線程2
    printf("Create thread2 success!\n");
    else{
    printf("Create thread2 failure!\n");
    exit(0);
    }
    pthread_join(thread_a,NULL); //等待串口數(shù)據(jù)
處理線程結(jié)束
    pthread_join(thread_b,NULL); //等待網(wǎng)絡(luò)數(shù)據(jù)
處理線程結(jié)束
其中(void *) UartDataProcessFun和(void *)NetDataProcess-
Fun是指向在函數(shù)外部定義的兩個(gè)線程處理函數(shù)的指針,線程創(chuàng)建后將同時(shí)開始執(zhí)行。
3.7 系統(tǒng)設(shè)計(jì)中的多線程同步方法
    多線程的引入降低了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度,提高了系統(tǒng)執(zhí)行效率。多線程程序在執(zhí)行時(shí),除了局部變量外,其他所有變量都將在一個(gè)進(jìn)程中的所有線程之間共享,為了改變程序執(zhí)行時(shí)序,保護(hù)共享資源,需要引入線程同步方法。
    Linux提供了多種線程同步的機(jī)制,其中有互斥鎖、信號(hào)量、條件變量等[5]。單獨(dú)使用互斥鎖容易發(fā)生死鎖;信號(hào)量分為簡(jiǎn)單的二進(jìn)制信號(hào)量和計(jì)數(shù)信號(hào)量;條件變量通過允許線程阻塞和等待一個(gè)線程發(fā)送信號(hào)的方式彌補(bǔ)了互斥鎖的不足,常和互斥鎖一起使用。使用時(shí)條件變量用來(lái)阻塞一個(gè)線程,條件不滿足時(shí),線程解開互斥鎖等待條件發(fā)生變化。當(dāng)某個(gè)線程改變了條件變量后,它將通知相應(yīng)的條件變量喚醒一個(gè)或者多個(gè)正被此條件變量阻塞的線程。本設(shè)計(jì)中的線程同步采用互斥鎖加條件變量的方式。使用條件變量需要的頭文件是pthread.h。使用條件變量標(biāo)識(shí)符pthread_cond_t創(chuàng)建一個(gè)靜態(tài)條件變量時(shí)使用PTHREAD_COND_INITIALIZER常量,例如:pthread_cond_t cond=PTHREAD_COND_INITIA-
LIZER。等待條件變量使用到的函數(shù)有:
    int pthrea_cond_wait(pthread_cond_t *cond,pthread_mutex_
t *mutex)
    int pthread_cond_timedwait(pthread_cond_t *cond,
pthread_mutex_t *mutex,const struct timespec *abtime)
激發(fā)條件變量使用到的函數(shù)有:
    pthread_cond_signal() //激活一個(gè)等待該條件的線程
    pthread_cond_broadcast() //激活所有等待線程
互斥鎖加條件變量實(shí)現(xiàn)多線程同步的一般方法如下:
    線程1代碼:
    pthread_mutex_lock(&mutex); //上鎖
    if(條件滿足)
    pthread_cond_signal(&cond);//激活等待該條件變量的線程
    pthread_mutex_unlock(&mutex); //解鎖
    線程2代碼:
    pthread_mutex_lock(&mutex);//上鎖
    while(條件不滿足)
    pthread_cond_wait(&cond,&mutex); //阻塞等待條件滿足
    pthread_mutex_unlock(&mutex); //上鎖
    在上述代碼執(zhí)行過程中,條件變量一旦滿足,線程1立即通知等待該條件變量的線程2,同時(shí)釋放互斥鎖,線程2在捕獲到條件變量滿足的消息便被激活,執(zhí)行相關(guān)操作。
    本文設(shè)計(jì)了一款面向物聯(lián)網(wǎng)應(yīng)用的UART-WIFI網(wǎng)關(guān),重點(diǎn)分析了基于Linux操作系統(tǒng)的WLAN軟件架構(gòu),介紹了Linux下多線程同步的處理方式,重點(diǎn)分析了使用互斥鎖和條件變量進(jìn)行同步的方法。本文設(shè)計(jì)的UART-WIFI網(wǎng)關(guān)具有成本低、易部署的特點(diǎn)。經(jīng)過測(cè)試,證實(shí)該網(wǎng)關(guān)具有良好的穩(wěn)定性和通信性能,可滿足當(dāng)前物聯(lián)網(wǎng)發(fā)展的需求,具有很好的使用和推廣價(jià)值。
參考文獻(xiàn)
[1] 范煒,徐洪澤.基于TCP/IP協(xié)議的嵌入式多串口網(wǎng)關(guān)的設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(1):80-82.
[2] 高揚(yáng),石秀民.基于嵌入式平臺(tái)的WLAN實(shí)現(xiàn)[J].吉林大學(xué)學(xué)報(bào),2006,24(1):103-107.
[3] 董志國(guó),李式巨.嵌入式Linux設(shè)備驅(qū)動(dòng)程序開發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(20):3737-3740.
[4] 賈晶鑫,蔣健,宋彬.ARM9工控平臺(tái)上的多串口網(wǎng)關(guān)及視頻采集傳輸?shù)膶?shí)現(xiàn)[J].電子產(chǎn)品世界,2012,19(7):37-39.
[5] MATTHEW N,STONES R.Linux程序設(shè)計(jì)(第4版)[M].北京:人民郵電出版社,2010.
[6] MCIMX27 multimedia applications processor reference manual MCIMX27RM Rev.0.2[OL].[2007-09-27].http://www.freescale.com.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美午夜不卡在线观看免费| 黄色日韩网站视频| 久久精品二区亚洲w码| 在线视频你懂得一区二区三区| 亚洲国产精品精华液网站| 亚洲男人av电影| 亚洲女女女同性video| 亚洲一区二区视频在线观看| 亚洲色无码播放| 在线视频精品一区| 一区二区毛片| 一二三区精品| 亚洲视频综合在线| 亚洲一区二区三区四区五区午夜| 在线一区观看| 亚洲一区影院| 亚洲欧美在线磁力| 亚洲欧美成人网| 欧美一区影院| 亚洲国产一区二区三区在线播 | 久久综合亚州| 免费视频一区二区三区在线观看| 噜噜噜噜噜久久久久久91| 美女诱惑一区| 欧美久久九九| 国产精品久久久久久超碰| 国产精品久久久久久久久久ktv| 国产精品欧美日韩一区二区| 国产精品一区二区欧美| 国产亚洲亚洲| 亚洲福利在线看| 日韩亚洲欧美成人| 亚洲男女自偷自拍| 亚洲成色精品| 亚洲最新视频在线| 性xx色xx综合久久久xx| 久久久九九九九| 欧美精品v日韩精品v韩国精品v| 欧美日韩亚洲一区三区| 国产精品久久久久久久一区探花| 国产精品影片在线观看| 黄色成人精品网站| 最新日韩中文字幕| 亚洲欧美成人精品| 91久久线看在观草草青青| 在线亚洲一区| 久久www成人_看片免费不卡| 美女黄色成人网| 欧美午夜国产| 国产一区在线播放| 亚洲免费观看在线观看| 性久久久久久久久久久久| 亚洲精品欧美极品| 亚洲欧美激情诱惑| 久热综合在线亚洲精品| 欧美日韩在线播放三区四区| 国产欧美一区二区三区久久| 亚洲第一在线综合网站| 亚洲一二三区在线观看| 亚洲国产综合在线| 亚洲欧美大片| 免费看成人av| 国产精品一区二区久久精品| 亚洲国产日韩欧美在线99| 亚洲一区欧美激情| 亚洲日本欧美| 羞羞答答国产精品www一本| 欧美+亚洲+精品+三区| 国产精品免费电影| 亚洲二区免费| 亚洲欧美日韩人成在线播放| 日韩一区二区精品| 久久激情五月激情| 欧美亚洲成人网| 亚洲电影在线看| 新狼窝色av性久久久久久| 一本久道综合久久精品| 久久中文在线| 国产欧美精品一区二区三区介绍| 亚洲精品国久久99热| 久久精品91| 欧美一级久久| 欧美视频一区二区三区在线观看 | 亚洲激情在线激情| 欧美在线观看视频一区二区| 亚洲神马久久| 欧美黄免费看| 伊人久久久大香线蕉综合直播| 亚洲综合色视频| 亚洲天堂成人在线观看| 欧美激情一区二区三区在线视频观看 | 亚洲已满18点击进入久久| 一本色道久久综合亚洲二区三区 | 国产自产v一区二区三区c| 亚洲性感美女99在线| 在线视频精品一区| 欧美黄免费看| 亚洲高清在线观看一区| 久久成人精品| 久久xxxx精品视频| 国产欧美日韩精品a在线观看| 国产精品99久久久久久久女警| 99re热精品| 欧美不卡在线视频| 激情婷婷久久| 欧美在线视频一区| 欧美在线一区二区三区| 国产精品草莓在线免费观看| 一本色道精品久久一区二区三区| 日韩亚洲综合在线| 欧美黄色免费网站| 亚洲电影av| 亚洲精品视频免费在线观看| 免费高清在线一区| 精品av久久久久电影| 久久精品视频在线看| 久久午夜国产精品| 狠狠久久亚洲欧美| 亚洲成人在线视频播放| 久久综合电影一区| 伊人久久噜噜噜躁狠狠躁 | 久久久久九九九九| 国产一区二区无遮挡| 久久国产精品久久w女人spa| 久久午夜色播影院免费高清| 激情久久久久久久| 亚洲国产精品123| 女人天堂亚洲aⅴ在线观看| 尤物yw午夜国产精品视频明星| 亚洲欧美一区二区三区在线| 欧美一区二区三区婷婷月色 | 欧美另类一区| 亚洲精品专区| 亚洲一区高清| 国产精品素人视频| 香蕉免费一区二区三区在线观看| 久久久精品一区| 在线成人国产| 99re6热在线精品视频播放速度| 欧美日韩国产成人在线免费| 夜久久久久久| 性欧美xxxx大乳国产app| 国产亚洲成年网址在线观看| 亚洲第一区在线| 欧美肥婆在线| 99亚洲精品| 欧美一级专区| 在线不卡中文字幕| 一区二区电影免费观看| 国产精品热久久久久夜色精品三区| 午夜欧美大尺度福利影院在线看 | 欧美精品激情| 亚洲一区二区三区乱码aⅴ| 久久精品二区| 亚洲欧洲日本国产| 亚洲免费网站| 国产字幕视频一区二区| 日韩视频在线你懂得| 国产精品久久久久久久一区探花| 欧美一区二区三区免费视| 欧美69wwwcom| 在线午夜精品| 久久这里只有精品视频首页| 亚洲美女免费精品视频在线观看| 羞羞答答国产精品www一本| 在线日本成人| 亚洲一级二级在线| 黑人一区二区| 亚洲午夜一区二区三区| 国产亚洲欧美另类中文| 亚洲精品欧洲| 国产精品女人网站| 91久久国产综合久久| 欧美午夜在线视频| 久久精品国亚洲| 国产精品分类| 亚洲国产日日夜夜| 国产精品久久国产三级国电话系列 | 亚洲欧洲一区二区三区在线观看| 欧美三级午夜理伦三级中视频| 欧美在线91| 欧美视频官网| 亚洲精品1区2区| 国产精品视频一二三| 亚洲每日在线| 国产婷婷色一区二区三区在线| 日韩一区二区精品在线观看| 国产一区日韩二区欧美三区| 亚洲视频一起| 亚洲国产精品久久久久| 欧美尤物一区| 亚洲精品乱码久久久久久日本蜜臀| 久久九九精品99国产精品| 一本色道久久加勒比88综合| 免费久久精品视频| 欧美一区二视频| 国产精品久久久一区二区三区| 亚洲日本va午夜在线影院| 国产一区二区成人| 亚洲男女毛片无遮挡|