任康磊,盧 雷,林金星,蔡術亞
(1.南京郵電大學 自動化學院,江蘇 南京 210023;2.江蘇英達思自動化技術有限公司,江蘇 南通 224600)
隨著通信和網絡技術的迅猛發展,WiFi技術的發展尤為突出。隨著WiFi在生活中應用的進一步深化,各行各業都對無線網絡部署提出了“全覆蓋、高速率、簡單管控”的需求[1-3]。但是,在學校、大型商場、公共場所等一些場景下,無線覆蓋往往面對著信號盲區、速率低下、管控復雜等挑戰。在此情況下,在部署WLAN時,應根據現場環境中的信號障礙因素、無線覆蓋范圍、吞吐量等進行評估,可使用無線AP(access point)作為另一種無線通信的選擇[4-6]。
近年來,科研人員對無線網絡化的研究主要集中在WiFi、ZigBee、3G等場景中,價格昂貴且系統軟件實現復雜。而對無線AP的研究相對較少,無線AP具有功耗低、價格適中、易安裝、輻射范圍廣且傳輸速率高等優點[7-8]。
綜上所述,將無線AP與嵌入式技術相結合進行無線網絡通信的研究,對未來的學術科研具有一定的參考價值。
文中設計的基于AP模式的遠程PC與ARM11通信的總體結構如圖1所示。將S3C6410作為控制核心,AR9271無線網卡作為通信媒介,開啟AP模式,無需路由即可構建遠程控制的無線局域網,基于socket套接字實現與遠程PC的無線通信。

圖1 平臺整體框架
選用的ARM11系列微處理器是Samsung公司近年推出的新一代16/32位RISC處理器,并且采用新指令架構ARMv6,以ARM1176JZF-S為內核,微處理器芯片為S3C6410,其核心時鐘頻率最高可達667MHz;擁有的外部存儲器有Nand Flash、DDR RAM等;同時,S3C6410內部還內置大量的片上接口,常用的有PWM接口、4通道定時器、GPIO、USB以及SD主設備等[9-10],內部功能結構如圖2所示。為減少S3C6410對內存的占有、延長Nand Flash的使用壽命、方便用戶使用,S3C6410還可將Linux系統導入SD卡中,使ARM直接從SD卡啟動。

圖2 S3C6410內部功能結構
為實現PC與ARM11的遠程通信,選用型號AR9271的USB無線網卡。該網卡工作頻率可以達到2.4~2.4835GHz,支持IEEE802.11n/g/b,傳輸效率高達300Mbps,并采用差分二進制相移鍵控等調制方式,能夠滿足局域網內數據傳輸控制的要求。
3.1.1交叉編譯環境的建立
利用計算機上豐富的封裝庫資源來設計程序,再安裝適合編譯環境的交叉編譯工具鏈,編譯生成可執行文件,最后下載到目標板上進行測試[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]。
編譯結束后,在當前目錄下會生成后綴是bin,且支持SD卡驅動的文件,只需將它燒寫到SD卡中,設置開發板從SD卡啟動即可。
3.1.3內核移植
所謂移植就是在一些現成內核的基礎上,根據硬件配置及實驗目的需要,利用make menuconfig進行適當的剪裁,保存關閉即可[13],如圖3所示。

圖3make menuconfig配置界面
內核選用的是Linux2.6.38。移植過程如下:
#cd /opt/FriendlyARM/6410/linux/linux-2.6.38
#cpconfig_linux_s3c6410.config
#make zImage
編譯結束,在所對應的boot目錄下生成內核文件zImage,將其燒到SD卡中。
3.1.4文件系統的制作
根文件系統是用來存放系統運行時所需的各種腳、配置文件、庫文件和相關工具軟件的。它是系統啟動時運行的第一個文件系統。該部分選用的是yaffs2格式的文件系統,制作步驟如下:
#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設置成引導啟動。當開發板啟動時將會自動加載Linux系統。
Linux2.6.38內核已支持無線網絡通信功能,但需要進行配置后才可使用。因此,使用圖形界面對內核進行配置,使內核支持USB2.0協議、IEEE802.11協議、TCP/IP協議和讀寫E2PROM。完成以上配置后,系統就能完全支持USB接口的網卡。內核配置無線網卡驅動方法如下:
(1)執行make menuconfig命令,分別對內核中Networking support和Device Driver作適當的裁剪,分別勾選出對應的Wireless和Wireless Cards相關配置項,再編譯并下載至S3C6410;
(2)將后綴名稱為fw格式的無線網卡文件放到庫文件firmware下。
建立遠程PC客戶端與ARM服務器的通信,需要USB網卡工作在AP模式,開啟無線接入功能,使系統無需路由器即可構建局域網。USB網卡的無線接入可利用hostapd實現,hostapd可以是一種AP的認證服務器,負責控制管理站的接入和認證,也可以是一種在Linux上構建無線接入點較為方便的工具。通過hostapd可以將無線網卡切換為AP模式,通過修改配置文件,可以建立一個開放式的WEP、WPA或WPA2無線網絡[14]。具體步驟如下:
(1)配置、編譯hostapd。
#cd hostapd-2.0/hostapd
#cp defconfig .config
用GCC編譯后,利用make、make install編譯、安裝hostapd,將生成的hostapd復制到bin目錄下。
(2)hostapd必須與后綴名為conf的配置文件相互配合才能運行,且還需對配置文件hostapd.conf作適當裁剪。代碼主要部分為:
ssid=S3C6410
wpa_passphrase=zxc12345
wpa_key_mgmt=WPA-PSK
……
(3)修改/etc/mdev.conf的配置文件,每次啟動系統時,該無線AP就能動態分配IP。而配置文件又依賴于腳本文件auto_wifi_ap.sh。因此,還需對腳本文件進行修改,關鍵代碼如下:
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
該網絡采用的是基于TCP協議的可靠傳輸。TCP流套接字是一種面向連接、可靠的數據傳輸的套接字類型,該類型套接字可實現數據無重復、無差錯、無丟失,為穩定可靠的通信提供保障。
在嵌入式Linux系統中,socket API是一種處于用戶空間與內核空間之間通信交互的接口,且屏蔽了具體底層細節,用戶可迅速上手[15]。基于socket網絡通信程序流程如圖4所示。
將開啟AP模式的ARM11作為服務器,遠程PC作為客戶端。外界因素都會對無線通信系統的性能造成影響。因此,本次試驗主要從遠近距離和障礙物間隔對通信時延進行測試分析。
將遠程PC虛擬機IP設置為:192.168.0.102,ARM11的IP地址設置為:192.168.0.103,且客戶端和服務器需設置在同一個網段內。
遠近距離測試時,分別選擇100組采樣數據進行實驗,近距離選擇在10m2的室內,遠距離選擇在30m左右的地點,對它們通信時延狀況進行分析,如圖5所示。

圖5 遠近距離測試圖
由圖5可知,進行遠、近距離采樣傳輸測試時,近距離數據傳輸時延穩定在0.1ms以下,通信質量很好;而遠距離通信時延也能基本維持在0.1ms附近,但有些數據會出現稍長的延遲,但基本滿足無線通信的要求,對通信傳輸的影響較小。
選擇墻面較多的地點進行障礙物間隔測試,如圖6所示。在墻面障礙物較多的地點進行數據通信測試時,出現了明顯變化,在多個時間點處出現大量時延“毛刺”,但大多數還是能穩定在0.1ms處。

圖6 障礙物阻礙測試圖
綜上所述,無論是遠近距離測試,還是在障礙物較多地點進行測試,在無線AP網絡環境下,都能夠穩定、可靠地進行數據傳輸。
主要結合hostapd工具,將ARM11設置為AP,構建成一定范圍的局域網,使局域網絡的靈活性、可拓展性得到提高,并且能夠覆蓋在通信過程中所遇到的“通信死角”。由不同場景下的通信測試可知,所設計的基于ARM11無線AP模式下的通信能夠穩定、可靠地進行,對未來的科研、生產及生活都具有一定的實用價值。
[1] 孫 勇,陳小惠.WIFI與GPRS在遠程醫療中的應用及研究[J].計算機技術與發展,2013,23(8):200-203.
[2] 楊 順,李明明.基于ARM和WiFi技術的遠程自動抄表系統設計[J].計算機測量與控制,2013,21(11):3068-3071.
[3] 何少佳, 史劍清. 基于ARM的家居遠程視頻監控平臺[J].計算機系統應用,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].計算機技術與發展,2015,25(3):1-5.
[8] 蔡立三.基于ARM的無線AP的設計[D].北京:中國科學院研究生院(空間科學與應用研究中心),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應用開發完全手冊[M].北京:人民郵電出版社,2008.
[11] 蔡利平,任家富,童 銳,等.基于ARM的NandFlash啟動分析與移植[J].計算機工程與設計,2012,33(3):931-935.
[12] 杜世昌.基于嵌入式Linux的設備驅動程序設計的研究[D].西安:中國科學院研究生院(西安光學精密機械研究所),2013.
[13] 胡祖寶,董國通.基于S3C2440的嵌入式Linux內核移植及字符設備驅動開發[J].工業控制計算機,2015(12):14-15.
[14] 王提升.基于ARM和WLAN的移動機器人遠程監控系統研究[D].廣州:華南理工大學,2014.
[15] 邴哲松,李 萌,邢東洋.ARM Linux嵌入式網絡控制系統[M].北京:北京航空航天大學出版社,2012.