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