1 前言
对称多处理(SMP)是一种基本的并行处理结构.它的基本特点是所有处理器对系统公共资源的访问权限完全相同,即处理器之间完全对称。SMP系统在软件方面具有容易编程的特点。伴随着并行计算及多核处理器的流行,SMP系统得到越来越广泛的应用。
MPC7448是Freescale公司推出的一款高性能PowerPC处理器芯片,该芯片采用超标量e600内核。该处理器具备高性能、低功耗的特点,非常适合于尖端计算、嵌入式网络通信、信号处理等应用场合。Tsi109是Tundra公司专为PowerPC处理器设计的主桥芯片,它支持Freescale的MPC74xx和IBM的PPC750xx系列芯片。Tsi148是Tundra公司推出的PCI/X-VME桥接芯片。
本文的嵌入式SMP系统基于MPC7448芯片,结合主桥芯片Tsi109和桥接芯片Tsi148设计的一个vME单板机。该系统具备优秀的计算性能,具有良好的通信能力。文章介绍了该嵌入式系统的硬件系统设计和系统软件开发过程。
2 系统硬件设计
2.1 系统整体简介
构建SMP系统需要处理器和主桥芯片的硬件支持,MPC7448和Tsi109支持sMP系统,Tsi109支持两个处理器。
Tsi109提供如下接口功能:处理器接口;DDR2内存系统接口;HLP接口;PCI/X总线接口;还集成了千兆以太网口和UART口。Tsi109提供了接口控制和接口间的高速互连功能,因此,本文以Tsi109为中心进行系统构建。系统整体结构如图(1)所示,系统充分利用了Tsi109提供的接口功能,并通过PCI/X总线扩展了VME总线和PMC接口。
图1 系统整体结构图
2.2 处理器接口设计
可以把该接口信号分为三类:时钟信号、单向点对点信号和普通信号。说明如下:(1)Tsi109提供三个完全相同的时钟信号,可以为2个处理器及反馈使用。(2)单向点对点信号主要是仲裁信号和中断信号。分为两组分别接两个处理器。(3)普通信号为两个处理器共用。由于对两个处理器共用,在布线时需要选择合适的拓扑结构,推荐使用Y型结构。
为了区分系统中的两个处理器。把它们标识为CPUO和CPU1。系统可以通过两种方式进行识别:(1)读取自己的寄存器位MSSCR0[ID]。(2)读取Tsi109的寄存器位PB_BUS_MS_SELE CT[WAMI]。连接到PB_BGn[0]的处理器总读取到0,连接到PB_BGn[l]的处理器总读取到1。我们把连接PB_BGn[0]的处理器设置为CPU0.把另一个设置为CPU1。
2.3 存储系统设计
Tsi109支持DDR2-400内存系统。内存接口包括数据信号、时钟信号、地地命令信号和控制信号。其中,数据信号包括64位数据位、8位校验位和18对源同步差分时钟信号;时钟信号包括6对差分时钟信号,分为两组分别由寄存器位SD_D[O,l]_CTRL[CLK_DISABLE]控制;控制信号分两组,包括2个时钟使能、4个0DT使能和4个片选,因此,Tsi109支持2个DIMM内存插槽,可以使用1-Bnak或2-Bank内存条。
本文使用内存颗粒K4T51083QC通过位扩展方式构建内存系统,使用第一组控制信号。把数据位和校验位依次分为9个字节,源脚步信号和字节号依次对应。每个字节对应一个芯片;控制信号、地址/命令信号为所有芯片共用;为了布线方便, 两个芯片使用一个时钟信号,为此,在内存初始化时不但要设置DIMMO寄存器组,还要正确设置SD_D{l}_CTRL[CLK—DISABLE]。上述信号中.数据信号是点对点连接,DDR2内存系统对这些信号提供了片上终端(0DT),因此,拓扑结构简单,信号完整性也容易得到保证,为方便布线还可以进行片内交换;其余信号都是一对多连接,必须选择合适的拓扑结构和布线约束,并且要对这些信号添加终端匹配电阻。通过仿真。选择使用对称二叉树结构进行布局、布线,校验芯片挂在第一个节点上。
HLP接口是Tsi109提供的一种低速存储器接口,可以挂载ROM、EEPROM、FLASH、SRAM、NVRAM等多种存储设备。该接口有4个片选信号。可以挂载4个独立外设。本系统充分使用了这4个片选信号,在HLP_CS0上挂载AM29LV040B作为启动FLASH。该接口有两种工作模式:锁存模式和非锁存模式。锁存模式下地址信号更加稳定,而且,由于独立使用32位HLP_AD用于地址信号和数据信号,可以使用大容量Flash芯片,还可以使用32位器件。本系统全部使用锁存模式。
HLP是系统中重要接口。在系统加电及完成内部寄存器初始化后,MPC7448开始向Ox0_FFF0_0100位置读取第一条外部指令.这一读取指令被Tsi109自动引导到HLP接口与HLP_CS0连接设备上。因此,这里要保存系统的启动程序,操作系统和应用程序也保存在该接口的存储设备上。
2.4 通信系统设计
本系统使用PCI/X-VME桥接芯片Tsil48进行VME总线设计。Tsil48的信号可以分为PCI/X接口信号和VME接口信号。PCI/X接口信号连接系统PCI,X总线,占用PCI总线的PCI_REQ1,PCI_GNTl;VME接口信号通过TI公司VME收发芯片SN74VMEH2250l和VME连接器相连。Tsil48支持2eSST协议。
Tsi109集成以太网控制接口,可以连接两个物理连接设备(PHY)。本文使用Broadcom公司的以太网收发芯片BCM546l进行网口设计。BCM5461与Tsi109的连接使用千兆比特介质无关接口(GMⅡ)协议,与RJ45接口的连接通过隔离变压器。
串口是系统调试中一个方便接口。Tundra公司把串口集成到Tsi109中,简化了系统串口设计。串口的电路设计较为简单,使用一个电平转换芯片MAx3222连接Rs232连接器。
2.5 系统时钟和电源设计
系统使用一个33MHz的晶振作为基准时钟源,接入Tsi109的输入管脚CG_REF.经过内部倍频、缓冲,生成处理器接口、DDR2内存接口、PCI/X接口及Tsi109内部所需的时钟信号。处理器接口和DDR2内存接口的倍频因子可以通过CC_PB_SELECT[0..2]和CG_SD_SELECT[0..2]进行配置。
电源设计是系统设计中非常重要的组成部分,电源的稳定性将影响到系统的可靠性和稳定性。系统中电压值较多,多电压器件对加电时序也有一定要求。本文通过两个相互联系的步骤进行电源设计:(1)分析系统所需电压值,进行电压值的最大功耗统计,然后进行电源芯片的选型和电路设计;(2)分析多电压芯片的时序要求,设计系统的加电时序,然后对分立电源添加控制.组成完整的电源系统。系统为MPC7448内核选用TI公司的电源模块PTH03030。其余电压使用电源芯片构建;使用ADM1085进行时序控制。
3 系统软件开发
SMP系统需要操作系统的支持才能使用。在嵌入式领域,目前支持PowerPc且支持SMP的操作系统有Linux、QNX、eCos等.另一个重要操作系统VxWorks在新版本6.6中加入了对SMP支持。本文使用Linux操作系统。
进行嵌入式开发,首先要建立交叉开发环境。可以下载最新内核源码包及工具链包,自行构建、配置开发环境。本文选择使用ELDK开发套件。
3.1 U-Boot的移植
U—Boot是一个开放源代码的固件程序。它起源于PPCBoot,基于PowerPc处理器编写。目前能够支持PowerPC、ARM、x86、MIPs等多种处理器,支持上百种系统平台,能够引导Linux、NetBSD、vxworks等多种操作系统。本文使用U—Boot构建系统的启动程序。
PowerPC体系结构的I/O寻址采用内存映射方式,即内存地址和I/O地址统一编码,在进行代码移植前,需要首先确定系统的地址映射关系,本系统地址映射见表(1)。u—Boot的移植可以通过以下步骤进行:(1)搜索u—Boot源码,找到一个和目标板最为接近的参考平台mpc7448hpc2;在board目录下创建目标板目录smp7448,复制参考平台文件到该目录,修改文件名为smp7448.c.在include/configs目录下找到参考板头文件,复制并创建目标板头文件smp7448.h;在顶层目录Makefile文件内添加目标板定义。(2)根据地址映射表修改目标板头文件中宏定义,这需要参考MPC7448和Tsi109相关寄存器格式;阅读目标板源代码,根据系统参数进行必要的修改和调整。(3)编译、下载和调试,直至顺利启动,能够进入命令状态。
表1 系统地址映射表
上述是单处理器的U-Boot移植,在SMP系统下稍有不同。大多数SMP系统的启动过程都由一个处理器来完成。其它处理器处于待命状态。在PowerPc平台规范中,负责启动的处理器称作主处理器.其余为从处理器。对SMP系统的U—Boot移植,需要在单处理器初始化代码的开始部分添加一个基于处理器识别的分支处理代码,让主处理器正常执行,从处理器直接跳转某地址(linux下为一secondary_hold)。需要说明的是。这里的“主”、“从”概念只在系统初始化阶段有意义,操作系统初始化完毕后处理器之间完全对称。
3.2 Linux的移植
LinⅡ操作系统是一个基于CPL版权的自由软件。目前,Linux已经支持x86、ARM、PowerPc、MIPs等多种处理器平台,另一方面。Linux已经在嵌入式系统.PC系统、服务器等场合得到广泛应用。自2.0版本开始提供对SMP支持,2.2版本添加PowerPc平台上SMP支持,直至在2.6版本中做了重大改进,包括复杂度为调度算法、独立的运行队列、基于优先级的任务抢占、SMP负载平衡等,Linux才更好地支持了SMP系统。
Linux源码分为体系无关和体系相关两部分,后者又可以具体分为处理器相关和平台相关。移植工作主要在平台相关代码部分。Linux移植可以通过以下步骤进行:(1)查找和目标平台相似的参考平台,在arch/powerpc/platforms 目录下创建目标板目录(本文目标板使用原有的platforms/embedded6xx目录). 添加目标板配置源文件和头文件,在该目录Makefile文件和内核配置文件Kconfig里添加目标板信息;在顶层Makefile文件内设置目标板编译参数:ARCH=powerpc及CR0SS_COMPILE=ppc_74xx-;(2)进行目标板平台代码的修改;添加必要的驱动程序;(3)配置目标板:make menuconfig;编译生成内核镜像: make;制作根文件系统;(4)在u-Boot启动完毕后,使用tftp下载Linux内核镜像和根文件系统,运行Linux。
u-Boot及Linux移植成功后,即可进行应用软件的开发。
4 结束语
本文介绍了一个基于PowerPc的嵌入式SMP系统设计。本文的创新点在于,分析和设计了一个基于PowerPC的SMP系统。并介绍了相应的系统软件开发。本文可为嵌入式系统设计提供一定参考价值。
1 前言
对称多处理(SMP)是一种基本的并行处理结构.它的基本特点是所有处理器对系统公共资源的访问权限完全相同,即处理器之间完全对称。SMP系统在软件方面具有容易编程的特点。伴随着并行计算及多核处理器的流行,SMP系统得到越来越广泛的应用。
MPC7448是Freescale公司推出的一款高性能PowerPC处理器芯片,该芯片采用超标量e600内核。该处理器具备高性能、低功耗的特点,非常适合于尖端计算、嵌入式网络通信、信号处理等应用场合。Tsi109是Tundra公司专为PowerPC处理器设计的主桥芯片,它支持Freescale的MPC74xx和IBM的PPC750xx系列芯片。Tsi148是Tundra公司推出的PCI/X-VME桥接芯片。
本文的嵌入式SMP系统基于MPC7448芯片,结合主桥芯片Tsi109和桥接芯片Tsi148设计的一个vME单板机。该系统具备优秀的计算性能,具有良好的通信能力。文章介绍了该嵌入式系统的硬件系统设计和系统软件开发过程。
2 系统硬件设计
2.1 系统整体简介
构建SMP系统需要处理器和主桥芯片的硬件支持,MPC7448和Tsi109支持sMP系统,Tsi109支持两个处理器。
Tsi109提供如下接口功能:处理器接口;DDR2内存系统接口;HLP接口;PCI/X总线接口;还集成了千兆以太网口和UART口。Tsi109提供了接口控制和接口间的高速互连功能,因此,本文以Tsi109为中心进行系统构建。系统整体结构如图(1)所示,系统充分利用了Tsi109提供的接口功能,并通过PCI/X总线扩展了VME总线和PMC接口。
图1 系统整体结构图
2.2 处理器接口设计
可以把该接口信号分为三类:时钟信号、单向点对点信号和普通信号。说明如下:(1)Tsi109提供三个完全相同的时钟信号,可以为2个处理器及反馈使用。(2)单向点对点信号主要是仲裁信号和中断信号。分为两组分别接两个处理器。(3)普通信号为两个处理器共用。由于对两个处理器共用,在布线时需要选择合适的拓扑结构,推荐使用Y型结构。
为了区分系统中的两个处理器。把它们标识为CPUO和CPU1。系统可以通过两种方式进行识别:(1)读取自己的寄存器位MSSCR0[ID]。(2)读取Tsi109的寄存器位PB_BUS_MS_SELE CT[WAMI]。连接到PB_BGn[0]的处理器总读取到0,连接到PB_BGn[l]的处理器总读取到1。我们把连接PB_BGn[0]的处理器设置为CPU0.把另一个设置为CPU1。
2.3 存储系统设计
Tsi109支持DDR2-400内存系统。内存接口包括数据信号、时钟信号、地地命令信号和控制信号。其中,数据信号包括64位数据位、8位校验位和18对源同步差分时钟信号;时钟信号包括6对差分时钟信号,分为两组分别由寄存器位SD_D[O,l]_CTRL[CLK_DISABLE]控制;控制信号分两组,包括2个时钟使能、4个0DT使能和4个片选,因此,Tsi109支持2个DIMM内存插槽,可以使用1-Bnak或2-Bank内存条。
本文使用内存颗粒K4T51083QC通过位扩展方式构建内存系统,使用第一组控制信号。把数据位和校验位依次分为9个字节,源脚步信号和字节号依次对应。每个字节对应一个芯片;控制信号、地址/命令信号为所有芯片共用;为了布线方便, 两个芯片使用一个时钟信号,为此,在内存初始化时不但要设置DIMMO寄存器组,还要正确设置SD_D{l}_CTRL[CLK—DISABLE]。上述信号中.数据信号是点对点连接,DDR2内存系统对这些信号提供了片上终端(0DT),因此,拓扑结构简单,信号完整性也容易得到保证,为方便布线还可以进行片内交换;其余信号都是一对多连接,必须选择合适的拓扑结构和布线约束,并且要对这些信号添加终端匹配电阻。通过仿真。选择使用对称二叉树结构进行布局、布线,校验芯片挂在第一个节点上。
HLP接口是Tsi109提供的一种低速存储器接口,可以挂载ROM、EEPROM、FLASH、SRAM、NVRAM等多种存储设备。该接口有4个片选信号。可以挂载4个独立外设。本系统充分使用了这4个片选信号,在HLP_CS0上挂载AM29LV040B作为启动FLASH。该接口有两种工作模式:锁存模式和非锁存模式。锁存模式下地址信号更加稳定,而且,由于独立使用32位HLP_AD用于地址信号和数据信号,可以使用大容量Flash芯片,还可以使用32位器件。本系统全部使用锁存模式。
HLP是系统中重要接口。在系统加电及完成内部寄存器初始化后,MPC7448开始向Ox0_FFF0_0100位置读取第一条外部指令.这一读取指令被Tsi109自动引导到HLP接口与HLP_CS0连接设备上。因此,这里要保存系统的启动程序,操作系统和应用程序也保存在该接口的存储设备上。
2.4 通信系统设计
本系统使用PCI/X-VME桥接芯片Tsil48进行VME总线设计。Tsil48的信号可以分为PCI/X接口信号和VME接口信号。PCI/X接口信号连接系统PCI,X总线,占用PCI总线的PCI_REQ1,PCI_GNTl;VME接口信号通过TI公司VME收发芯片SN74VMEH2250l和VME连接器相连。Tsil48支持2eSST协议。
Tsi109集成以太网控制接口,可以连接两个物理连接设备(PHY)。本文使用Broadcom公司的以太网收发芯片BCM546l进行网口设计。BCM5461与Tsi109的连接使用千兆比特介质无关接口(GMⅡ)协议,与RJ45接口的连接通过隔离变压器。
串口是系统调试中一个方便接口。Tundra公司把串口集成到Tsi109中,简化了系统串口设计。串口的电路设计较为简单,使用一个电平转换芯片MAx3222连接Rs232连接器。
2.5 系统时钟和电源设计
系统使用一个33MHz的晶振作为基准时钟源,接入Tsi109的输入管脚CG_REF.经过内部倍频、缓冲,生成处理器接口、DDR2内存接口、PCI/X接口及Tsi109内部所需的时钟信号。处理器接口和DDR2内存接口的倍频因子可以通过CC_PB_SELECT[0..2]和CG_SD_SELECT[0..2]进行配置。
电源设计是系统设计中非常重要的组成部分,电源的稳定性将影响到系统的可靠性和稳定性。系统中电压值较多,多电压器件对加电时序也有一定要求。本文通过两个相互联系的步骤进行电源设计:(1)分析系统所需电压值,进行电压值的最大功耗统计,然后进行电源芯片的选型和电路设计;(2)分析多电压芯片的时序要求,设计系统的加电时序,然后对分立电源添加控制.组成完整的电源系统。系统为MPC7448内核选用TI公司的电源模块PTH03030。其余电压使用电源芯片构建;使用ADM1085进行时序控制。
3 系统软件开发
SMP系统需要操作系统的支持才能使用。在嵌入式领域,目前支持PowerPc且支持SMP的操作系统有Linux、QNX、eCos等.另一个重要操作系统VxWorks在新版本6.6中加入了对SMP支持。本文使用Linux操作系统。
进行嵌入式开发,首先要建立交叉开发环境。可以下载最新内核源码包及工具链包,自行构建、配置开发环境。本文选择使用ELDK开发套件。
3.1 U-Boot的移植
U—Boot是一个开放源代码的固件程序。它起源于PPCBoot,基于PowerPc处理器编写。目前能够支持PowerPC、ARM、x86、MIPs等多种处理器,支持上百种系统平台,能够引导Linux、NetBSD、vxworks等多种操作系统。本文使用U—Boot构建系统的启动程序。
PowerPC体系结构的I/O寻址采用内存映射方式,即内存地址和I/O地址统一编码,在进行代码移植前,需要首先确定系统的地址映射关系,本系统地址映射见表(1)。u—Boot的移植可以通过以下步骤进行:(1)搜索u—Boot源码,找到一个和目标板最为接近的参考平台mpc7448hpc2;在board目录下创建目标板目录smp7448,复制参考平台文件到该目录,修改文件名为smp7448.c.在include/configs目录下找到参考板头文件,复制并创建目标板头文件smp7448.h;在顶层目录Makefile文件内添加目标板定义。(2)根据地址映射表修改目标板头文件中宏定义,这需要参考MPC7448和Tsi109相关寄存器格式;阅读目标板源代码,根据系统参数进行必要的修改和调整。(3)编译、下载和调试,直至顺利启动,能够进入命令状态。
表1 系统地址映射表
上述是单处理器的U-Boot移植,在SMP系统下稍有不同。大多数SMP系统的启动过程都由一个处理器来完成。其它处理器处于待命状态。在PowerPc平台规范中,负责启动的处理器称作主处理器.其余为从处理器。对SMP系统的U—Boot移植,需要在单处理器初始化代码的开始部分添加一个基于处理器识别的分支处理代码,让主处理器正常执行,从处理器直接跳转某地址(linux下为一secondary_hold)。需要说明的是。这里的“主”、“从”概念只在系统初始化阶段有意义,操作系统初始化完毕后处理器之间完全对称。
3.2 Linux的移植
LinⅡ操作系统是一个基于CPL版权的自由软件。目前,Linux已经支持x86、ARM、PowerPc、MIPs等多种处理器平台,另一方面。Linux已经在嵌入式系统.PC系统、服务器等场合得到广泛应用。自2.0版本开始提供对SMP支持,2.2版本添加PowerPc平台上SMP支持,直至在2.6版本中做了重大改进,包括复杂度为调度算法、独立的运行队列、基于优先级的任务抢占、SMP负载平衡等,Linux才更好地支持了SMP系统。
Linux源码分为体系无关和体系相关两部分,后者又可以具体分为处理器相关和平台相关。移植工作主要在平台相关代码部分。Linux移植可以通过以下步骤进行:(1)查找和目标平台相似的参考平台,在arch/powerpc/platforms 目录下创建目标板目录(本文目标板使用原有的platforms/embedded6xx目录). 添加目标板配置源文件和头文件,在该目录Makefile文件和内核配置文件Kconfig里添加目标板信息;在顶层Makefile文件内设置目标板编译参数:ARCH=powerpc及CR0SS_COMPILE=ppc_74xx-;(2)进行目标板平台代码的修改;添加必要的驱动程序;(3)配置目标板:make menuconfig;编译生成内核镜像: make;制作根文件系统;(4)在u-Boot启动完毕后,使用tftp下载Linux内核镜像和根文件系统,运行Linux。
u-Boot及Linux移植成功后,即可进行应用软件的开发。
4 结束语
本文介绍了一个基于PowerPc的嵌入式SMP系统设计。本文的创新点在于,分析和设计了一个基于PowerPC的SMP系统。并介绍了相应的系统软件开发。本文可为嵌入式系统设计提供一定参考价值。
举报