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