使用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总线的板级高端口密度三层交换机的设计要求。
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总线的板级高端口密度三层交换机的设计要求。
Freescale 嵌入式 总线 PIC 电路 连接器 VxWorks 相关文章:
- 飞思卡尔最新GPON芯片MSC7120支持话音功能 (03-06)
- CPLD的DSP多SPI端口通信设计(03-24)
- MC9S12NE64型单片机的嵌入式以太网连接(07-06)
- 基于无线传感器网络的远程智能抄表系统设计(07-15)
- 超宽带及其应用(07-24)
- 基于MPC860T的嵌入式通信服务器的设计与实现(07-24)