任康磊,盧 雷,林金星,蔡術(shù)亞
(1.南京郵電大學(xué) 自動化學(xué)院,江蘇 南京 210023;2.江蘇英達思自動化技術(shù)有限公司,江蘇 南通 224600)
隨著通信和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,WiFi技術(shù)的發(fā)展尤為突出。隨著WiFi在生活中應(yīng)用的進一步深化,各行各業(yè)都對無線網(wǎng)絡(luò)部署提出了“全覆蓋、高速率、簡單管控”的需求[1-3]。但是,在學(xué)校、大型商場、公共場所等一些場景下,無線覆蓋往往面對著信號盲區(qū)、速率低下、管控復(fù)雜等挑戰(zhàn)。在此情況下,在部署WLAN時,應(yīng)根據(jù)現(xiàn)場環(huán)境中的信號障礙因素、無線覆蓋范圍、吞吐量等進行評估,可使用無線AP(access point)作為另一種無線通信的選擇[4-6]。
近年來,科研人員對無線網(wǎng)絡(luò)化的研究主要集中在WiFi、ZigBee、3G等場景中,價格昂貴且系統(tǒng)軟件實現(xiàn)復(fù)雜。而對無線AP的研究相對較少,無線AP具有功耗低、價格適中、易安裝、輻射范圍廣且傳輸速率高等優(yōu)點[7-8]。
綜上所述,將無線AP與嵌入式技術(shù)相結(jié)合進行無線網(wǎng)絡(luò)通信的研究,對未來的學(xué)術(shù)科研具有一定的參考價值。
文中設(shè)計的基于AP模式的遠程PC與ARM11通信的總體結(jié)構(gòu)如圖1所示。將S3C6410作為控制核心,AR9271無線網(wǎng)卡作為通信媒介,開啟AP模式,無需路由即可構(gòu)建遠程控制的無線局域網(wǎng),基于socket套接字實現(xiàn)與遠程PC的無線通信。
圖1 平臺整體框架
選用的ARM11系列微處理器是Samsung公司近年推出的新一代16/32位RISC處理器,并且采用新指令架構(gòu)ARMv6,以ARM1176JZF-S為內(nèi)核,微處理器芯片為S3C6410,其核心時鐘頻率最高可達667MHz;擁有的外部存儲器有Nand Flash、DDR RAM等;同時,S3C6410內(nèi)部還內(nèi)置大量的片上接口,常用的有PWM接口、4通道定時器、GPIO、USB以及SD主設(shè)備等[9-10],內(nèi)部功能結(jié)構(gòu)如圖2所示。為減少S3C6410對內(nèi)存的占有、延長Nand Flash的使用壽命、方便用戶使用,S3C6410還可將Linux系統(tǒng)導(dǎo)入SD卡中,使ARM直接從SD卡啟動。
圖2 S3C6410內(nèi)部功能結(jié)構(gòu)
為實現(xiàn)PC與ARM11的遠程通信,選用型號AR9271的USB無線網(wǎng)卡。該網(wǎng)卡工作頻率可以達到2.4~2.4835GHz,支持IEEE802.11n/g/b,傳輸效率高達300Mbps,并采用差分二進制相移鍵控等調(diào)制方式,能夠滿足局域網(wǎng)內(nèi)數(shù)據(jù)傳輸控制的要求。
3.1.1交叉編譯環(huán)境的建立
利用計算機上豐富的封裝庫資源來設(shè)計程序,再安裝適合編譯環(huán)境的交叉編譯工具鏈,編譯生成可執(zhí)行文件,最后下載到目標(biāo)板上進行測試[11]。文中VMware虛擬主機上的Linux為Redhat6,交叉編譯器為友善之臂公司提供的arm-linux-gcc-4.5.1。建立交叉編譯工具鏈的步驟如下:
#cd/tmp
#tarxvzfarm-linux-gcc-4.5.1.tgz-C/
#gedit /root/.bashrc
修改export PATH=$PATH:/opt/FriendlyARM/
toolschain/4.5.1/bin
3.1.2配置和編譯U-boot
所涉及到u-boot配置和編譯,使用的是u-boot-s3c6410,該版本支持S3C6410從SD和Nand flash兩種方式啟動,因考慮到Nand flash的使用壽命和實驗便捷的需要,采用SD卡啟動方式[12]。
編譯結(jié)束后,在當(dāng)前目錄下會生成后綴是bin,且支持SD卡驅(qū)動的文件,只需將它燒寫到SD卡中,設(shè)置開發(fā)板從SD卡啟動即可。
3.1.3內(nèi)核移植
所謂移植就是在一些現(xiàn)成內(nèi)核的基礎(chǔ)上,根據(jù)硬件配置及實驗?zāi)康男枰胢ake menuconfig進行適當(dāng)?shù)募舨?,保存關(guān)閉即可[13],如圖3所示。
圖3make menuconfig配置界面
內(nèi)核選用的是Linux2.6.38。移植過程如下:
#cd /opt/FriendlyARM/6410/linux/linux-2.6.38
#cpconfig_linux_s3c6410.config
#make zImage
編譯結(jié)束,在所對應(yīng)的boot目錄下生成內(nèi)核文件zImage,將其燒到SD卡中。
3.1.4文件系統(tǒng)的制作
根文件系統(tǒng)是用來存放系統(tǒng)運行時所需的各種腳、配置文件、庫文件和相關(guān)工具軟件的。它是系統(tǒng)啟動時運行的第一個文件系統(tǒng)。該部分選用的是yaffs2格式的文件系統(tǒng),制作步驟如下:
#cd/opt/FriendlyARM/6410/linux
#mkyaffs2image-128M ootfs_qtopia_qt4 ootfs_qtopia_qt4.img
把rootfs_qtopia_qt4目錄壓制為yaffs2格式的rootfs_qtopia_qt4.img映像,將其燒到SD卡中。
綜上所述,將配置、編譯完成的U-boot、zImage、yaffs2燒寫到SD卡中,并將SD設(shè)置成引導(dǎo)啟動。當(dāng)開發(fā)板啟動時將會自動加載Linux系統(tǒng)。
Linux2.6.38內(nèi)核已支持無線網(wǎng)絡(luò)通信功能,但需要進行配置后才可使用。因此,使用圖形界面對內(nèi)核進行配置,使內(nèi)核支持USB2.0協(xié)議、IEEE802.11協(xié)議、TCP/IP協(xié)議和讀寫E2PROM。完成以上配置后,系統(tǒng)就能完全支持USB接口的網(wǎng)卡。內(nèi)核配置無線網(wǎng)卡驅(qū)動方法如下:
(1)執(zhí)行make menuconfig命令,分別對內(nèi)核中Networking support和Device Driver作適當(dāng)?shù)牟眉簦謩e勾選出對應(yīng)的Wireless和Wireless Cards相關(guān)配置項,再編譯并下載至S3C6410;
(2)將后綴名稱為fw格式的無線網(wǎng)卡文件放到庫文件firmware下。
建立遠程PC客戶端與ARM服務(wù)器的通信,需要USB網(wǎng)卡工作在AP模式,開啟無線接入功能,使系統(tǒng)無需路由器即可構(gòu)建局域網(wǎng)。USB網(wǎng)卡的無線接入可利用hostapd實現(xiàn),hostapd可以是一種AP的認證服務(wù)器,負責(zé)控制管理站的接入和認證,也可以是一種在Linux上構(gòu)建無線接入點較為方便的工具。通過hostapd可以將無線網(wǎng)卡切換為AP模式,通過修改配置文件,可以建立一個開放式的WEP、WPA或WPA2無線網(wǎng)絡(luò)[14]。具體步驟如下:
(1)配置、編譯hostapd。
#cd hostapd-2.0/hostapd
#cp defconfig .config
用GCC編譯后,利用make、make install編譯、安裝hostapd,將生成的hostapd復(fù)制到bin目錄下。
(2)hostapd必須與后綴名為conf的配置文件相互配合才能運行,且還需對配置文件hostapd.conf作適當(dāng)裁剪。代碼主要部分為:
ssid=S3C6410
wpa_passphrase=zxc12345
wpa_key_mgmt=WPA-PSK
……
(3)修改/etc/mdev.conf的配置文件,每次啟動系統(tǒng)時,該無線AP就能動態(tài)分配IP。而配置文件又依賴于腳本文件auto_wifi_ap.sh。因此,還需對腳本文件進行修改,關(guān)鍵代碼如下:
if[$ACTION=“add”];
then
hostapd -B /etc/hostapd.conf
ifconfig wlan0192.168.0.103
dhcpd -cf /etc/dhcpd.conf wlan0
else
killall hostapd
killall dhcpd
fi
該網(wǎng)絡(luò)采用的是基于TCP協(xié)議的可靠傳輸。TCP流套接字是一種面向連接、可靠的數(shù)據(jù)傳輸?shù)奶捉幼诸愋停擃愋吞捉幼挚蓪崿F(xiàn)數(shù)據(jù)無重復(fù)、無差錯、無丟失,為穩(wěn)定可靠的通信提供保障。
在嵌入式Linux系統(tǒng)中,socket API是一種處于用戶空間與內(nèi)核空間之間通信交互的接口,且屏蔽了具體底層細節(jié),用戶可迅速上手[15]?;趕ocket網(wǎng)絡(luò)通信程序流程如圖4所示。
將開啟AP模式的ARM11作為服務(wù)器,遠程PC作為客戶端。外界因素都會對無線通信系統(tǒng)的性能造成影響。因此,本次試驗主要從遠近距離和障礙物間隔對通信時延進行測試分析。
將遠程PC虛擬機IP設(shè)置為:192.168.0.102,ARM11的IP地址設(shè)置為:192.168.0.103,且客戶端和服務(wù)器需設(shè)置在同一個網(wǎng)段內(nèi)。
遠近距離測試時,分別選擇100組采樣數(shù)據(jù)進行實驗,近距離選擇在10m2的室內(nèi),遠距離選擇在30m左右的地點,對它們通信時延狀況進行分析,如圖5所示。
圖5 遠近距離測試圖
由圖5可知,進行遠、近距離采樣傳輸測試時,近距離數(shù)據(jù)傳輸時延穩(wěn)定在0.1ms以下,通信質(zhì)量很好;而遠距離通信時延也能基本維持在0.1ms附近,但有些數(shù)據(jù)會出現(xiàn)稍長的延遲,但基本滿足無線通信的要求,對通信傳輸?shù)挠绊戄^小。
選擇墻面較多的地點進行障礙物間隔測試,如圖6所示。在墻面障礙物較多的地點進行數(shù)據(jù)通信測試時,出現(xiàn)了明顯變化,在多個時間點處出現(xiàn)大量時延“毛刺”,但大多數(shù)還是能穩(wěn)定在0.1ms處。
圖6 障礙物阻礙測試圖
綜上所述,無論是遠近距離測試,還是在障礙物較多地點進行測試,在無線AP網(wǎng)絡(luò)環(huán)境下,都能夠穩(wěn)定、可靠地進行數(shù)據(jù)傳輸。
主要結(jié)合hostapd工具,將ARM11設(shè)置為AP,構(gòu)建成一定范圍的局域網(wǎng),使局域網(wǎng)絡(luò)的靈活性、可拓展性得到提高,并且能夠覆蓋在通信過程中所遇到的“通信死角”。由不同場景下的通信測試可知,所設(shè)計的基于ARM11無線AP模式下的通信能夠穩(wěn)定、可靠地進行,對未來的科研、生產(chǎn)及生活都具有一定的實用價值。
[1] 孫 勇,陳小惠.WIFI與GPRS在遠程醫(yī)療中的應(yīng)用及研究[J].計算機技術(shù)與發(fā)展,2013,23(8):200-203.
[2] 楊 順,李明明.基于ARM和WiFi技術(shù)的遠程自動抄表系統(tǒng)設(shè)計[J].計算機測量與控制,2013,21(11):3068-3071.
[3] 何少佳, 史劍清. 基于ARM的家居遠程視頻監(jiān)控平臺[J].計算機系統(tǒng)應(yīng)用,2014,23(9):47-51.
[4] HEYDARIAAN M,GNAWALI O.WiFi access point as a sensing platform[C]//Global communications conference.[s.l.]:IEEE,2016:1-6.
[5] KANG X,CHIA Y K,SUN S,et al.Mobile data offloading through a third-party WiFi access point:an operator’s perspective[J].IEEE Transactions on Wireless Communications,2014,13(10):5340-5351.
[6] CAO J,TU G,LIANG L,et al.Design of power grid environment monitoring system based on WLAN[C]//Second world congress on software engineering.[s.l.]:IEEE,2010:30-33.
[7] 程金晶,魏東巖,唐陽陽.WLAN指紋定位中AP選擇策略研究[J].計算機技術(shù)與發(fā)展,2015,25(3):1-5.
[8] 蔡立三.基于ARM的無線AP的設(shè)計[D].北京:中國科學(xué)院研究生院(空間科學(xué)與應(yīng)用研究中心),2009.
[9] SHAO H,YANG C,ZONG N,et al.The design of a hospital environment data acquisition system based on ARM11and embedded Linux[C]//Proceedings of the2nd international conference on computer science and electronics engineering.[s.l.]:Atlantis Press,2013.
[10] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[11] 蔡利平,任家富,童 銳,等.基于ARM的NandFlash啟動分析與移植[J].計算機工程與設(shè)計,2012,33(3):931-935.
[12] 杜世昌.基于嵌入式Linux的設(shè)備驅(qū)動程序設(shè)計的研究[D].西安:中國科學(xué)院研究生院(西安光學(xué)精密機械研究所),2013.
[13] 胡祖寶,董國通.基于S3C2440的嵌入式Linux內(nèi)核移植及字符設(shè)備驅(qū)動開發(fā)[J].工業(yè)控制計算機,2015(12):14-15.
[14] 王提升.基于ARM和WLAN的移動機器人遠程監(jiān)控系統(tǒng)研究[D].廣州:華南理工大學(xué),2014.
[15] 邴哲松,李 萌,邢東洋.ARM Linux嵌入式網(wǎng)絡(luò)控制系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2012.