外围部件互连总线的测试方法 【技术领域】
本发明涉及一种硬件测试方法,尤其涉及一种外围部件互连总线的测试方法。
背景技术
外围部件互连总线即PCI(Peripheral Component Interface)总线,是一种先进的高性能32/64位地址数据复用局部总线,可同时支持多组外围设备,并且不受制于处理器,为中央处理器与高速外围设备提供一座沟通的桥梁,提高数据吞吐量(32位时最大可达132MB/s),是当今PC领域中流行的总线。PCI总线是90年代中期兴起的先进的计算机总线,以其高性能,高可靠性,迅速成为当今计算机主流总线。
目前,对PCI总线的测试方法为在总线上插一块PCI设备,对此PCI设备进行测试。对PCI总线的测试都是功能测试,无法检验PCI总线在高速传输数据时的性能。由于PCI设备种类繁多,难以保证其它PCI设备测试结果,而且一般的PCI设备需要的系统资源有限,所以测试的涵盖率不够,也很难做到大数据吞吐量的测试。
【发明内容】
有鉴于此,本发明的目的是为了解决上述问题而提出一种外围部件互连总线的测试方法,可以满足所有PCI设备对资源的要求,能够达到足够的数据吞吐量。
本发明的目的可通过如下措施来实现:
一种外围部件互连总线的测试方法,其通过PCI测试卡直接操作PCI总线映像的I/O、内存空间,该方法包括如下步骤:
将PCI测试卡插入PCI插槽中;
根据配置信息为该PCI测试卡分配主机访问所需地参数;
将该参数写入该PCI测试卡的PCI配置空间;
根据该配置空间确定该PCI测试卡的端口映像方式;
根据该映像方式,分别向32位及64位地址写入数据;及
读取数据,并根据该读取结果得出测试结论。
所述测试方法包括列举PCI总线上的设备,找到该PCI测试卡的步骤。
所述列举PCI总线上的设备,找到该PCI测试卡的步骤是由底层驱动程序WDM完成的。
所述配置信息即为BAR寄存器及各寄存器的值,其是在激活时由桥接电路自动读取的。
所述桥接电路为将局部总线转换为PCI总线的专用接口芯片。
所述配置信息是在PCI测试卡的数据存储芯片中,包括厂商及设备标识ID。
所述参数可以从PCI配置空间的各基址所对应的的寻址空间中得到。
上述测试方法还包括将该参数值写入桥接电路。
所述根据该配置空间确定该PCI测试卡的端口映像方式,为根据该配置信息来决定和分配PCI I/O和PCI内存的地址空间,还包括如下步骤:
读对应的端口配置寄存器;
判断其0位;
根据其0位确定该PCI测试卡的端口映像方式。
所述根据其0位确定该PCI测试卡的端口映像方式的步骤,若该0位为数值0,则表示其是按内存方式设置的,否则为I/O方式设置的。
所述根据该映像方式,分别向32位及64位地址写入数据的步骤,是为向基址寄存器写入全1,根据读取结果获得基址的大小。
所述根据读取结果获得基址的大小,若是按内存方式设置的,则从第4位开始0的数目表示基址的大小。
所述根据读取结果获得基址的大小,若是按I/O方式设置的则从第2位开始的0的数目表示基址的大小。
该PCI测试卡符合PCI总线技术规范,并具有较大的I/O及内存空间。
本发明相比现有技术具有如下优点:
本发明通过专用的PCI测试卡直接操作PCI总线映像的I/O、内存空间,PCI测试卡具有较大I/O、内存空间,测试时的数据流量接近PCI总线带宽,使测试的资源涵盖率大,可以满足所有PCI设备对资源的要求,从而验证PCI总线的性能,提高测试效率。
【附图说明】
图1为本发明的外围部件互联总线的测试方法的总体流程图;及
图2为本发明的外围部件互联总线的测试方法中根据配置空间确定端口映像方式的流程图。
【具体实施方式】
下面结合附图对本发明进行详细说明。
PCI总线是为了满足高速数据传输而设计的一种独立于处理器的本地总线,具有32位和64位两种复用的地址数据通路,一边与处理器和内存总线接口相联,另一边为外设扩展提供了高速信道。在结构上,PCI总线是在CPU和原来的系统总线之间插入的一级总线,由一个桥接电路来实现对这一层的管理,实现上下接口之间的数据传送,在桥接电路管理器中提供信号缓冲,这样使PCI总线可以支持最多10个外部设备,同时PCI总线也支持总线主控技术,即能够允许智能设备在需要时取得总线控制权来加速数据的传送。
对外围部件互连总线的测试方法,请参见图1,图1是本发明的外围部件互连总线的测试方法的总体流程图。如图所示,首先将PCI测试卡插入PCI插槽中(步骤110);根据配置信息为该PCI测试卡分配主机访问所需的参数(步骤120);将该参数写入该PCI测试卡的PCI配置空间(步骤130);根据该配置空间确定该PCI测试卡的端口映像方式(步骤140);根据该映像方式,分别向32位及64位地址写入数据(步骤150);读取数据,并根据该读取结果得出测试结论(步骤160)。
PCI总线具有独立的配置空间,从而实现参数的自动配置,使所有的PCI设备真正即插即用。PCI总线规定的配置空间、总长度为256个位,配置信息按照一定的顺序和大小依次存放,前64个字节称为头标区,是任何PCI兼容设备都应实现的空间,其中偏移地址00H~04H为PCI设备的厂商及设备标识,10H~24H为本地空间地址寄存器。
在Windows NT下,系统不允许处于ring3级的用户程序和用户模式驱动程序直接使用I/O指令,如果使用了I/O指令将会导致特权指令意外(Privileged Instruction Exception)。Windows工作在32位保护模式下,采用了分段、分页机制,与实模式在于CPU寻址方式上有根本区别。所以必须获得ring0级的权限,要通过Windows驱动程序进行访问。因此要加载底层驱动程序WDM,总线驱动程序为它的控制器、适配器、桥接电路或其它设备担当功能驱动程序。WDM一运行就是工作在系统的底层Ring0处,提供各种接口给应用程序调用。
WDM驱动体系重新定义驱动程序层次,以便适应即插即用系统。总线驱动程序负责列举设备,也就是说,它负责发现总线上的所有设备并检测设备何时添加到总线上或何时从总线上删除。总线驱动程序每发现一个设备就创建一个对应的物理设备对象。使得PCI配置代码可以试图检测在一个给定的PCI总线上所有可能的PCI配置头,从而知道哪个PCI插槽上目前有设备,哪个插槽上暂无设备。
将PCI测试卡插入CPI插槽中,该PCI测试卡符合PCI总线技术规范,并具有较大的I/O及内存(Memory)空间。WDM驱动程序遍历PCI总线,列举总线上的设备,找到该PCI测试卡。不论PCI设备和PCI桥在哪里,系统都将检测到,并使用它们的配置头中的状态和配置寄存器来对它们进行配置。一般来讲,每个PCI插槽的PCI配置头都位于在PCI配置空间(Configuration)的一个偏移量(Offset)处,这个偏移量是与每个PCI插槽的位置顺序相关的。
系统激活时,由桥接电路自动读取预先存放于串行EEPROM(在PCI设备卡上的数据存储芯片)中的配置信息。其中桥接电路为将局部总线转换为PCI总线的专用接口芯片,所述配置信息包括厂商及设备标识ID。由系统BIOS或操作系统自动查找并识别主机插槽上的PCI设备,PCI BIOS函数是在所有平台上都通用的一些标准例程。BIOS函数的存在使得CPU可以存取所有的PCI地址空间,并根据配置信息为设备分配主机访问所必需的目标空间基地址、目标空间大小、中断等参数,并将所分配的值写入桥接电路及对应的PCI设备的PCI配置空间。
其中根据该配置空间确定该PCI测试卡的端口映像方式。请参见图2,图2是本发明的外围部件互联总线的测试方法中根据配置空间确定端口映像方式的流程图。首先读对应的端口配置寄存器(步骤210);再判断其0位(步骤220);最后根据其0位确定该PCI测试卡的端口映像方式(步骤230)。
设备使用PCI I/O和PCI内存(Memory)这两种地址空间来与其运行的设备驱动程序进行通信。所有符合PCI2.2规范的PCI设备,都要通过PCI的I/O及内存(Memory)映像控制局部总线寄存器,映像局部ram空间,因此,PCI总线是否能够对PCI的I/O及内存(Memory)空间正确访问,决定了PCI总线能否正常工作。PCI设备的许多参数,包括所用的中断号、端口地址的范围、I/O方式、内存的地址、内存映像方式等,都可以从PCI配置空间的各基址所对应的寻址空间中得到。对于本发明,最重要的是获得基址寄存器BAR,基址寄存器分两种类型,以表示一个寄存器是位于PCI I/O空间或PCI内存(Memory)空间。这是通过寄存器的位0来设置的。PCI器件资源并不总是设计设备时设置的初值,系统会根据硬件情况为PCI设备分配新的资源。确定一个端口是按什么方式映像的,可以读对应端口的配置寄存器(Configuration Register)。读出后,判断其0位,如果0位为数值0,表示其是按内存方式设置的,否则为I/O方式设置的。如果要获得基址的大小,可以向基址寄存器写入全1即写入FFFFH,然后读基址寄存器,如果是内存方式,从第4位开始的0的数目表示基址的大小,如果是I/O方式,则从第2位开始的0的数目表示基址的大小。PCI总线具有32位和64位两种复用的地址数据通路,对32位与64位PCI插槽的工作方式分别进行检测。然后比较读写结果是否一致,从而得出测试结论。
虽然本发明以前述的较佳实施例揭露如上,然其并非用以限定本发明,任何熟习相像技艺者,在不脱离本发明的精神和范围内,当可作些许之更动与润饰,因此本发明的专利保护范围须视本说明书所附的权利要求书所界定者为准。