陳 新,翁秋華
(福州大學 物理與信息工程學院,福建 福州 350108)
近年來,中國正處在網絡高速發展階段,尤其是中國進入 3G時代以來推動各項無線業務快速發展,除了3G技術外,其中最為明顯的是Wi-Fi無線通信技術高速發展。Wi-Fi,英文全稱為 wireless fidelity,中文意思為“無線保真”。Wi-Fi技術是IEEE定義的無線局域網通信工業標準IEEE 802 11[1]。該標準包括IEEE 802 11a、802 11b和802 11g。相比傳統有線接入技術,Wi-Fi技術具有更大靈活性;與其他的無線技術相比,Wi-Fi技術則具有傳輸速率快,傳輸距離遠,搭建方便等優點。由于嵌入式技術已經廣泛應用于各種便捷式電子產品的開發,其中以 ARM 架構體系最為常見,在相應設備上為訪問互聯網而增加 Wi-Fi功能成為一個必然的選擇。由于 Linux的開源性,可以應用的資源較為豐富,以及對驅動支持日益完善。文中通過對 Linux下的ARM構架體系的Wi-Fi無線通信功能的圖形化設計與實現,概括了Linux下完整開發Wi-Fi功能一般步驟。
對于電子產品設計通常分為兩部分:硬件設計與軟件設計。硬件提供必要的資源構成實體,而軟件則提供系統運行和相應各種功能實現。
[2]。整個系統由AR9271無線通信模塊、ARM920T(S3C2440A)處理器、LCD顯示屏(含觸摸)、NAND、FLASH、SDROM、電源管理等部分組成,結構如圖1所示。其中設計依據是:由FLASH啟動系統,并向AR9271無線通信模塊供電,由USB接口受ARM的Linux系統識別,由串口輸入請求激活AR9271,生成相應的wlan0套接字接口,利用無線連接工具掃描周圍的無線網絡,選擇其中的一個網絡,請求連接,由系統識別的端口的自動獲取IP,從而接入互聯網。通信數據包通過系統的TCP/IP協議暫存在SDROM進行數據交換,最后由LCD顯示。

圖1 系統框
AR9271是一款Atheros公司為家庭網關、機頂盒、掌上游戲機、打印機以及各種其他嵌入式無線產品提供高性能的 Wi-Fi芯片。此外,它還可集成到筆記本電腦和桌面電腦的無線USB適配器中,能簡便地在現有PC上實現低價格的性能升級。
AR9271芯片采用全新的架構,集成了可運行更多片上無線LAN功能的CPU與存儲器。這種集成式CPU可減輕主機設備的無線處理開銷。該項設計可使消費類電子設備上原本不支持無線功能的主機處理器現在也能提供穩健的Wi-Fi功能。AR9271具有創新的主機設備任務分擔特性,不僅可使WLAN自主運行,而且還可實現與主機設備應用的無縫配合。向用戶提供了USB接口,故采用USB接口。
該系統采用S3C2440A作為ARM920T的核心模塊,該處理器的主頻能夠輕松地運行 Linux、Windows CE等操作系統,具有強大的內部中斷和TCP/IP的輪詢調用功能,S3C2440A有130個通用可編程多功能的I/O端口,其中包括USB接口,可以直接與 AR9271通信模塊相連,這對簡化外圍電路擴展部分有很大幫助,降低了系統的復雜度和簡化了軟件設計,所以選用S3C2440A作為本系統的CPU,其與AR9271的控制接口如圖2。

圖2 AR9271與CPU接口控制
為了實現Wi-Fi功能,使系統能夠正常識別到AR9271無線通信模塊并能夠正常被調用,除了必要的硬件連接,還要進行軟件設計,通過Linux操作系統驅動配置和加載,使 AR9271模塊接上網絡并和Linux系統的S3C2440A模塊通信,最后設計成圖形化連接界面方便前臺獨立操作。其設計流程如圖 3所示。

圖3 軟件處理流程
參考文獻[3-5]。由于設計所用的 AR9271是比較新的芯片,一般發行版的Linux(內核版本2.6.35以下)系統沒有自帶驅動,所以應另外編譯ARM版驅動,動態加載。下載碼源,進入相應的目錄,交叉編譯后得到 ath9k_htc.ko文件,拷貝到/lib/modules/driver/下通過NFS掛載文件系統,加載命令為:modprobe ath9k_htc.ko。最后還應激活網卡,相應命令為:ifconfig wlan0 up。
根據無線網絡不同的加密類型,需要配置的命令也不同,其中wireless tools支持的驅動最為全面,但它不能連接 WPA/WPA2加密的網絡,而 wpa_supplicant則可以連接WPA/WPA2加密的網絡,但支持驅動有限。本設計所用 AR9271為 wpa_supplicant所支持驅動之一。因此,可以連接各種加密網絡。下載好相應的碼源,對其交叉編譯,得到可執行文件,分別為iwlist、iwconfig、wpa_cli、wpa_ passphrase、wpa_supplicant,放至/usr/sbin/目錄下。
(1)連接無加密網絡
對于無加密網絡的連接,先掃描周圍可以檢測到的無線網絡,在終端輸入:iwlist wlan0 scannig;選擇其中一個特別為測試而搭建的無線網絡test,再次終端輸入:iwconfig wlan0 essid “test”;確認為無加密網絡,終端輸入:iwconfig wlan0 key off(可不輸入本條命令,因為默認是無加密);通過自動獲取IP方式連網,最后終端輸入:udhcpc –iwlan0,則可以看到獲得IP:192.168.1.109,這時可以看到ping –c 4 www.baidu.com有返回值。
(2)連接wep加密網絡
對于加密類型為wep的無線網絡,操作步驟與連接無加密網絡一樣,只要把其中的命令:iwconfig wlan0 key off修改為iwconfig wlan0 key xxxx(其中xxxx為10位16進制數或是5位ASCII字符),其余操作不變,最后連上網絡。
(3)連接wpa/wpa2加密網絡
由于連接加密類型為wpa/wpa2的網絡,需要先寫好配置文件,才能使用wpa_supplicant進行連接。輸入命令:wpa_supplicant –B –iwlan0 –c/etc/wpa_supplicant.conf則表示已經連上網絡,通過自動獲取IP方式連網,終端輸入:udhcpc –iwlan0,則可以看到獲得 IP:192.168.1.103,這時可以 ping –c 4 www.baidu.com有返回值。
其中配置文件/etc/wpa_supplicant.conf參考如下:
#指定接口路徑

#確保只有root用戶才能讀取配置文件

#配置文件可重寫

#掃描并選擇一個網絡,當沒找到時使用默認網絡

鑒于上述整個操作過程都是在終端命令行下操作的,這給使用帶來諸多不便,不適合普通用戶的使用習慣,可以通過集成開發工具 Qt creator 編寫Wi-Fi圖形化連接界面[6-8]。根據實際需要可在主界面放置一個網絡列表:網絡名(SSID)、信號強度(Signal Level)、狀態(Status),還有掃描按鈕(Scan)、斷開按鈕(Disconnect)、最小化按鈕(Minimize)。當掃描到網絡時,點擊該網絡,則會彈出連接對話框,如果該網絡是加密網絡則需要輸入密碼才可連接,對話框中有連接按鈕與取消按鈕。如圖4所示。

圖4 Wi-Fi連接開發界面
其中間的列表框用于顯示所掃描到的網絡,經過簡單處理后只顯示網絡名稱、信號強度和狀態;掃描按鈕用于掃描周圍存在的無線網絡,可以編寫scan_network()函數作為掃描按鈕的槽動作;最小化按鈕則讓整個程序退出界面在后臺運行,可以編寫minimize()函數做該按鈕的槽動作;斷開按鈕是讓所連接的網絡正常斷開,可以編寫disconnect()函數做該按鈕的槽動作。
當完成上述硬件平臺搭建、驅動編譯和加載、連接應用程序設計,完成了整個 Wi-Fi網絡的開發,當打開應用程序用于掃描網絡并連接其中一個網絡,最小化后,打開網頁瀏覽器輸入 www.google. com.hk即可上網。結果如圖5所示,測試結果表明,所設計開發的Wi-Fi網絡完全可以正常通信,并且實現了圖形化的友好連接界面,達到預期目標。

圖5 掃描結果
本文通過分析Linux下的ARM9體系Wi-Fi網絡通信原理,結合當前對無線網絡需求更加突出的情況下,從而設計了Wi-Fi網絡開發流程,并實現了網絡通信,并在此基礎上進行了圖形化的設計,方便操作,可運用于網絡系統開發,對嵌入式的網絡設計具有一定的參考作用。
參考文獻
[1] 索煒.基于S3C2440+LINUX的無線射頻模塊的驅動程序設計[D].北京:北京郵電大學,2008.
[2] 張玉杰,馬立云,張賀艷.基于ARM和FPGA的LED顯示屏控制系統的設計[J].計算機測量與控制,2009,17(12):2429-2431.
[3] 楊峰.C語言完全手冊:基本概念、函數參考、編程實例與試題集錦[M].北京:科學出版社,2008:15-48.
[4] 宋寶華. Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008:277-296.
[5] CORBET J,GREG Kroath-Hartman,RUBINI A.Linux Device Drivers[M].3rd edition, American:O’Reilly Media.Inc,2005:10-65.
[6] BLANCHETTE J,SUMMERFIELD M.C++ GUI Programming with Qt 4[M].USA:Prentice Hall,2008:80-92.
[7] 丁林松,黃麗琴.Qt4圖形設計與嵌入式開發[M].北京:人民郵電出版社,2009:116-124.
[8] 韋東山.嵌入式 Linux應用開完全手冊[M].北京:人民郵電出版社,2008:335-360.