郭育紅,歐海燕
(1.杭州??低晹?shù)字技術有限公司,杭州310012;2.杭州電子科技大學,杭州310018)
一直以來,用戶接入Internet的業(yè)務大都采用固網,移動網所能提供的Internet接入業(yè)務因為網絡速度受限而無法普及使用。2009年1月,工業(yè)和信息化部發(fā)放了我國的3G牌照。3G時代的到來,為移動網的Internet無線高速接入提供了良好的解決方案。第三代移動通信系統(tǒng)傳輸速率的最低要求為:在高速移動環(huán)境中144kbps,步行慢步移動環(huán)境中384kbps,靜止狀態(tài)下2Mbps。該速率完全能滿足普通用戶接入 Internet的需要。國際電信聯(lián)盟(ITU)接受的3G標準主要有以下三種:WCDMA、CDMA2000和 TD-SCDMA。隨著國內 WCDMA、CDMA2000、TD-SCDMA三種標準3G網絡的進一步覆蓋,越來越多的個人使用3G移動接入互聯(lián)網,為了讓多臺計算機組成的小型無線局域網能夠共享3G寬帶接入服務,就需要使用能夠接入3G網絡的路由器設備;另外,在安防監(jiān)控、電力、交通、建筑等行業(yè),采用3G路由器對原有網絡接入設備進行改造,可以提高不同行業(yè)應用對帶寬的要求,并且將改變特殊環(huán)境下有線接入難以實施的狀況。CDMA2000是由窄帶CDMA(CDMA IS95)技術發(fā)展而來的寬帶CDMA技術,該標準提出了從CDMA IS95(2G)-CDMA2000 1X-CDMA2000 1X EVDO(3G)的演進策略。CDMA2000 1X EVDO是CDMA2000 1X的增強型技術。它是針對支持高速無線互聯(lián)分組數(shù)據的傳輸而優(yōu)化的網絡和頻譜資源。本文討論了基于ARM&Linux 平臺和中興通訊的CDMA2000 1X EVDO模塊MC8630的EVDO 3G路由器設計。在EVDO網絡環(huán)境下,它可以以無線的方式接入Internet,同時可以組建小型局域網,局域網內的計算機可以通過它訪問Internet。
路由器的硬件電路結構簡圖如圖1所示。根據系統(tǒng)要求,路由器主芯片的工作頻率應該在200MHz左右。目前市場上推出的3G無線模塊大都采用USB的方式同主控芯片連接,因此需要路由器的主控芯片帶USB HOST接口。本文討論的3G路由器采用Atmel公司的工業(yè)級ARM9微處理器AT91RM9200作為主控芯片。AT91RM9200是基于ARM920T內核構建的具有豐富外設,低功耗、低成本、高性能的32位微處理器,可廣泛應用于工業(yè)、自動控制、通信等領域。工作在180MHz頻率時,處理速度高達200MIPS,片內含有16K的SRAM和128K的ROM。具有豐富的接口資源,包括USB2.0全速USB HOST接口,10/100 Base-T型以太網接口,帶有獨立的媒體接口(MII)或簡化的獨立媒體接口(RMII),4個通用同步/異步接收/發(fā)送器(USART)等[1]。由于其具有優(yōu)良的性能,在業(yè)內得到越來越廣泛的應用,并且很好地得到了嵌入式 Linux、VxWorks和WinCE等常用嵌入式操作系統(tǒng)的支持,可以顯著地減少在該平臺上移植相關操作系統(tǒng)的工作,縮短產品研發(fā)時間。
在嵌入式系統(tǒng)中,常用的電源有低壓差穩(wěn)壓電源(LDO)和開關電源(DC/DC)。低壓差穩(wěn)壓電源是一種線性穩(wěn)壓電源。穩(wěn)壓電源自身的功率損耗與輸入輸出電壓的壓差成正比?,F(xiàn)在常用的低壓差穩(wěn)壓電源的壓差一般可達1.2V,具有外圍電路相對簡單,價格便宜等特點。DC/DC開關電源用PWM脈寬調制來調節(jié)電路開關器件的導通時間,從而控制電路的平均輸出電壓。開關電源具有輸出功率大,轉換效率高等優(yōu)點,但相對于LDO,開關電源的設計較為復雜,LC濾波電路性能要求較高,同時對PCB布線要求也較高。本文討論的路由器采用12V直流電源供電,采用了一片 DC/DC開關電源LM2596-5.0來產生5.0V電源,一片DC/DC開關電源LM2596-3.3來產生3.3V電源,一片低壓差穩(wěn)壓電源LM1117來產生1.8V電源。
如圖1所示,通過微處理器的地址/數(shù)據總線外擴了16M的NOR FLASH E28F128J3A-150和8M的SDRAM MT48LC8M16A2。本文討論的3G路由器采用中興通訊公司的MC8630 Evolution Data Only(EVDO)3G無線模塊。該模塊具有語音、短信和高速數(shù)據業(yè)務等功能,可廣泛應用于高速數(shù)據傳輸、智能抄表、智能家電和車載監(jiān)控等領域。該模塊采用CDMA2000 1X EVDO制式,工作在800MHz頻段,發(fā)射時824~849MHz,接收時869~894MHz。該模塊采用了主天線和輔助天線,通過雙天線接收分集技術和均衡技術,使得前向數(shù)據速率最高可達3.1Mbps,反向數(shù)據速率最高可達1.8Mbps,通過USB 2.0接口和微處理器AT91RM9200相連接[2]。
圖1 路由器結構框圖
以下討論的3G路由器的軟件設計基于嵌入式Linux來實現(xiàn)。Linux是真正意義上的多任務、多用戶操作系統(tǒng),內置了TCP/IP協(xié)議,它提供了強大的網絡功能,已經被成功移植到各種硬件平臺,可以大大縮短產品的研發(fā)時間,它是免費開源的,用戶可以根據嵌入式系統(tǒng)FLASH和SDRAM等資源受限等特點,針對嵌入式產品的功能需求對嵌入式操作系統(tǒng)進行裁減,其高度模塊化的設計使得添加部件非常便利。在本文所討論的嵌入式3G路由器產品設計中,移植了版本為2.6.23的Linux內核,并在該內核基礎上完成了Ramdisk、jffs2文件系統(tǒng)以及相關應用程序的開發(fā)。其可執(zhí)行鏡像依次存放在系統(tǒng)的存儲設備上,系統(tǒng)采用的存儲設備為16M的Nor FLASH,系統(tǒng)的各個軟件模塊在其中的存放位置如表1所示。
表1 FLASH中鏡像存放地址
經過重新定制的內核,已經集成支持了系統(tǒng)板上絕大多數(shù)外圍設備的驅動程序,包括串口、以太網接口以及USB HOST等設備的驅動程序。但對于3G路由器,還需要對具體3G模塊支持的驅動程序。Linux下對于一個硬件設備的驅動,可以分為兩種方式:一種是直接加載到內核模塊代碼中,啟動內核時就會驅動此硬件設備;另一種是以模塊的方式,編譯后生成一個.o文件,當應用程序需要時再加載到內核空間運行[3]。ZTE MC8630 EVDO模塊最高速率達3.1Mbps,采用USB 2.0接口與CPU連接。對于標準USB接口的調制解調器設備,一般采用映射為串口方式進行通信,MC8630也不例外。在Windows下使用USBlyzer進行觀察,得到該設備的USB配置信息,其中 Vendor ID為0x19D2,Product ID為0xFFFE。在Linux 2.6.23內核當中,已經帶有通用型的USB轉串口驅動USB Generic Serial Driver,可以在內核配置中將其選擇為模塊編譯,配置方式如下所示:
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
執(zhí)行make modules編譯出相應的模塊usbserial.ko后,再通過NFS或者TFTP下載到目標板上,執(zhí)行如下命令進行驅動加載:
insmod usbserial.ko vendor=0x19d2 product=0xfffe
這樣,將在文件系統(tǒng)/dev下面生成ttyUSB0、tty-USB1、ttyUSB2、ttyUSB3 這四個節(jié)點。其中,ttyUSB0為數(shù)據業(yè)務節(jié)點,ttyUSB1為診斷節(jié)點,ttyUSB2為語音節(jié)點,ttyUSB3為擴展節(jié)點。如此就可以使用Linux下串口編程的方法來操作 ttyUSB0和 tty-USB1,從而實現(xiàn)數(shù)據撥號功能及短信功能。
一般來說,路由器的功能可以分為網絡管理、網絡服務、網絡安全和系統(tǒng)管理等四個方面。本文以下部分僅對iptables工具和動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol,DHCP)功能的實現(xiàn)做了簡單介紹。
從1.1內核開始,Linux就已經具備了包過濾功能,從2.4內核以后開始采用iptables內核包過濾管理工具,它可以增加、插入或者刪除核心包過濾表格(鏈)中的規(guī)則。實際上執(zhí)行這些過濾規(guī)則的是netfilter及其相關模塊。netfilter包含了INPUT、FORWARD和OUTPUT 3個鏈,每一條鏈中包含了若干條規(guī)則。當一個數(shù)據包到達一個鏈時,系統(tǒng)就會從第一條規(guī)則開始檢查,判斷是否符合該規(guī)則所定義的條件。數(shù)據包在filter表中的流程如圖2所示。
圖2 數(shù)據包在filter表中的流程
當有數(shù)據包進入系統(tǒng)時,系統(tǒng)首先根據路由表決定將數(shù)據包發(fā)給哪一條鏈。如果數(shù)據包的目的地址是本機,則系統(tǒng)將數(shù)據包發(fā)往INPUT鏈,如果通過規(guī)則檢查,則該包發(fā)給相應的本地進程處理,如果沒有通過規(guī)則檢查,系統(tǒng)就會丟棄該數(shù)據包;如果數(shù)據包的目的地址不是本機,則這個包將被轉發(fā),系統(tǒng)將數(shù)據包發(fā)往FORWARD鏈,如果通過規(guī)則檢查,該包將被發(fā)給相應的本地進程處理,如果沒有通過規(guī)則檢查,系統(tǒng)就會將這個數(shù)據包丟掉;如果數(shù)據包是由本地進程產生的,則系統(tǒng)將其發(fā)往OUTPUT鏈,如果通過規(guī)則檢查,則該包被發(fā)給相應的本地進程處理,否則系統(tǒng)丟棄該數(shù)據包。使用iptables工具編寫的規(guī)則舉例如下:
使用IP包過濾功能,如:
iptables-A FORWARD-p tcp-s 202.96.102.3-d 192.168.8.33-dport 80-j DROP
該規(guī)則在FORWARD鏈上,將源地址為202.96.102.3發(fā)往目的地址為192.168.8.33端口號為80的tcp數(shù)據報丟棄。
目的地址NAT功能,如:
iptables-t nat-A PREROUTING-p tcp-i ppp0-dport 80 -j DNAT -to-destination 192.168.8.33:10000
該規(guī)則在PREROUTING鏈上,將從ppp0接口接收到的目的端口為80的tcp數(shù)據包轉發(fā)至目的地址為192.168.8.33的設備上,目的端口改為10000。
DMZ功能,如:
iptables-t nat-A PREROUTING-i ppp0-j DNAT-to-destination 192.168.8.64
該規(guī)則將192.168.8.64設備設置為DMZ主機。
DHCP可讓主機自動進行網絡配置。這個協(xié)議用于向計算機自動提供IP地址、子網掩碼和路由信息[4]。網絡管理員通常會分配某個范圍的IP地址來分發(fā)給局域網上的客戶機。當設備接入這個局域網時,它們會向DHCP服務器請求一個網絡配置信息,DHCP服務器會給每個請求的設備分配一個地址,直到分配完該范圍內的所有 IP地址為止。Linux下常見的DHCP軟件有dhcpd和dhcpcd,dhcpd用于搭建DHCP服務器,dhcpcd是DHCP的客戶端程序,用于接收DHCP服務器的配置信息。啟動時dhcpd自動讀取它的配置文件/etc/config/dhcpd.conf。dhcpd將客戶的租用信息保存在/etc/config/dhcpd.leases文件中。本文所討論的3G路由器的DHCP配置信息如下所示:
當dhcpd啟動后,就可以向DHCP客戶端配置以上信息。
本文討論的3G路由器提供了小型局域網到Internet的無線接入方式,系統(tǒng)結構如圖3所示。路由器提供了多達10個以太網接口,經實際測試,當單臺PC機通過路由器接入Internet,使用迅雷等下載工具下載數(shù)據時,最高速率可達3.1Mbps。
圖3 系統(tǒng)連接圖
基于ARM9微處理器AT91RM9200和嵌入式Linux操作系統(tǒng)設計實現(xiàn)了EVDO 3G路由器,系統(tǒng)方案可行,性價比高,具有較大的產品化價值。該方案只需做少量的修改即可適應于WCDMA和TDSCDMA等其它制式的3G路由器設計。本文討論的3G路由器已經進入小批量試制階段,在電力視頻監(jiān)控、公交視頻監(jiān)控等高速無線數(shù)據傳輸領域進行了試用,取得良好的效果。
[1] Atmel Corporation.ARM920T-based Microcontroller AT91RM9200[EB/OL].http://www.atmel.com/dyn/resources/prod_documents/doc1768.pdf,2009.
[2] ZTE Corporation.中興通訊MC8630模塊技術規(guī)格書[EB/OL].http://www.cmtekchina.com/doc/中興通訊%20MC8630模塊技術規(guī)格書_V1.0.pdf,2008.
[3] 羅苑棠.嵌入式Linux驅動程序和系統(tǒng)開發(fā)實例精講[M].北京:電子工業(yè)出版社,2009.
[4] R Droms.RFC2131,Dynamic Host Configuration Protocol[EB/OL].March 1997.