描述了一種無內部互鎖的信息平推流式的32位嵌入式微處理器下,嵌入式Linux操作系統環境的家庭網關的體系結構。通過這種構架的實現和二次開發相應的驅動程序、應用程序和管理接口并結合無線通信技術實現家庭網關,使家庭網關具備支持非對稱數字用戶環路、無源光網絡、以太網數據通過同軸電纜傳輸等接入方式的上行接口,并提供網絡電話、互聯網協議電視、個人計算機、通用串行總線接口、通用異步接收/發送裝置等下行接口和無線相容性認證的無線信號。家庭網關可以通過萬維網瀏覽器、基于簡單網絡管理協議的管理方式和命令行界面等多種方式靈活的進行信息交互、配置、更新及遠程控制管理。
隨著以高速、融合、精品為特征的大寬帶時代的全面到來,高寬帶傳輸、全方位融合、多業務綜合將是家庭網絡及業務應用的發展趨勢。預計未來的10年中,國內家庭網關的市場容量將在200億元以上。盡管國內已有少數文獻[5]描述了以無內部互鎖的信息平推流式的微處理(Microprocessorwithoutinter-lockedpipedstages,縮寫為MIPS)核的32位嵌入式微處理器作為硬件平臺,開發家庭網關,并取得了較好的研究成就,但距離工業應用還有一定時差。結合無線通信技術,通過移植嵌入式Linux操作系統,在此基礎上開發相應的驅動程序、應用程序和管理接口來實現家庭網關。家庭網關具備上行接口,支持非對稱數字用戶環路(AsymmetricDigitalSubscriberLine,縮寫為ADSL)、無源光網絡(PassiveOpticalNetwork,縮寫為PON,)、以太網數據通過同軸電纜傳輸(EthernetoverCoax,縮寫為EOC)等接入方式,提供網絡電話(VoiceoverInternetProtocol,縮寫為VOIP)、互聯網協議電視(InternetProtocolTelevision,縮寫為IPTV)、個人計算機(PersonalComputer,縮寫為PC)、通用串行總線接口(UniversalSerialBUS,縮寫為USB)、通用異步接收/發送裝置(UniversalAsynchronousReceiver/Transmitter,縮寫為UART)等下行接口,通過高速外圍元件接口(PeripheralComponentInterfaceExpress,縮寫為PCIE)與無線相容性認證(WirelessFidelity,縮寫為WiFi)模塊相連提供WiFi無線信號。家庭網關能夠靈活添加應用程序、接口模塊,遠程管理家庭網絡的智能終端設備實現業務的分發和配置管理控制。
1 硬件系統
1.1系統結構
家庭網關的硬件系統結構如圖1所示,以32位的嵌入式MIPS微處理器芯片為核心,由外存儲器閃存(FLASH)、雙倍速率同步動態隨機存儲器(DoubleDateRate,縮寫為DDR,)、WiFi模塊、VOIP模塊、網絡交換模塊、USB存儲模塊、發光二極管(LightE-mittingDiode,縮寫為LED)模塊、串口模塊、電源模塊等構成。
1.2系統功能與實現
家庭網關可以采用多種控制方式靈活方便地與用戶進行交流[6]。外存儲器暫存數據,再傳遞到微控制單元(MicroControlU-nit,縮寫為MCU)中。閃存通過串行外設接口(SerialPeripheralInterface,縮寫為SPI)總線與MCU 相連,DDR通過介質無關接口(MediumIndependentInterface,縮寫為MII)與MCU 相連。WiFi模塊通過PCIE接口與MCU 相連,提供2.4GHz的無線信號。VOIP模塊通過MII接口與MCU 相連,其下端口聯接普通電話機,可以通過電話機查詢、設置家庭網關中VOIP口的網絡狀態。網絡交換模塊包括上聯接口和下聯接口。微處理器內部集成了一個交換引擎,提供五個符合802.3協議的10/100Mbps快速以太網MAC/PHY接口,可作為系統的上聯端口和下聯端口。上聯端口為下行提供數據信號,下聯端口可以連接IPTV、PC等設備,并能夠自由組網配置成VLAN。USB 存儲模塊用于存儲家庭網關的配置信息。
LED模塊顯示系統狀態,由MCU 的通用輸入/輸出(GeneralPurposeInputOutput,縮寫為GPIO)口控制,LED的不同狀態表示系統的不同狀態。串口模塊結合超級終端實現實時打印家庭網關的運行狀態信息,并可以設置家庭網關的配置信息,如環境變量、內存信息、相關版本信息等,也可以更新嵌入式家庭網關的文件系統、鏡像文件等。電源模塊為整個系統提供電源。
2 軟件系統
家庭網關的軟件系統結構如圖2所示,主要分為3個層次:Linux內核包括進程管理、文件管理、內存管理、中斷和中斷處理、系統初始化等;硬件驅動層包括WiFi、VOIP模塊、串口、以太網、LED 等的驅動;應用程序層通過內核的調用,實現相應的應用服務,如串口通信程序、Web方式訪問等。
硬件驅動層主要是提供操作系統和應用程序所需的驅動[7]。該層主要由板級初始化程序、與系統軟件相關的驅動、與應用軟件相關的驅動等3種類型的程序組成。板級初始化程序即引導加載程BootLoader,用來完成整個系統的加載啟動任務。在該系統中選擇U-Boot作為引導加載程序。系統上電后,U-Boot程序初始化系統的硬件環境,如:嵌入式微處理器、中斷控制器、存儲器、直接內存存取(DirectMemoryAccess,縮寫為DMA)和定時器的初始化。將系統的軟硬件環境帶到一個合適的狀態,以便為后續調用操作系統做好準備。與系統軟件相關的驅動是操作系統和中間件等系統軟件必備的驅動程序,具體開發按照系統軟件的不同需求進行。操作系統內核所需的硬件支持一般都已集成到嵌入式微處理器里了,因此開發人員只需在操作系統廠商提供的內核驅動的基礎上編寫相關驅動程序如:以太網驅動、串口驅動、外存驅動等驅動程序。與應用軟件相關的驅動不一定需要與操作系統連接,這些驅動的設計和開發由實際應用決定。
Linux操作系統移植主要包括BootLoader的編寫和移植、Linux內核移植與配置以及Linux文件系統移植與配置[8]。
2.1U-Boot移植
該家庭網關系統的BootLoader采用U-Boot。在U-Boot/Board目錄下添加家庭網關開發板的配置文件,修改U-Boot目錄下的Makefile文件,包括設置編譯環境和建立編譯配置項。確認默認的交叉編譯器與本機的交叉編譯器是否一致,若不一致則需要對編譯環境進行重新設置,宿主機的交叉編譯器為gcc。建立編譯配置項,在Makefile文件中添加編譯語句,如:
gw_config:unconfig
@ 》include/config.h
@echo“#defineCONFIG_mipgw1”烅include/config.h
@./mkconfig-agw mipsmipsgw mipgw mipgw
在U-boot/Board/gw目錄下添加Makefile文件,建立文件之間的依賴關系。如:
OBJS=$(BOARD).oflash.o.。/common/mipgw_pci.o 。./common/mipgw_flash.o 。./common/
mipgw_s26_phy.o
通過引用變量來指定目標文件,以便于適用于該模塊的不同版本的開發,也是該系統的一個特點。在U-Boot/CPU/MIPS的目錄下添加存放內存控制器的配置文件。
在U-Boot/Board路徑里添加初始化MCU 的USB配置、GPIO 口的配置、寄存器、數據段的文件和初始化WiFi模塊主芯片GPIO 口的文件。
2.2Linux內核移植
操作系統層包括嵌入式內核、TCP/IP(TCP-TransferControlProtocol,傳輸控制協議,IP-Internet Protocol,網際協議)網絡系統、文件系統、圖形用戶接口(GraphicalUserInterface,縮寫為GUI)系統和電源管理等部分。其中嵌入式內核是必備的基礎部分,其他部分可根據嵌入式系統的不同需要進行取舍[9]。在家庭網關系統中,嵌入式操作系統環境為Linux操作系統,嵌入式內核為MIPS內核,文件系統為jffs2。
在系統軟件包的根目錄下創建Linux目錄,在其目錄下添加Kernels文件夾,存放Linux內核源碼。修改內核源碼文件夾下的Makefile文件,使其編譯環境與宿主機的編譯環境一致,具體代碼如下所示:
SUBARCH := mips
ARCH ? = $(SUBARCH)
CROSS_COMPILE ? =
UTS_MACHINE := $(ARCH)
CONFIG_SHELL := $(shellif[-x“$$BASH”];thenecho$$BASH;\
elseif[-x/bin/bash];thenecho/bin/bash;\
elseechosh;fi;fi)
HOSTCC= gcc
HOSTCXX= g++
HOSTCFLAGS=-Wall-Wstrict-prototypes-O2-fomit-frame-pointer
HOSTCXXFLAGS=-O2
2.3文件系統移植
嵌入式文件系統包括Ramdisk、Jffs2、Yaffs、Cramfs、Romfs和Ramfs/Tmpfs[10]。該系統的文件系統選擇Jffs2。在文件系統的文件夾Rootfs里添加rcS文件,指定需要掛載的文件系統、掛載點、配置初始化進程及解壓后存放的位置,通過環境變量來傳遞接口。rcS文件的具體內容如下所示:
#! /bin/sh
mount-a
mount-oremount+w/
mount-tramfs-nnone/tmp
exportPATH=$PATH:/etc/ath
insmod/lib/modules/2.6.15/net/ag7240_mod.ko
exportETH0=eth0
exportETH1=eth1
ifconfig$ETH0up
ifconfig$ETH1up
2.4內存管理
操作系統中的內存管理單元負責管理整個系統的物理地址空間和虛擬地址空間,它是這個系統得以存在和運行的基礎[11]。該家庭網關系統中,數據均存放在4M 的閃存里,當系統啟動后再將數據通過DDR 映射到MCU 的RAM 中,從地址0x81000000開始。
3 管理接口
3.1Web接口
Web功能是家庭網關系統提供給用戶的面向對象的操作接口。用戶通過WEB瀏覽器訪問,可以對家庭網關的各功能模塊進行設置,即對連接在家庭網關上的設備的管理控制。如:對以太網口進行VLAN 配置,自由組織虛擬網絡;對VOIP口的網絡狀態進行配置,自行設置IP、VOIP業務等信息;對WiFi模塊進行設置,選擇虛擬信道、設置無線網絡的參數等。家庭網關的軟件系統通過常見的應用程序接口模塊CGI,連接CGI接口和處理HTML靜態文本文件實現Web功能。
Web服務器選擇Httpd服務器,通過移植Httpd源碼并融合在Busybox里實現。在cgiMain()函數中描述了Httpd服務器建立服務、接收請求、處理請求、日志文件及斷開連接的過程。在Httpd.c文件中添加函數來設置Web服務器的配置,使Web服務器啟動時就能根據當前環境完成Web服務器的配置。指定的HTML頁面文件放到/usr/www 目錄下,cgi外部擴展程序放到/usr/www/cgi-bin目錄下,把鏈接融合在cgiMain里。通過在cgiMain()函數里調用環境變量建立服務器與CGI程序之間的信息交互,從而實現各個網頁文件之間的鏈接。
如果家庭網關的IP地址為192.168.100.12,把家庭網關與PC機連接在同一個網絡里,在Web瀏覽器地址欄輸入192.168.100.12即可顯示家庭網關的配置頁面。可以實現各個頁面之間的動態連接,修改家庭網關的配置參數。
3.2CLI接口
加載簡單遠程登錄服務器Telnetd,通過命令行界面(CommandLineInterface,縮寫為CLI)方式,使Telnetclient就可以登錄到家庭網關系統,結合CLI提供的各種命令接口,實現對家庭網關的配置、測試和升級等操作。在家庭網關的軟件系統中,Telnetd工作時連接一個偽終端設備,然后創建一個登陸進程,在偽終端側有標準的輸入、輸出、錯誤。Telnet操縱的偽終端主方執行telnet協議并傳遞遠程客戶端和登錄過程中的字符。
在命令行窗口輸入“telnet192.168.100.12暠出現用戶名、密碼提示窗口。輸入正確的用戶名和密碼,即可訪問家庭網關,查看系統的文件。打開TFTP服務器,通過命令tftp可以更新頁面文件等。
3.3UART接口
初始化MCU 內置的UART接口,設置串口屬性如:波特率為115200、8位數據位、無奇偶校驗、1位停止位、無流控。通過超級終端人機交互界面可以和家庭網關進行信息交互,實時監控家庭網關系統的運行狀態、修改控制各類配置信息、更新U-boot、Linux內核、文件系統、映像文件等。
打開超級終端、TFTP服務器,設置串口屬性,啟動家庭網關后,即可打印輸出家庭網關的運行狀態。進入更新文件狀態,設置環境變量,如輸入:
tftp0x80060000u-boot.bin//將u-boot.bin文件放在緩存區
erase0x9f000000+0x40000//擦除存放U-Boot文件區域的內容
cp.b$fileaddr0x9f000000$filesize//把緩存區的文件復制到存放U-Boot文件的區域
即可更新U-Boot文件。按此命令格式,輸入對應的文件名和地址,文件系統、映像文件也同樣可更新。
4 結語
該文描述了一個以MIPS微處理器為核心、以嵌入Linux操作系統為開發環境的家庭網關。該家庭網關通過移植U-Boot、Linux內核、文件系統定制軟件系統,添加Web、CLI、UATR 等接口功能,實現通過Web、CLI和SNMP等多種方式靈活的與家庭網關進行信息交互、配置、更新。經測試該家庭網關系統實現了多業務功能,上聯接口支持多種接入方式能夠為網絡交換模塊提供數據信號,下聯接口能提供VOIP功能、2.4GHz的無線信號,以太網口之間能自由配置VLAN。
試驗測試的結果表明,該家庭網關適合高寬帶傳輸、全方位融合、多業務綜合的家庭網絡及業務應用的發展需求。
評論
查看更多