解析MPC860和VxWorks在硬件防火墙的应用

出处:李正熙,于兴晗,杨 扬 朱 兴 发布于:2011-08-29 13:50:58

  硬件防火墙一般使用经过内核编译后的Linux,凭借Linux本身的高可靠性和稳定性保证了防火墙整体的稳定性,其稳定性是由于它没有像其他操作系统一样内核庞大且漏洞百出。系统的稳定性主要取决于系统设计的结构。计算机硬件的结构自从1981设计开始就没有作特别大的改动,而连续向后兼容性使那些编程风格极差的应用软件勉强移植到Windows的版本,Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、授权等,这为网络多用户环境中的用户提供了必要的安全保障。与传统的PC架构硬件防火墙卡相比,利用MPC860实现的硬件防火墙在系统结构、体积、功耗、成本以及应用上具有很大的优势。本文介绍的利用MPC860开发的硬件防火墙设计方案,不仅充分利用了MPC860的功能,并且在实现上所采用的设计思路可以很容易地应用到其他嵌入式开发中。

  本方案所使用的器件大部分是嵌入式开发中经常使用的器件,所有的器件都具有一定的通用性,稍加改动即可应用到其他设计中。并且在该系统的基础上能很容易地开发出适用于其他方面的网络控制及通信系统。

  1 系统硬件结构及工作原理

  1.1 系统结构及特点

  整个系统由板底板组成,板主要包括:CPU(MPC860)、Flash存储器、SDRAM存储器、标准的SODIMM接口、电源监控及复位电路、时钟驱动电路以及与底板相连的连接器。底板主要包括:100M网络接口电路、10M网络接口电路、BDM调试接口电路、系统供电电路、实现控制和监控功能的RS232接口电路和与板相连的连接器。RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准". 该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS232接口叫做DB9.方案设计中将整个系统分为板和底板两部分,分别设计实现,既降低了整个系统的开发难度又使系统易于维护、升级和和扩展。

  1.2 系统的功能框图及工作原理

  板的功能框图如图1所示。系统上电后,板通过连接器将电源从底板引上来。电源监控及复位电路开始工作,产生复位信号。在复位信号产生后,板的CPU(MPC860)开始启动。此时MPC860开始读取数据线(D0~D15)上的值,并通过读出的设置值来初始化CPU,主要包括存储器初始化、中断向量初始化、调试寄存器初始化等。当所有的硬件环境(主要指CPU中所有与操作系统相关的一些特殊功能寄存器,如SRR0、SRR1、CR等)初始化完毕后。系统会将控制权交给存储在Flash中的操作系统(如Linux、vxWorks等),通过操作系统管理系统中的所有硬件及任务。

  总线复用,指的是数据和地址在同一个总线上传输的方式。如8051单片机,地址空间是16bit,数据宽度8bit,而高位地址总线8bit是与数据8bit复用的。所以总共还是16根线。数据和地址的分离是通过外部电路来完成的,一般都用273锁存器,对地址信息进行所存,通过ALE信号来控制。然后再传输数据信息。此外为提高板的适用范围,在板上增加了一个标准的SODIMM插槽和总线复用电路,SODIMM插槽可通过跳线支持16MB、32MB、64MB及128MB内存。总线复用电路支持外部总线仲裁(即在同一系统中可以将多块板加在同一总线上而不会产生冲突),本板可以不加任何改动即可用于其他系统中,包括多个板用于同一个系统。

  底板的功能框图如图2所示。当操作系统完全接管系统(包括对板底板所有硬件的管理)后,由操作系统发起任务控制底板上的资源,从而实现硬件防火墙的功能,包括路由功能、网关功能和内容过滤的功能。同时连接器将板所有的引脚引出用于扩展设计。这样设计的优点是当系统进行局部更新或设计时,只要更改底板的设计即可,并极大降低了开发难度,同时也提高了本系统复用率。

  2 关键器件和关键技术

  2.1 系统CPU MPC860

  MPC860拥有MPC860C处理器,是基于MPC860的网络应用开发者提供灵活的开发环境。MPC860SAR系统在一块尺寸很小的印刷电路板上集成了CPU(860)和其它一些基本的外围电路,包括挂在 PowerPC 总线上的系统存储器和启动Flash. MPC860处理器卡为MPC860的开发者构件自己的MPC860系统提供的灵活性并可节省宝贵的开发时间。它有5个板到板连接器,引出 MPC860通讯控制器的大部分信号。开发者们可以将自己的板子连接到MPC860 处理器卡上,这样可以免去很多对MPC860系统本身的调试。 MPC860PC与Freesclae MPC860FADS板子硬件几乎一样,除SCC1上面PHY采用的是LXT905,MPC860FADS上面采用的是MC68160,客户可以很快利用 MPC860FADS程序模板完成u-boot, Linux, VXworks等程序开发。MPC860是由基于Motorola的MC68360嵌入式通信控制器演变而来的。PowerPCTM结构处理器由三个模块组成,即PowerPCTM内核、系统接口单元(SIU)及通信处理器模块(CPM)。这三个模块均采用32位内部总线。MPC860的主处理器是32位的PowerPCTM内核,能够实现内存管理(MMU)以及指令与数据的缓存;MPC860的系统接口单元中,存储器控制单元可支持多种高性能的存储器,包括SDRAM和Flash,还增加了PCMCIA控制器及实时时钟电路。

  LXT972是Intel公司推出的符合IEEE标准的快速网络物理收发器驱动芯片。适合于在100BASE-TX和10BASE-T标准的介质连接中应用。除此之外,它还提供一种非常易于应用在10/100M介质访问控制器(MACs)的独立介质独立接口(MII)。MII (Media Independent Interface(介质无关接口);或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY.MII (Management interface)只有两条信号线。

  LXT905是Intel公司生产的一款低电压通用10Base-T收发器,适合于IEEE 802.3标准的物理层应用。LXT905的功能包括曼彻思特编码/解码,接收器压制和发送脉冲波形休整、模糊识别、连接完整性测试和反极性探测和校正。LXT905驱动10Base-T双绞线仅用单一3.3V或者5V供电的隔离变压器。隔离变压器属于安全电源,一般用来机器维修保养用起保护、防雷、滤波作用。 隔离变压器是一种1/1的变压器。初级单相220V,次级也是单相220V.或初级三相380V,次级也是三相380V.首先通常我们用的交流电源电压一根线和大地相连,另一根线与大地之间有220V的电位差。人接触会产生触电。而隔离变压器的次级不与大地相连,它的任意两线与大地之间没有电位差。人接触任意一条线都不会发生触电,这样就比较安全。其次还有隔离变压器的输出端跟输入端是完全"断路"隔离的,这样就有效的对变压器的输入端(电网供给的电源电压)起到了一个良好的过滤的作用。从而给用电设备提供了纯净的电源电压

  3 设计方案的实现

  3.1 硬件部分

  由于篇幅有限,本文仅对系统的几个具有代表性的电路进行分析。

  3.1.1 板部分

  由于本系统的终设计目标是设计出一台标准的嵌入式设备,所以在Flash存储器电路上选用了两片富士通生产的型号为MBM29LV160BT 16MB(2M×8/1M×16)位)的Flash存储器,使用方式为2MX8位,在电路连接上,它占用了MPC860的存储空间管理器的两块。两片Flash存储器的片选分别与MPC860的片选CS0#和CS1#相连。CS1接文件系统Flash,一般将操作系统和文件系统存储在该Flash中。

  本系统所使用的SDRAM存储器为现代公司生产的型号为HY57V641620HG 4Banks×1M×16位Synchronous DRAM,使用的方式为将两片SDRAM通过字扩展构成4M×32位SDRAM,即共16MB的存储器空间。在物理连接上该两片SDRAM与MPC860的片选CS2#相连,占用MPC860的存储空间管理器的一块。除此之外该片选可通过跳线禁用。MPC860与SDRAM的接口电路如图3所示。

  为了提高本系统的应用范围,增加系统的存储器空间,系统设计在板上增加了一个144pin的标准SODIMM插槽,通过跳线可以支持16MB、32MB、64MB、128MB的标准内存。与MPC860的片选CS5#和CS6#物理连接。

  硬件设置字电路如图4所示。

  在上电复位和硬件复位时,CPU除了读取时钟的缺省设置外,还会从数据总线上读取硬件复位设置字(HRCW),如图4所示。这个16位的HRCW字必须用上拉电阻进行设置,若未加上拉电阻,各数据位的值缺省为0.

  在本系统中,硬件复位设置字用三个总线驱动器244加到数据总线上实现。硬件复位的设置字如下:

  上电复位时,MODCK1=1、MODCK2=0,选则EXTCLK为OSCCLK的输入。

  D0=0,即EARB=0,本系统采用内部总线仲裁机制。

  D1=0(可通过跳线设置成1),即IIP=0,本系统复位中断向量的地址为0XFFF00100,可通过跳线设置成0X00000100.

  D2=1,即BBE=1,本系统的启动设备不支持突发模式。

  D3=0,即BDIS=0,启动禁止位禁止,硬件复位后内存控制器将所有的地址都映射到BANK0区。从CS0#连接的Flash启动。

  D4=0,D5=1,即BPS=01,系统启动后数据总线工作在8位模式。

  D6=0;系统保留位。

  D7=1,D8=0,即ISB=10,系统复位后内部内存的起始地址为0XFF000000H.

  D9=1,D10=1,即DBGC=11,对MPC860的一些复用引脚进行设置。使系统复位后MPC860的一些复用引脚工作在确定的引脚状态。以满足系统的需求。

  D11=0,D12=0,即DBPC=00,MPC860的调试端口BDM调试端口管脚设置。

  D13=0,D14=0,即EBDF=00,总线工作在全速模式下。

  D15=0,即CLES=0;数据存储模式为大端模式。

  在本系统中为减少PCB板尺寸提高系统的可靠性,采用Cadence Allego SPB15.1软件,布成8层板。在提高电磁兼容性方面。除了在PCB板上增加地层外,在PCB板的上下表面层板的周围增加贯穿孔以增加整个PCB板的抗干扰性和电磁兼容性。PCB(PrintedCircuitBoard),中文名称为印制电路板,又称印刷电路板、印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者。由于它是采用电子印刷术制作的,故被称为"印刷"电路板。

  3.1.2 底板部分

  本系统中100M网络驱动电路为主要部分,是本系统与外网相连的接口,所有的网络数据都通过100M网口进入硬件防火墙,把软件防火墙嵌入在硬件中,一般的软件安全厂商所提供的硬件防火墙便是在硬件服务器厂商定制硬件,然后再把linux系统与自己的软件系统嵌入。(Symantec的SGS便是DELL+Symantec的软件防火墙)这样做的好处是linux相对Windows的server相对安全。这样做的理由是由于ISA必须装在Windows操作系统下,微软的操作系统相对不安全,本身安全存在隐患的系统上部署安全策略相当于处在亚安全状态,是不可靠的。在兼容性方面也是硬件防火墙更胜一筹,其实软件防火墙与硬件防火墙的主要区别就在于硬件。硬件防火墙是保障内部网络安全的一道重要屏障。它的安全和稳定,直接关系到整个内部网络的安全。因此,日常例行的检查对于保证硬件防火墙的安全是非常重要的。 将板分析及处理后的数据通过10M网络驱动电路接口送入内网,所有的算法(如查找算法、IP数据包内容还原、甚至于的内容替代算法等)都在板实现。

  本系统共有两路10M网络驱动电路。10M网络驱动电路是硬件防火墙与内网相连的惟一路径,硬件防火墙将处理过的数据通过该接口送入内网。同理,内网访问外网的数据也要通过它进入硬件防火墙。数据经硬件防火墙处理后,通过100M网络驱动电路送到外网。同时本系统所设计的两路10M网络电路还可以同时监管两个10M带宽的局域网,完成一些功能。

  由于功能和开发需要,系统在设计中采用了双串口方案。在开发中,一个串口可以作为与宿主机超级终端相连的调式串口,另一个可以作为与上位机通信的端口。

  由于MPC860支持片上调试,且为降低开发成本,所以在本系统开发时所采用的调试手段是MPC860所支持的BDM 调试。

  3.2 软件部分

  主要包括启动代码编写、操作系统移植、硬件驱动编写以及应用程序等。由于篇幅有限,本文仅对BSP移植进行简单介绍。

  3.2.1 BSP移植的步骤及建立BOOTROM的方法

  (1)阅读手册,了解WINDRIVER的BSP模板编写规范、文件的组织,找到适合于目标处理器的模板。

  (2)找到BSP模板以后,针对不同的CPU类型,确定基本BSP中所有寄存器配置是否适合当前的硬件(包括SDRAM、Flash)。如果不适合则做相应的改动,这主要是指rominits,config.h中的修改。

  (3)如果有网络设备,则需要配置confignet.h.如果有串口,则需要修改sysSerial.c.修改sysLib.c中的硬件相关部分。

  建立BOOTROM的方法:

  (1)进行BSP定制,主要是修改bootline,配置configAll.h,config.h和Makefile.

  (2)选择VxWorks的加载方式,然后配置target server,通过"build bootrom"图形对话框或者命令行建立bootrom,然后通过visionprobe将bootrom到目标机RAM中运行,或者将成功的bootrom用专门烧写器烧写到Flash中。

  3.2.2 根据硬件修改BSP

  在本课题中,将ads860目标板的BSP拷贝到目录installDir/target/config/ncut860t下,同时将all目录下的所有文件都拷贝到installDir/target/config/ncut860t/all目录下,之后针对本系统的硬件环境对BSP进行修改,同时修改相应的makefile.

  注意:应将BSP拷贝到相应目录下后再启动Tornado,否则在Tornado的BSP列表中可能看不到新添加的BSP.

  (1)config.h文件需要修改的配置(部分代码)

  #define DEFAULT_BOOT_LINE

  ″motfec(0,0)host:vxWorks h=219.224.61.102 e=219.224.61.202 u=ncut pw=ncut″

  #define CRISTAL_FREQ  50000000        /*50MHz*/

  #define LOCAL_MEM_LOCAL_ADRS 0x00000000

  /*Base of RAM*/

  #define LOCAL_MEM_SIZE   0x02000000

  /*32MB memory available*/

  #define ROM_BASE_ADRS   0x02800000

  /*base address of ROM*/

  #define ROM_TEXT_ADRS ROM_BASE_ADRS+0x100

  #define ROM_SIZE   0x00200000         /*2M ROM space*/

  #define RAM_HIGH_ADRS (LOCAL_MEM_LOCAL_

  ADRS+0x00500000)

  #define RAM_LOW_ADRS (LOCAL_MEM_LOCAL_

  ADRS+0x00010000)

  #define USER_RESERVED_MEM  0x00000000

  /*user reserved memory size*/

  (2)makefile文件修改(部分代码)

  TARGET_DIR =ncut860t

  VENDOR=Motorola

  BOARD=fw860t

  ROM_TEXT_ADRS=02800100 # ROM entry address

  ROM_SIZE=00400000 # number of bytes of ROM space

  RAM_LOW_ADRS=00010000 # RAM text/data address

  RAM_HIGH_ADRS=00500000 # RAM text/data address

  HEX_FLAGS=-a $(ROM_TEXT_ADRS)

  MACH_EXTRA=motFecEnd.o

  CONFIG_ALL=F:workSetUpPpCTornado2.2targetconfig

  ncut860tall

  3.2.3 BSP常用的调试方法

  开发调试BSP有两种方法,一种是使用仿真器通过BDM的方式一步步地跟踪调试;另一种是通过点灯的方式进行所谓的"黑"调。这里主要介绍"黑"调的方法。"黑"调的方法是通过 "灯"闪或用示波器测片选等,根据外部现象和所编的测试代码进行比较分析来调试程序。进行黑调的首要条件是串口部分代码已经调通,宿主机可以通过串口与目标机的通信,然后再调试BSP的其他部分。

  BSP调试流程分成两部分。首先是位于BootRom中的Boot代码,它的作用是实现配置硬件和启动VxWorks程序;接下来是后跳转到VxWorks的入口地址运行操作系统和应用程序。

  ROM中的启动代码部分:

  RomInit:在文件romInit.s中,它是程序运行的开始,实现判断启动类型,配置内核和非内核寄存器以及内存和外围设备的读写时序,因此可以在此处加入内存检测功能。闪灯功能函数也要在此加入。判断启动类型和配置寄存器的部分不需要改动。配置内存和外围设备读写时序部分要进行改动,这一部分的SDRAM、ROM、Flash、FPGA有相应的模板可以参考,是通过使用宏定义来实现的。

  在RomInit函数结尾处,指针跳入RomStart(),RomStart()在BootInt.c文件中。它是系统运行的个C函数。这一部分是Wind River公司提供的标准程序,一般不需改动。该函数是C的入口函数,由汇编程序调用,主要完成清内存,将ROM中的程序拷贝到RAM,解压并跳至解压后的程序运行。

  UsrInit在BootConfig.c文件中,主要实现硬件的初始化。其中涉及到串口、网口的初始化及CONSOLE的配置等。其中串口和网口的配置是BSP的重要部分。UsrRoot在BootConfig.c文件中,它主要是实现vxworks文件的,并且跳转到vxworks的入口地址,从而进入操作系统。

  VxWorks文件中的代码部分:

  SysInit在sysAlib.s中。它是VxWorks的启动代码,与RomInit的作用相同。对于这个文件,一般不需要改动。UsrInit在Usrconfig.c中,其作用与Boot中UsrInit的作用相同。他们都调用SysLib.c中的子函数实现相同的硬件初始化功能。UsrRoot在UsrConfig.c中,它的作用与Boot中的UsrRoot的作用类似,但是这里的UsrRoot终是进入到应用程序中。

  该硬件防火墙的特点是高性能、高稳定性和强兼容性,除了可以实现网关、路由、上位机监控的功能外,在硬件防火墙的功能上通过软件可实现典型的性能参数、1000个并发联接数、实现吞量20M、实现10M的安全过滤带宽、实现对VPN、IDS、Dos等的支持。

  同时,本系统作为一种嵌入式开发的典型设计,板可以不作任何改动即可应用于其他嵌入式应用中。充分体现了嵌入式开发在后续开发中电路重复应用的优势。此外在设计中所采用的一些扩展性设计,如为增加系统存储器所加的标准SODIMM插槽、不同封装的晶振驱动电路,晶振有着不同使用要求及特点,通分为以下几类:普通晶振、温补晶振、压控晶振、温控晶振等。在测试和使用时所供直流电源应没有足以影响其准确度的纹波含量,交流电压应无瞬变过程。测试仪器应有足够的,连线合理布置,将测试及外围电路对晶振指标的影响降至。


  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!