張劍英,李宗為,張祥忠,李 金
(1.中國礦業(yè)大學(xué)信息與電氣工程學(xué)院,江蘇 徐州 221008;2.中礦大華洋通信設(shè)備有限公司,江蘇 徐州 221116)
責(zé)任編輯:魏雨博
隨著無線通信需求的不斷提升,無線AP(Access Point)開始在生產(chǎn)生活、軍用、商用等領(lǐng)域中扮演越來越重要的角色。它通過IEEE802.3以太網(wǎng)接口與有線網(wǎng)絡(luò)連接,通過天線將網(wǎng)絡(luò)信號向四周進(jìn)行輻射,從而形成無線局域網(wǎng)(Wireless Local Area Network,WLAN),是連接以太網(wǎng)和無線網(wǎng)絡(luò)的橋梁[1]。目前國內(nèi)外基于ARM的無線AP設(shè)計(jì),大都存在指令不夠靈活、占用系統(tǒng)資源高等缺點(diǎn)[2],本設(shè)計(jì)當(dāng)中提出的進(jìn)程移植方法,能夠有效地解決這些問題。設(shè)計(jì)無線AP的硬件構(gòu)成圖如圖1所示,外圍接口電路的搭建根據(jù)不同的應(yīng)用背景進(jìn)行修改,設(shè)計(jì)的重點(diǎn)在于核心CPU,使無線AP的功能從內(nèi)核的層面得以實(shí)現(xiàn)。
圖1 無線AP物理組成框圖
設(shè)計(jì)的無線AP基于ARM11和嵌入式Linux操作系統(tǒng),在移植可用的內(nèi)核文件基礎(chǔ)上,結(jié)合VMware Workstation虛擬Linux系統(tǒng)軟件操作平臺,移植hostapd進(jìn)程。軟件開發(fā)平臺選用Linux的發(fā)行版Ubuntu,通過VMware Tools進(jìn)行主機(jī)和虛擬機(jī)之間文件的共享操作,將庫文件和進(jìn)程源碼共享在Linux環(huán)境下,通過交叉編譯器對hostapd進(jìn)程、運(yùn)行庫等進(jìn)行編譯,使其能夠跨平臺運(yùn)行而完成進(jìn)程等的移植操作[3],設(shè)計(jì)過程中使用DNW串口終端作為人機(jī)交互的界面,進(jìn)行開發(fā)板啟動信息、燒寫進(jìn)度的查看和輸入指令等操作。常見的無線AP設(shè)計(jì)方法與本設(shè)計(jì)提出的方法對比情況如表1所示。
S3C6410 芯片使用了 ARM11 作為內(nèi)核[4-5],其程序文件的燒寫方法與之前以ARM7或ARM9為內(nèi)核的芯片使用USB下載線分步燒寫系統(tǒng)文件的方法并不相同。首先需要使用SD卡作開機(jī)引導(dǎo),如圖2,然后才能順利加載Bootloader,進(jìn)行內(nèi)核引導(dǎo)等操作。
表1 無線AP的一般設(shè)計(jì)方法與本設(shè)計(jì)提出的方法對比情況
圖2 S3C6410的開機(jī)引導(dǎo)流程
首次進(jìn)行程序的燒寫或需要改換系統(tǒng)時,需在上位機(jī)運(yùn)行相應(yīng)程序選擇引導(dǎo)文件,制作用于引導(dǎo)開機(jī)的SD卡。燒寫完成后,調(diào)整為Nand Flash啟動,從Flash加載系統(tǒng)。
利用TCP協(xié)議完成服務(wù)器與客戶端之間的連接,將客戶端的IP信息與客戶請求等映射到服務(wù)器用戶空間。在圖3所示無線AP數(shù)據(jù)轉(zhuǎn)發(fā)流程當(dāng)中,Socket作為應(yīng)用進(jìn)程與網(wǎng)絡(luò)協(xié)議之間的接口,通過socket()函數(shù)建立通信端點(diǎn),并用bind()命令在端點(diǎn)綁定地址,服務(wù)器端調(diào)用listen()函數(shù)監(jiān)聽連接請求,當(dāng)受監(jiān)聽的端口接收到連接請求時,服務(wù)器開始創(chuàng)建數(shù)據(jù)收發(fā)線程。
圖3 無線AP數(shù)據(jù)轉(zhuǎn)發(fā)流程
通過hostapd能夠使得無線網(wǎng)卡切換為master模式,實(shí)現(xiàn)AP功能,并且在Linux環(huán)境修改其配置文件可以設(shè)置無線網(wǎng)卡的各種參數(shù),如頻率、信號等。hostapd的運(yùn)行需要libnl和openssl兩個庫的支持,所以首先進(jìn)行這兩個庫的移植。無線AP的實(shí)現(xiàn)方式如圖4所示。
圖4 無線AP實(shí)現(xiàn)方式
3.3.1 移植 openssl庫
openssl是一個基于密碼學(xué)的安全開發(fā)包,對它的移植首先要在Makefile中指定交叉編譯器arm-linux-gcc,AR和ranlib使用相同的前綴,依賴libdl庫,INSTALLTOP自定義路徑/usr/local/arm/ssl/。編譯并安裝,可以在自定義的目錄下看到openssl被編譯成為了靜態(tài)庫。最后將該目錄lib子目錄下的內(nèi)容拷貝至開發(fā)板的/lib目錄。
3.3.2 移植 libnl庫
在Linux環(huán)境下進(jìn)行無線網(wǎng)卡的配置需要依賴libnl庫,它是為了方便應(yīng)用程序使用netlink接口而開發(fā)的一個庫。移植libnl庫需要注意很多細(xì)節(jié)問題,否則會導(dǎo)致編譯不成功,其中較為重要且易被忽略的地方有:對include子目錄中的netlink-local.h頭文件進(jìn)行修改并添加命令#include<limits.h>,需要定義ULONG_MAX數(shù)據(jù)類型等。然后配置安裝路徑并編譯,可在指定目錄下看到編譯后的結(jié)果。
安裝庫到指定的目錄下,將該目錄lib子目錄中的內(nèi)容拷貝至開發(fā)板的/lib目錄。
3.3.3 移植 hostapd 進(jìn)程
設(shè)計(jì)選用 hosapd-1.0,首先需要修改.config配置文件,使它定義的配置滿足需求。使CONFIG_DRIVER_NL80211=y,注釋其他的 CONFIG_DRIVER,選擇nl80211驅(qū)動并保存。在Makefile中分別指定ssl和libnl頭文件和庫文件的路徑,它們是之前剛剛編譯好的庫文件,hostapd的運(yùn)行需要這些庫的支持。添加如下代碼:
回到hostapd目錄執(zhí)行編譯,可在同一目錄下生成hostapd和hostapd_cli兩個可執(zhí)行文件,說明移植成功。將兩個可執(zhí)行文件拷貝到開發(fā)板上。
至此完成hostapd進(jìn)程移植,系統(tǒng)工作流程圖如圖5所示。
圖5 系統(tǒng)工作流程圖
在WLAN環(huán)境下,首先進(jìn)行IP地址和網(wǎng)關(guān)的設(shè)置,并與無線網(wǎng)絡(luò)建立連接,進(jìn)行數(shù)據(jù)包ping測試:
如圖6所示,無線網(wǎng)卡工作正常。
圖6 ping通網(wǎng)關(guān)(截圖)
然后對hostapd的移植結(jié)果進(jìn)行測試。如前所述,用固化程序或第三代碼在ARM中實(shí)現(xiàn)無線AP功能的方法,使用AP功能固件或用戶轉(zhuǎn)換卡,在RAM中轉(zhuǎn)換802.11b協(xié)議識別的AP代碼,CPU僅用于控制和管理,這樣雖然占用CPU資源很少,但缺點(diǎn)在于指令使用的范圍受到限制,無法做到如本設(shè)計(jì)中隨時手動輸入指令切換無線網(wǎng)卡工作模式這般靈活,直接在終端執(zhí)行指令:
可以看到串口輸出了版本信息和用戶操作實(shí)現(xiàn)的AP方式,說明hostapd移植成功,且進(jìn)程已能按要求運(yùn)行,如圖7所示。
圖7 hostapd運(yùn)行信息(截圖)
主機(jī)AP方式(或稱軟AP解決方案),其軟件易修改的特點(diǎn)決定了它具有較強(qiáng)的靈活性,但軟件程序通過CPU運(yùn)行的代碼實(shí)現(xiàn)了幾乎所有的IEEE802.11b控制功能,同時主機(jī)AP方式附帶了路由、網(wǎng)橋等功能,導(dǎo)致它對CPU資源如時鐘、處理性能、操作系統(tǒng)等方面要求很高。相比之下,本設(shè)計(jì)中提出的無線AP實(shí)現(xiàn)方式,只是在CPU后臺開啟了一個進(jìn)程,且可以隨時關(guān)閉。表2為客戶端對服務(wù)器的數(shù)據(jù)包ping試驗(yàn)結(jié)果,客戶端在以服務(wù)器為原點(diǎn)、半徑3 m的圓形區(qū)域內(nèi)移動,從測試結(jié)果可以看出,數(shù)據(jù)轉(zhuǎn)發(fā)實(shí)時性很高,說明本設(shè)計(jì)方法對系統(tǒng)資源的占用很少,保證了系統(tǒng)的穩(wěn)定性。
表2 數(shù)據(jù)包ping測試結(jié)果
本文首先介紹了無線AP的工作原理和國內(nèi)外的研究現(xiàn)狀,然后提出了一種基于ARM11的無線AP進(jìn)程移植方法,介紹了S3C6410芯片的開機(jī)引導(dǎo)機(jī)制,并結(jié)合VMware Workstation搭建了軟件開發(fā)平臺。通過與現(xiàn)有的幾種無線AP設(shè)計(jì)方法做出的對比,可以看出本設(shè)計(jì)具有指令靈活、占用資源少等優(yōu)點(diǎn)。文中重點(diǎn)介紹對hostapd進(jìn)程以及其運(yùn)行庫的編譯下載,從最后給出的測試結(jié)果看到,成功在硬件平臺上移植了hostapd進(jìn)程,能夠使用指令靈活地切換工作模式實(shí)現(xiàn)AP功能,解決了現(xiàn)有方法存在的不足。
[1]趙義平.802.11n協(xié)議的研究與無線接入點(diǎn)功能的實(shí)現(xiàn)[D].成都:西南交通大學(xué),2009.
[2]黃智偉,鄧月明,王彥.ARM9嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2008.
[3]蔡立三.基于ARM的無線AP的設(shè)計(jì)[D].北京:中國科學(xué)院,2009.
[4]馬文強(qiáng),章專.基于S3C6410的無線視頻傳輸節(jié)點(diǎn)設(shè)計(jì)[J].傳感器與微系統(tǒng),2011(10):96-98.
[5]郭巧云,許雪梅,李岸,等.基于ARM11的無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2010(8):1786-1788.