微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 使用BCM56500实现板级高性能交换型路由器

使用BCM56500实现板级高性能交换型路由器

时间:06-07 来源:互联网 点击:
LAN Switch的软件启动和硬件初始化过程

LAN Switch采用WindRiver公司VxWorks操作系统。在CPU最小系统(CPU+SDRAM+Flash+串口)完成启动后,需要通过PCI总线对LAN Switch交换部分进行初始化,主要步骤如下。

(1)由于BCM56500工作在little endian模式,而MPC8245工作在big endian模式,因此需要对头模式进行设置(可以使用字节位移指令或者对CONFIG_ADDR和CONFIG_DATA在访问前进行字节交换);

(2)根据硬件连接选择PCI设备的设备号,配置交换芯片BCM56500的PCI基地址和窗口大小;

(3)通过PCI总线使用交换芯片BCM56500的CPU管理接口确定交换芯片的型号,然后根据不同的芯片类型进行初始化和DMA通道的配置;

(4)挂接交换芯片的驱动程序和各种API,完成LAN switch的初始化过程。

其中第三、第四步骤需要Broadcom公司的软件开发支持包(SDK)支持,直接从程序中调用Boradcom的初始化程序,可以保证正常完成初始化和加载驱动程序。

以下对PCI驱动的设计配置和SDK做进一步的说明。

前面已经说明了对于BCM56500的IDSEL信号已经确定,设计中使用VxWorks的标准PCI驱动程序,对于BCM56500的PCI挂接例程如下。
(1)在bootROM中用sysHwInit()调用sysPciAutoConfig(),对PCI_SYSTEM结构进行实例化;

(2)同样在sysHwInit()中,使用pciConfigOutLong()对BCM56500的基地址和窗口大小进行配置,然后使用pciConfigOutByte()挂接BCM56500的中断至CPU的外部中断向量表;

(3)至此,PCI配置完成。通过BCM56500的S_Channel可以配置BCM56500中的各个寄存器和表项。S_Channel的消息传递有特殊的格式和规范,一般通过Broadcom公司提供的软件开发支持包(SDK)中自带的标准函数来进行配置。

本设计使用Broadcom公司5.2.3版的SDK。SDK的设计严格分层,自下而上分成操作系统(RTOS)、操作系统适配层(SAL)、芯片系统层(SOC)、分发层(Dispatch)和BCM的应用接口层(API层)。由于SDK支持Broadcom公司的几乎所有交换芯片,因此在使用SDK的时候,在使用API之前需要进行芯片查询,按照搜索到的芯片挂接相对应的API。整个的芯片查询和挂接API的过程,使用SDK实现相当方便。初始化SDK的API的过程如下。

(1)SDK软件初始化:diag_shell(),sysconf_int();

(2)在本地的PCI总线上查询Broadcom设备:sysconf_prob();

(3)根据查询到的设备进行相对应的驱动程序挂接:sysconf_attached();

(4)应用正确的驱动程序对交换芯片进行初始化:system_init();

(5)芯片基本的初始化后,进入正常的工作状态,此时可以进行应用程序的初始化了:bcm_init(),应用程序和协议栈入口。

交换性能测试结果和三层功能实现

设计定型后的LAN Switch经过SmartBits测试,每个端口都可以达到线速转发,稳定性测试表明可以达到48小时千兆线速无丢帧性能。所得的结果如图4所示。


图4  千兆光接口48小时性能测试结果

由于这个设计方案使用CPU+ASIC方案,三层的IP路由转发功能由交换芯片的三层转发表(L3_Table)实现线速转发。其他的三层协议栈功能应用交换芯片中过滤器实现。在本设计中,根据需求完成了OSPF、RIP-2、DHCP、DHCP relay、IGMP、IGMP relay等常用IP协议栈,实现了基于PCI总线的板级高端口密度三层交换机的设计要求。

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

网站地图

Top