cPCI台热切换原理和实现
摘要:描述了cPCI平台实现热切换的动作机制,引入一种方法将cPCI设备热插拔动作转为独享中断,用LED指示处理进程,并给出依此方法实现无控制台进行全热切换的软硬件设计方案。
关键词:cPCI 热切换 即插即用 设备驱动中断服务程序
cPCI(即Compact PCI)是PICMIG制定的、更加坚固耐用的PCI版本,广泛应用于工业和嵌入式控制系统中。它在电气、逻辑和软件功能方面与PCI完全兼容。除机械特性不一致外,cPCI与PCI最大的差别在于cPCI具有支持热切换(HotSwap)的能力。随着电子产品成本的下降和市场对工业产品尤其是电信应用产品可靠性要求的提高,基于cPCI平台的设计逐渐成为电信设备厂商的首选。
1 cPCI热切换原理
1.1 热切换基础
cPCI标准定义的机械、电气特性是实现热切换的基础。它采用的连接器符合IEC917和IEC1074-101标准,其插针引脚分别有最长、中长、最短三种长度。当插入一个卡到插槽时,首先最长的引脚(电源和地)被连接,卡逻辑将所有PCI信号引脚预设到一个固定电平1V;接着是中长度引脚的PCI信号连接,这些信号的电平已经固定且尚未开始,不会对系统造成干扰;最后才轮到最短的此脚,即BD_SEL#信号连接,告知卡逻辑可以开始工作。卡拔出的顺序正好相反,BD_SEL#首先断开,PCI信号被调整到一固定电平,最后才断开电源和地信号。在电路方面,cPCI增加一个ENUM#信号,即系统枚举信号。当一个cPCI设备卡被插入或拔出时,ENUM#被激活。
除cPCI本身的特性以外,要实现热切换,具有支持即插即用(PnP)的操作系统也是必要条件之一,只有支持PnP才能实现设备驱动程序的动态安装和卸载。
1.2 三种层次热切换
1.2.1 基本热切换
最基本的热切换方式需要用户干预。用户通过控制台通知OS(操作系统)即将进行设备卡插入或拔出。当插入一个卡时,其详细流程如下:
(a)通过系统界面,用户通知OS即将在一个槽中插入一个卡;
(b)用户插入卡,对卡完成上电初始化;
(c)用户通知系统,卡已经插入,要求OS重新枚举总线;
(d)OS执行总线枚举,确定新卡需要的资源;
(e)OS对卡的PCI配置寄存器编程,向其分配资源;
(f)OS装入适当的设备驱动程序,并调用其初始化代码;
(g)设备驱动程序初始化完成,卡开始工作。
当拔出一个卡时,流程类似,需要用户预先通知OS将要拔出设备卡,OS卸载设备驱动程序并回收设备资源后,才能拔出设备。
1.2.2 全热切换
全热切换是在基本热切换的基础上,在卡的插入/拔出机构中添加一个微开关装置。这个开关藏在手柄中。当cPCI卡被插入或拔出时,在卡开始或停卡工作之前,微开关首先改变状态,产生ENUM#信号,该信号通过某种途径通知OS将要插入或拔出一个卡,OS再执行总线枚举、安装驱动程序或卸载驱动程序等动作。
1.2.3 高可用性热切换
高可用性热切换是在全热切换的基础上建立的。它要求在系统卡和每个设备卡之间实现点对点的RST#和信号隔离。这使OS可以自动隔离一个坏卡,然后将一个替代卡(已经安装)启动,接着坏卡继续工作。所以它通常也称作无缝切换或无间断切换,是一种冗余设计方案。
三种热切换的自动化层次不同,实现的复杂程度也各有不同。下面介绍一种支持全热切换的cPCI平台的HotSwap子系统实现方案,对其硬件电路和软件设计分别进行介绍。
2 cPCI热切换子系统硬件实现
2.1 桥接芯片
在硬件电路上需要一兼容cPCI规范的PCI-to-PCI的桥接芯片,以便热插拔卡时实现引脚控制逻辑和支持全热切换功能。以PLX PCI6150为例,它提供一个HotSwap寄存器,记录设备插拔状态,其定义如表1所示。
表1 HotSwap寄存器定义
bit15~8 | 7 | 6 | 5,4 | 3 | 2 | 1 | 0 |
保留 | INS | EXT | PI | LOO | PIE | EIM | DHA |
DHA:Device Hiding Arm,设备隐藏处理,在设备卡刚插入尚未正常工作前或被驱动程序停止之间可隐藏后级总线设备。
EIM:Enable or Disable ENUM#,使能或禁止ENUM#输出。
PIF:Pending Insert or Extrace act,暂时挂起插入或者拔出动作。
LOO:LEN On or Off,LED指示控制,与芯片的LED引脚相对应。
PI:Programming Interface,可编程接口,软件触发插入/拔出等动作。
EXT:Extraction State,拔出状态位,当微开关断开时,此状态位为1。
INS:Insertion State,插入状态位,在PCI6150上电复位成功后,此状态位为1。
2.2 硬件电路逻辑
系统卡电路在逻辑上就是一普遍PC主机板,它与热切换相关的部分集中在对来自cPCI连接器的ENUM#信号的处理。在设计时,将它接在系统板Super I/O芯片Winbond W83627HF的IRQIN0引脚,以扩展中断输入的ISA中断方式实现。这样设计的好处是:可避免与其它PCI设备共享中断,而独点一个中断以保证中断的响应速度;该引脚输入是可编程的,可根据系统的中断使用情况分配任意空闲中断;而且该中断可以不挂靠任何物理设备而独立存在,这样驱动程序也就可以设计成一静态服务程序,静态服务程序安装/卸载比物理设备驱动程序要简单得多。ENUM#是低电平有效,而IRQIN0输入是边沿触方式,需要一逻辑电路进行转换。系统卡逻辑框图如图1所示。
设备卡电路中与热切换相关的部分是微开关电路和状态LED驱动,PCI6150的ENUM#信号直接与cPCI连接器的同名信号相连。EUNM#信号还和LED信号一起被用来驱动一双色LED,ENUM#信号为低时,LED被驱动为红色闪烁;ENUME信号为高、LOO信号为高时LED被驱动为红色,LOO信号为低时LED信号被驱动为绿色。设备卡逻辑电路如图2所示。
整个系统电路的逻辑工作是:当设备卡插入时,PCI6150上电初始化,芯片逻辑置HotSwap寄存器INS状态位,触发ENUM#信号为低,LED闪烁红色,ENUM#经cPCI底板到达系统卡,经电平/边沿转换,生成中断请求有效信号IRQIN0,处理器响应中断,进入中断服务程序,ENUM#信号被撤除,设备驱动程序成功安装后置LOO位,状态指示为红色,设备开始工作。当要拔出设备卡时,EJECT微开关先被断开,PCI5160置HotSwap寄存器EXT位,激活ENUM#信号,状态LED为闪烁红色,处理器响应中断,ENUM#被撤除,通知OS卸载设备驱动程序,之后热交换软件清LOO位,状态LED指示蓝色,设备可以安全拔出。整个过程无需用户与操作系统交互,根据LED的显示即可判断卡的工作状态,安全顺利实现热切换。
CPCI 相关文章:
- 基于cPCI总线的嵌入式遥测前端处理器系统设计(04-27)
- CPCI总线在数字化电台中的设计(03-26)