基于嵌入式Linux系統(tǒng)的3G/4G路由器設計
首先需要將usb- modeswitch工具移植至開發(fā)板,移植過程如下:
① 下載并解壓usb-modeswitch一1.2.5.tar.bz2。
② 進入usb-modeswitch目錄,修改Makefile,指定交叉編譯器:
CC = arm-none-linux-gnueabi - gcc
$(PROG):(OBJS)(CC) - o $(PROG)(OBJS)
(CFLAGS)… 。 - I/home/libusb- 0.1.12/instal1/inc1ude
(LIB) … 。 - L/home/libusb- 0.1.12/install/lib
③ make。
將生成的usb_modeswitch二進制執(zhí)行文件拷人Linux系統(tǒng)中,并修改usb_modeswitch目錄下usb_mode- switch.conf配置文件,在該文件末添加該無線上網(wǎng)卡的VID設備號和其usb-storage子設備PID設備號,然后指定其modern子設備號。具體配置信息如下:
Default Vendor = 12D1
Default Product = 1446
Target Vendor = 12D1
Target Product = 1506
CheckSuccess = 20
HuaweiMode = O
通過命令usb_modeswitch - W - c usb_modeswitch.conf對無線上網(wǎng)卡進行USB設備的模式轉(zhuǎn)換,轉(zhuǎn)換成功后無線上網(wǎng)卡即工作在調(diào)制解調(diào)器模式下,同時可通過命令 ls/dev可以查看到Linux系統(tǒng)生成4個虛擬USB轉(zhuǎn)串口設備,即ttyUSB0,ttyUSB1,ttyUSB2和ttyUSB3,可以通過這幾個串口進行PPP撥號,使得3G/4G路由器可以接至TD-SCDMA、WCDMA以及TD-LTE實驗網(wǎng)中。
3.2 無線局域網(wǎng)的組建
該無線路由器利用無線網(wǎng)卡在嵌入式Linux系統(tǒng)中組建一個小型的無線局域網(wǎng),一方面提供給智能終端等設備接入,另一方面將無線局域網(wǎng)接入至3G/4G 網(wǎng)絡。其基本流程如圖4所示。
圖4 無線局域網(wǎng)組建流程圖
3.2.1 無線網(wǎng)卡驅(qū)動加載
TL-WN821N 型無線網(wǎng)卡采用的WLAN芯片組為Realtek公司的提供的RTI 8192cu芯片,Realtek公司提供了基于Linux系統(tǒng)的該芯片組驅(qū)動源碼,根據(jù) 編譯環(huán)境及Linux內(nèi)核對驅(qū)動源碼進行編譯,即可生成該無線USB網(wǎng)卡的驅(qū)動。具體步驟如下:
① 下載驅(qū)動源碼rtl8188c 8192c usb linux - v3.4.4- 4749.2.121105.tar.gz,并解壓。
② 進入到驅(qū)動源碼包中,修改Makefile文件,指定編譯環(huán)境及Linux內(nèi)核:
CONFIG_PLATFORM_NEW = y
ifeq($(CONFIG_PLATFORM_NEW ),y)
EXTRA_CFLAGS + = - DCONFIG_LLTTLE_ENDIAN
ARCH :arm
CROSS_COM PILE := arm-none-linux-gnueabi-
KSRC=/home/linux-2.6.32-devkit8500
endif
③ make,生成該無線網(wǎng)卡的驅(qū)動8192cu.ko。
然后加載該驅(qū)動,再通過命令ifconfig wlan0 up,將無線網(wǎng)卡的網(wǎng)口wlan0掛載至Linux系統(tǒng)中,可通過ifconfig命令查看該網(wǎng)口的基本配置信息。
3.2.2 AP模式轉(zhuǎn)換
將無線網(wǎng)卡驅(qū)動加載成功之后,該無線網(wǎng)卡的默認工作模式為工作站模式,即作為客戶端搜索周圍的無線接人點,以接人到其他的無線局域網(wǎng)中,而 3G/4G路由器需要利用無線網(wǎng)卡的模式轉(zhuǎn)換工具hostapd將該網(wǎng)卡的工作模式由工作站模式切換為AP模式,也稱接入點模式,并利用該模式建立一個無線局域網(wǎng)。hostapd在Linux系統(tǒng)中的移植過程如下:
① 下載并解壓hostapd_0.8_rtw_20120803.zip。
② 進入主目錄,修改Makefile,指定交叉編譯器:
CC = arm-none-linux-gnueabi-gcc
③ make。
生成hostapd、hostapd_cli,將這兩個二進制文件和rtl_hostapd.conf復制到嵌入式Linux系統(tǒng)中。在 rtl_hostapd.conf配置文件中,可以設置該無線網(wǎng)卡的服務集標識(SSID)、支持的802.11協(xié)議版本、工作頻率、無線信道以及加密的方式等一系列該無線局域網(wǎng)的配置信息。通過執(zhí)行命令hostapd rtl_hostapd.conf-B,完成該無線網(wǎng)卡的工作模式的切換。
3.2.3 DHCP配置
在無線網(wǎng)卡的AP模式切換完成之后,需要通過DH-CP協(xié)議配置該無線局域網(wǎng)的動態(tài)地址池及其網(wǎng)關,該無線局域網(wǎng)會根據(jù)DHCP協(xié)議從配置的地址池中,自動給接入到該無線局域網(wǎng)的智能終端等設備分配一個IP地址。其DHCP協(xié)議的配置文件dhcp.conf具體如下:
start 192.168.0.20
end 192.168.0.254
interface wlan0
opt dns 8.8.4.4
opt subnet 255.255.255.0
opt router 192.168.0.1
opt lease 864000
然后在Linux系統(tǒng)中執(zhí)行udhcp-fS dhcp.conf,啟動DHCP協(xié)議。之后該無線網(wǎng)卡會建立一個無線局域網(wǎng),并給接入到此無線局域網(wǎng)中的智能終端等設備自動分配一3.3 iptables連通
在實現(xiàn)3G/4G 網(wǎng)絡的接人和無線局域網(wǎng)的組建之后,該路由器采用Linux系統(tǒng)中的IP信息報過濾系統(tǒng),即iptables,將3G/4G網(wǎng)絡和組建好的無線局域網(wǎng)連通。iptables系統(tǒng)需要Linux系統(tǒng)內(nèi)核中的網(wǎng)絡數(shù)據(jù)包過濾框架的支持,需要重新配置內(nèi)核,選中內(nèi)核中Networking Support → Networking options → Network packet filtering framework,將其框架編譯進Linux內(nèi)核,然后需要對iptables進行移植,其移植過程如下:
① 下載并解壓iptablesj.4.3.1.tar.gz。
② 進入主目錄,配置編譯選項:
。 /configure-prefix=/usr/local/iptables--host = arm-none-linux-gnueabi--with-curnel=/home/SD_tools/linux-2.6.32-devkit85O0
③ make并make install。
將生成的iptahles二進制執(zhí)行文件復制到Linux系統(tǒng)中,并編寫iptables系統(tǒng)的運行腳本文件net-share,該運行腳本文件配置了IP數(shù)據(jù)包的流向、進入網(wǎng)絡的接口等一系列規(guī)則,該路由器進入3G/4G 網(wǎng)絡的接口為無線上網(wǎng)卡進行撥號后產(chǎn)生的pppO網(wǎng)絡接口,其內(nèi)容如下:
echo“1”》 /pr0c/sys/net/ipv4/ip- forward
iptables-F
iptables-P INPUT ACCEPT
iptables-P OUTPUT ACCEPT
iptables-P FORW ARD ACCEPT
iptables-t nat-A POSTROUTING -o ppp0-j MASQUERADE
評論