微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > MIPS核的嵌入式Linux系统的家庭网关

MIPS核的嵌入式Linux系统的家庭网关

时间:07-22 来源:互联网 点击:
摘要:

描述了一种无内部互锁的信息平推流式的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所示。



0x81000000开始。数据在闪存中存放的地址空间如图3所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top