SOHO路由器的设计与实现
扫描二维码
随时随地手机看文章
摘要:利用ucLinux对网络技术的支持,提出了一种利用ucLinux来构建基于ARM9 CPU的SOHO路由器的设计思想。该方案的硬件平台核心采用美国MARVELL公司生产的88E6218微处理器芯片。文中详细描述了SOHO路由器的软、硬件设计结构及设计流程。
关键词:SOHO路由器;ucLinux;ARM9;以太网
O 引言
作为互联网的核心设备,路由器市场也越来越广阔。网络向家庭和办公室的不断普及,带动了小型路由器(即SOHO路由器)的需求。现在,市场上已经出现了大量面向SOHO的网络通信产品。其中ARM9系列微处理器以性能优越、价格低廉且技术成熟而成为目前路由器配置的首选。本文以ARM9核心芯片结合uclinux操作系统开发模式,详细介绍了一种SOHO路由器的设计和技术实现过程。
1 SOH0路由器设计思路
路南器是一种嵌入式设备,它离不开硬件设备和软件系统的支持,对其开发一般可以理解成三层模型:硬件设备、操作系统以及运行操作系统之上的应用程序。硬件设备主要由微处理器和围绕微处理器芯片的元件电路组成,它是设备功能实现的硬件基础;中间层就是操作系统,它可连接硬件部分和应用程序,操作系统既要完成对底层硬件的基本操作,又应为应用程序提供运行环境支持;操作系统之上就是应用程序,是负责实现针对性应用的程序代码,对应于路由器的网络架构和通信协议等功能模块。
2 硬件实现
SOH0路由器的硬件结构如图1所示。图中的核心是一颗美国MARVELL公司生产的88E6218高性能16/32位微处理器。该芯片是专门为SOHO路由器和以太网交换机而设计的,相对于目前市场上的网络通信处理器。88E6218具有性能高、成本低等优点。此外,该处理器还带有DSP指令扩展的ARM946E高性能CPU核,其工作频率达133/150 MHz,采用16/32位RISC体系,带有8 KB指令CACHE、8 KB数据CACHE和8 KB数据RAM,可支持uclinux和Vxwork操作系统内存管理,而且内置32位ARM指令系统和16位指令集。
88E6218具有集成的以太网接口和交换功能,它内部带有一个UNIMAC结构,可以实现基于QOS机制的快速以太网交换功能。其结构框图如图2所示。88E6218芯片具有5个支持IEEE802.3的自适应以太网接口和MAC地址端口,其中包括4个10/100BASE-TX的LAN端口和1个10/100BA-SE-TX或者100BASE-FX可选择模式的WAN端口。这些端口可支持802模式的各种路由的网络协议,也支持10/100 Mbps二种传输速率以及全/半双工传输功能。每个端口都有CRC效验、判断、转移功能,并具有片上数据包缓冲存储器,且符合IEEE 802.3ab,802.3x,802.p,802.-1Q标准的管理功能。此外,该器件还具有IEEE 802.1p流量优先权序列能力,可提供IEEE 802.1Q VALN功能且能够无阻塞交换。
88E6218芯片内的外围功能模块包括SDRAM/FLASH的控制器、JTAG接口、可编程通用I/O口、UART串口接口、中断控制器、存储控制器与及电源调整引脚等。另外,88E6218还有一个重要特点就是提供有PHY LED灯的控制器,可以用来指示端口收发器是否连接、接收、发送、全双工等各种工作状态,以通过LED显示判断网络的连接状态。
在图1所示的SOHO路由器中,其核心处理器就选用88E6218。该芯片提供了4个LNA口,可连接到10/100M以太网,另一个WAN口连接到广域网,各端口之间有交换功能。根据操作系统的存储和运行需要,芯片还设置了SDRAM存储器和FLASH存储器,SDRAM存储器由一片4×2 Mxl6 B的HY57V281620组成,是操作系统、应用程序运行和一些数据缓存的空间。FLASH存储器由一片512Kx8BIT的AM29LV040B组成,用于存放启动程序二进制的B00TLEADER文件、操作系统以及应用程序。20针的ARM JTAG口用于调试程序和烧写FLASH。RS232接口用于提供配置管理功能和反映信息运行情况。时钟电路由一个25 MHz的晶振和滤波电容组成,RESERT电路由一块DSl708TESA芯片加一个手动按扭组成低电平复位。电源电路的输入为5 V,通过DC变压后,可在电源调整引脚偏压下提供1.5 V、1.25 V、2.5V、3.3 V电压给处理芯片,以供芯片顺利工作。此外,电路中还有大量的滤波和稳压电容。为了让使用者能清楚路由器工作状态,系统连接了LED指示灯,可通过LED来判断SOH0路由器的连接状态和工作状态。
3 软件设计
SOH0路由器的软件结构如图3所示。本硬件平台以不含MMU (内存管理单元)的88E6218处理器为核心,因此,整个软件的开发可采用不带MMU的ARM微处理器的嵌入式操作系统uclinux为平台。uclinux是专门针对没有MMU单元的微处理器而设计的,它在标准linux基础上去除了MMU支持,并进行了适当紧缩、裁减和优化,再加上CGI(图形用户界面),因而可实现TCP/IP协议以及众多网络协议和路由交换功能,可满足SOHO路由器网络通信功能要求。UClinux采用romfs文件格式,它比Linux的ext3文件格式需要的空间更小,其代码加起来不超过900KB,可放
在ROM、RAM、FLASH中启动。由于uclinux本身是免费的,这些源代码可以直接从网上获得,只需相对应用系统的需求作必要的修改即可,因而可以大大减少开发成本。
图3所示是SOHO路由器的软件平台体系结构。图中的这些协议基本上覆盖了所有路由器交换协议,并在管理模块方面加入通过SNMP、WEB,故可方便地对路由器进行设置。这些交换协议可基本满足SOHO路由器的网络通信要求。
该SOHO路由器的软件平台由系统引导程序Bootloader、uCLinux内核、应用文件系统等组成。其中嵌入式系统引导程序bootloader的作用类似于PC机的BIOS的作用,但它比PC机的BIOS运行任务更多的地方是还要将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即启动操作系统。
3.1 系统引导
系统引导程序主要执行以下三个步骤:
首先是让PC指向复位地址入口处,即Ox200000处的Bootloader代码。由Bootloader初始化硬件设备,建立内存空间的映射图,以将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核准备好正确的环境。
其次由Bootloader将控制权交给操作系统内核的引导程序,并在设置好uCLinux内核的启动参数后,开始uCLinux内核的加载;
最后在uCLinux内核加载引导完成后启动init进程,以完成系统的引导过程。
3.2 对系统源码的修改
由于Bootloader依赖于具体的嵌入式板级设备配置,所以,通常需要修改Bootloader的源程序。本例在厂方提供的Bootloader源码里,对mvFlash.h中的static unsigned int mvFlashTypes[]函数的设置进行了修改,并将FLASH的型号换成上述硬件平台中的FLASH,同时重新设置了INTEL_FLASH。其三个初始化、读、写功能模块,即对应函数为unsigned int mvFlashlnit(unsigned int flashBaseAddress,unsig-ned int flashWidth,FLASH_DEV_MODE flashMode),unsigned int mvFlashWriteBlock(unsigned int offset,unsigned int numOfByte,char*blockAddress),unsigned int mvFlashReadBlock(unsigned int offset,unsigned int numOfByte.char*blockAddress)中的循环次数和执行条件设置参数也相应进行了修改,只有使Bootloader初始化的硬件和具体设计硬件平台的器件对应起来,才能正确的驱动硬件。
3.3 uCLinux内核的编译和生成
在uCLinux内核编译之前,首先要对内核进行配置。目录的修改一般都是在config里面进行的,可以用make menuconfig进入编译界面进行选择编译选项的配置。可根据硬件平台的构造参数将必要选项选中,并将没有必要的选项去掉。系统类型的配置应选择相应的内核然后是块设备选择和配置以及在块设备选择和配置之上的文件系统配置。一旦串口驱动和uCLinux文件系统以及应用系统等设置好,就可以完成uCL-inux内核的配置,修改好后就可以编译内核。接下去执行命令make dep,make clean,make lib_only,make user onlv,make romfs,make image.共6个步骤,最终在image目录下生成2个文件zImage和romfs,(分别为内核映象文件和文件系统的映象文件)。这就是最后要烧录到硬件平台里FLASH中的文件。这样就完成了uCLinux的移植。
4 结束语
本文较为具体地介绍了基于嵌入式ARM9SOHO路由器的设计和实现方法,并详细阐明了它的硬件结构,重点叙述了该路由器的软件设计思路和方法(包括操作系统的移植)。当然,路由器具有很多相应的功能,都需要通过软件开发来实现,现在最新的uclinux已经是2.6内核了,可以用它实现更多网络功能。