基于ARM的Ad Hoc網(wǎng)絡(luò)平臺(tái)的實(shí)現(xiàn)
本文使用華碩USB無(wú)線網(wǎng)卡WL-167g,其網(wǎng)卡驅(qū)動(dòng)是rt73。
移植步驟如下:
a、下載RT73_Linux_STA_Drv1.0.4.0.tar.gz,解壓后生成Module和WPA_Supplicant兩個(gè)目錄,將目錄Module中的所有文件都拷貝到內(nèi)核源碼包drivers/usb/net/rt73下,修改Makefile如下編譯選項(xiàng):
KDIR := path/linux-2.6.18
path為內(nèi)核源碼包所在路徑。
b、由于要在內(nèi)核源碼包里進(jìn)行交叉編譯,所以修改linux-2.6.18 /drivers/usb/net/Kconfig,加入以下內(nèi)容:
config RT73
tristate“support for rt73 wireless usb device”
depends on USB NET USB_USBNET
c、修改drivers/usb/net/Makefile,加入rt73的編譯項(xiàng):
obj-$(CONFIG_RT73)+= rt73
d、對(duì)內(nèi)核重新進(jìn)行配置,
將配置界面中新增的“support for rt73 wireless usb device”選為模塊。
e、make modules
在drivers/usb/net/rt73目錄下生成rt73.ko驅(qū)動(dòng)文件,將rt73.ko放到根文件系統(tǒng)中,再燒寫到ARM板上無(wú)線網(wǎng)卡即可正常工作。
f、無(wú)線網(wǎng)卡的配置
無(wú)線網(wǎng)卡有managed、Ad-hoc兩種模式。managed模式稱為基礎(chǔ)設(shè)施模式,又稱接入點(diǎn)模式;Ad-hoc模式稱為點(diǎn)對(duì)點(diǎn)模式或無(wú)中心模式,用來(lái)在無(wú)線網(wǎng)卡之間進(jìn)行一跳通信。Ad Hoc網(wǎng)絡(luò)就是在Ad-hoc模式基礎(chǔ)上通過(guò)網(wǎng)絡(luò)協(xié)議使得該網(wǎng)絡(luò)支持多跳通信,因此該模式的使用和性能對(duì)Ad Hoc網(wǎng)絡(luò)的影響至關(guān)重要,以下是Ad-hoc模式配置方法,rausb0表示無(wú)線網(wǎng)卡:
1)、ifconfig rausb0 10.0.1.1 up
設(shè)置節(jié)點(diǎn)IP為10.0.1.1。
2)、iwpriv rausb0 set AdhocOfdm=2
設(shè)置rausb0為11g only模式,即54M速率模式,這是802.11g所能支持的最高速率。
3)、iwconfig rausb0 channel 3
設(shè)置信道為3。
4)、iwconfig rausb0 mode ad-hoc essid bcnl
設(shè)置網(wǎng)卡模式為ad-hoc,essid為“bcnl”。
上述配置過(guò)程中使用的“iw”開頭的命令都是無(wú)線工具集中的命令,其源碼包是wireless_tools.29.tar.gz,經(jīng)過(guò)交叉編譯后即可使用。
AODV路由協(xié)議的移植
本文使用的代碼是aodv-uu-0.9.5.tar.gz。AODV分為兩個(gè)部分,一個(gè)是內(nèi)核態(tài)模塊kaodv.ko,一個(gè)是用戶態(tài)模塊aodvd。AODV主要部分工作在用戶態(tài),用于維護(hù)內(nèi)核路由表。
AODV需要內(nèi)核支持,在內(nèi)核配置時(shí)要選上netfilter選項(xiàng)。先編譯內(nèi)核態(tài)模塊kaodv.ko,步驟如下:
a、將aodv-uu-0.9.5/lnx目錄的內(nèi)容拷到內(nèi)核源碼包linux-2.6.18/net/ipv4/kaodv目錄下,修改linux-2.6.18/net/ipv4/Kconfig,添加如下內(nèi)容:
config KAODV_UU
tristate support for aodv-uu adhoc routing protocol
b、在linux-2.6.18/net/ipv4/Makefile末尾添加如下的編譯選項(xiàng):
obj-$(CONFIG_KAODV_UU) += kaodv/
c、make menuconfig,找到如下的目錄項(xiàng):
Networking --->
[*] Networking support Networking options --->
support for aodv-uu adhoc routing protocol選為模塊編譯。
d、make modules將生成kaodv.ko。以下介紹用戶態(tài)aodvd編譯:
將aodv-uu-0.9.5/Makefile做適當(dāng)修改,使其在交叉編譯的環(huán)境下只編譯用戶態(tài)部分。
將得到的kaodv.ko和aodvd拷貝到根文件系統(tǒng)中,再燒寫到ARM板上。
insmod kaodv.ko
./ aodvd
這樣aodv協(xié)議就運(yùn)行起來(lái)了。在協(xié)議移植中有兩點(diǎn)需要注意:一是Makefile中ARM_CCFLAGS=-mbig-endian應(yīng)該注釋掉,否則運(yùn)行時(shí)會(huì)產(chǎn)生大小端混亂的問(wèn)題;二是將kaodv.ko和aodvd分開編譯,因?yàn)橥瑫r(shí)編譯時(shí)總是提示編譯器缺少文件,甚至用其他交叉編譯器依然不能解決問(wèn)題,而這些錯(cuò)誤大多是編譯內(nèi)核模塊產(chǎn)生的。
評(píng)論