技术文章

技术与服务

您现在的位置:首页 » 技术与服务 » 技术文章
技术文章

CompactPCI Hot Swap介绍

2016-04-04 10:39:46 点击数:

摘要
近年来,在PICMG组织的推广下,CompactPCI产品所拥有的模块化、易使用以及易维护的优点,已广泛地应用于军事武器系统、航天工业、电信网络、CTI等多种领域。在CompactPCI的规格中,就以热插拔(Hot Swap)为最突出、最吸引厂家眼光的一项技术。

PICMG 2.1中详细地定义出Hot Swap的目的及应用,其最主要的目的在于提供一种平台在系统不断电条件下,周边卡甚至于系统卡能在不破坏整个系统的正常工作下,让操作者或管理者拔出或插入,以利于维修或系统重新组态。本篇文章将就硬件及软件的角度来介绍如何在CompactPCI产品上实现Hot Swap的技术。

Hot Swap平台架构
在文章的一开始,我们先就PICMG 2.1中所描述的Hot Swap系统架构做一简单的说明。在规格中主要将Hot Swap系统分为Basic Hot Swap、Full Hot Swap和High Availability三类,此三种类别的系统架构都含括在以下的架构图中。



在架构图中最底层的部份为可热插拔卡片所应支持的硬件设计,它必须有一个可以掌控卡片插拔状态及控制Hot Swap LED的芯片,在卡片热插拔时能够发出ENUM#讯号告知系统CPU卡。架构图中间的部份为CompactPCI的背板设计,因为CompactPCI Bus的独特硬件接触界面有长短针的分别(如图二),所以在热插拔卡片时可以避免因为电源的不当输入而造成卡片的损害。另外,CompactPCI背板上还提供了ENUM#讯号的传递界面让可热插拔卡和系统CPU卡沟通。

最后,在架构图的最上层为系统CPU卡所必须支持的部份,它必须有一个可以知道卡片热插拔的界面(ENUM#或PCI Bus),并且必须要有一Hot Swap driver来负责卡片热插拔时的资源分配及卸载,否则即使CPU卡可以知道有任何的卡片插拔时,使用者也无法正常地使用。基于以上的架构,因为部份的组成组件的不支持便会形成不同的Hot Swap平台,如Full Hot swap平台即少了HA Service、HA system driver以及Hardware Connection Control等组成组件。本篇文章将以介绍Full Hot Swap平台为主。

Hot Swap流程
在Full Hot Swap的平台上,只有卡片的插拔是需要操作员来手动操作,其余的像讯号的连结,资源的分配及卸载,都是靠硬件及软件来达成。卡片插入的过程可由图三来表示。

当操作员插入卡片并将把手扣上时,可热插拔卡上的电源会开始供应并且发出ENUM#的讯号告知系统CPU卡,CPU卡在接收到ENUM#讯号之后,会先确认PCI总线上那张卡片是刚被插上的,然后将此卡相关的资源需求安排好并且加载它的驱动程序,等驱动程序完整地被加载之后便可以正常地使用这张卡。

外围卡的拔出正好是相反的动作,当操作员打开外围卡的把手时,此时卡片会送出ENUM#讯号告知系统CPU卡,CPU卡在接收到讯号之后,即会开始扫描总线上的卡以确认那张卡要被移除,然后开始卸载此卡的驱动程序以及相关的资源要求,最后Hot Swap driver会再把卡片的Hot Swap LED点亮以告知操作员可以拔掉这张外围卡了。

由插入及拔出的过程,我们可以知道要支持热插拔是需要特殊的硬件及软件的设计。

Hot Swap的特殊硬件设计</B>
要支持热插拔,在硬件的设计上,首推要找到一颗支持热插拔的芯片,此芯片必须能够记录插拔的状态、能够控制Hot Swap LED、能够反应从卡片把手所送来的状态改变,进而发送ENUM#讯号。这部份的应用,在一般的I/O界面卡,通常会使用PLX的芯片,而CPU外围卡就必须依靠非透明桥(Non-Transparent Bridge)的支持,像是凌华科技的cPCI-6765使用了Intel的21555桥接器、cPCI-6810/20使用了HiNT的HB6桥接器,这类型的桥接器在未来的Hot Swap平台上会占有越来越多的比重。

另外,在外围卡的电源供应的设计上,必须考虑到卡片在插入或拔除时,板子上的所有组件不会被破坏,而且在PCI总线上的讯号能够同步,所以在设计上通常都会利用背板上的长短针来达到这些要求。

在热插拔的平台上,系统CPU卡所要设计的硬件最主要为ENUM#讯号的接收。通常这类的设计是各家厂商有自己设计方式。像凌华科技在这方面的设计就利用了GPI或中断甚至是GPI和中断并存。如果在系统CPU卡上没有ENUM#接收的硬件设计的话,通常也可以利PCI总线扫描的形式来达成热插拔的效果。

Hot Swap的特殊软件需求</B>
在软件的需求上,不外乎是能够反应外围卡所送来的讯号,进而分配或移除资源给外围卡以及加载或卸载外围卡的驱动程序。根据上节所描述的接收讯号的机制,GPI或中断甚至于PCI总线扫描的形式,我们可将软件分为轮询(polling)以及中断服务程序(Interrupt service routine)两类。前者必须利用固定的时间定期去询问是否有卡片的插拔,然后再启动Hot Swap服务程序,而后者主要是利用中断来启动Hot Swap服务程序。

Hot Swap服务程序包含了外围卡的资源分配及卸载、驱动程序的加载及移除、以及Hot Swap指示灯的致能。这一部份是最复杂的一部份,它必须考虑到所有可能的资源分配,包含I/O端口、内存以及中断。而且不同的操作系统有各自的处理模式,如果在这一方面没有处理好的话,并不能达到真正的Hot Swap的目的。目前有些软件厂商已有针对Hot Swap所开发出来的模块套件,而凌华科技在这方面也陆续开发了Windows系列以及Linux上的Hot Swap服务程序。

结论
在工业计算机尤其是CompactPCI的平台,热插拔已是不可或缺的一项基本需求,看似简单的一项规格,其实是需要不断地在硬件及软件上做不断地改进,才能达到在不影响系统的正常运作下,汰换或重组系统组态的目的。以上仅以浅显的方式介绍了如何在CompactPCI的平台上实现热插拔的功能,提供您参考。