CN106776382B - 一种pcie设备的配置方法及装置 - Google Patents

一种pcie设备的配置方法及装置 Download PDF

Info

Publication number
CN106776382B
CN106776382B CN201611097298.8A CN201611097298A CN106776382B CN 106776382 B CN106776382 B CN 106776382B CN 201611097298 A CN201611097298 A CN 201611097298A CN 106776382 B CN106776382 B CN 106776382B
Authority
CN
China
Prior art keywords
pcie
bus number
controller
real
processed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611097298.8A
Other languages
English (en)
Other versions
CN106776382A (zh
Inventor
孙大娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dongtu Jinyue Technology Co Ltd
Original Assignee
Beijing Dongtu Jinyue Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dongtu Jinyue Technology Co Ltd filed Critical Beijing Dongtu Jinyue Technology Co Ltd
Priority to CN201611097298.8A priority Critical patent/CN106776382B/zh
Publication of CN106776382A publication Critical patent/CN106776382A/zh
Application granted granted Critical
Publication of CN106776382B publication Critical patent/CN106776382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本发明实施例提供了一种PCIE设备的配置方法及装置,方法包括:系统中使用至少两个所述PCIE控制器连接PCIE设备时,Vxworks5.5操作系统分别向各PCIE控制器分配真实总线号,以及向各PCIE设备分配真实总线号;根据真实总线号,向各PCIE控制器重新分配虚拟总线号,以及向各PCIE设备重新分配虚拟总线号;在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据虚拟总线号,对待处理的PCIE控制器或者PCIE设备执行读写操作。应用本发明实施例能够在一个CPU上配置至少两个PCIE控制器,使至少两台PCIE设备能够分别与所述PCIE控制器连接,以减少PCIE设备的配置成本。

Description

一种PCIE设备的配置方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种PCIE设备的配置方法及装置。
背景技术
VxWorks5.5操作系统适用于快速外设部件互连标准(Peripheral ComponentInterconnect Express,PCIE)设备,为PCIE设备提供资源管理等功能;具体地,VxWorks5.5操作系统运行于CPU上,包括PCIE总线驱动和PCIE库函数。在实际应用中,PCIE控制器配置在CPU上,PCIE设备与PCIE控制相连,如图1所示,如图1为PCIE控制器与PCIE设备的连接示意图。
但是,由于VxWorks5.5操作系统向每个PCIE控制器分配的总线号均为0,使得运行于VxWorks5.5操作系统之上的应用程序无法根据总线号区分每个PCIE控制器,这样即便CPU有多个PCIE控制器,如果采用VxWorks5.5操作系统,CPU也只能配置管理一个PCIE控制器。同时,由于每个PCIE控制器只能连接一个PCIE设备,当需要使用采用VxWorks5.5操作系统的CPU控制至少两个PCIE设备时,只能使第一个PCIE设备连接PCIE控制器,第二个PCIE设备通过专用的硬件设备与第一个PCIE设备串联,同理,其他PCIE设备均通过专用的硬件设备与前一个PCIE设备串联连接,如图2所示,图2为PCIE控制器与多台PCIE设备的连接示意图。这样,不仅增加了PCIE设备的配置成本,而且给PCIE设备的安装及维护带来了不便。
发明内容
本发明实施例的目的在于提供一种PCIE设备的配置方法及装置,能够在一个CPU上配置至少两个PCIE控制器,使至少两台PCIE设备能够分别与所述PCIE控制器连接,以减少PCIE设备的配置成本。具体技术方案如下:
本发明的一种实施例公开了一种PCIE设备的配置方法,应用于采用VxWorks5.5操作系统的CPU,所述CPU上配置有至少两个PCIE控制器,所述方法包括:在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配真实总线号,以及向各所述PCIE设备分配所述真实总线号;根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号;其中,各所述PCIE控制器与所述虚拟总线号是一一对应的,以及各所述PCIE设备与所述虚拟总线号是一一对应的;在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
优选地,所述方法还包括:在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配对应的存储空间,以及向各所述PCIE设备分配对应的存储空间;其中,各所述PCIE控制器与所述存储空间是一一对应的,以及各所述PCIE设备与所述存储空间是一一对应的。
优选地,所述根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号的步骤,包括:根据各所述PCIE控制器分别对应的所述存储空间和所述真实总线号,以及各所述PCIE设备分别对应的所述存储空间和所述真实总线号,按照从0依次往后的顺序、依次向各所述PCIE控制器和各所述PCIE设备重新分配虚拟总线号。
优选地,所述根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号的步骤,包括:根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
优选地,所述根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作的步骤,包括:根据所述真实总线号,确定所述待处理的PCIE控制器或者PCIE设备对应的所述存储空间;根据所述存储空间,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
本发明的又一种实施例公开了一种PCIE设备的配置装置,应用于采用VxWorks5.5操作系统的CPU,所述CPU上配置有至少两个PCIE控制器,所述装置包括:第一分配单元,用于在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配真实总线号,以及向各所述PCIE设备分配所述真实总线号;第二分配单元,用于根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号;其中,各所述PCIE控制器与所述虚拟总线号是一一对应的,以及各所述PCIE设备与所述虚拟总线号是一一对应的;获得单元,用于在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;读写单元,用于根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
优选地,所述装置还包括:第三分配单元,用于在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配对应的存储空间,以及向各所述PCIE设备分配对应的存储空间;其中,各所述PCIE控制器与所述存储空间是一一对应的,以及各所述PCIE设备与所述存储空间是一一对应的。
优选地,所述第二分配单元,具体用于根据各所述PCIE控制器分别对应的所述存储空间和所述真实总线号,以及各所述PCIE设备分别对应的所述存储空间和所述真实总线号,按照从0依次往后的顺序,依次向各所述PCIE控制器和各所述PCIE设备重新分配虚拟总线号。
优选地,所述获得单元,具体用于根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
优选地,所述读写单元,包括确定子单元和读写子单元;所述确定子单元,用于根据所述真实总线号,确定所述待处理的PCIE控制器或者PCIE设备对应的所述存储空间;所述读写子单元,用于根据所述存储空间,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
本发明实施例提供的一种PCIE设备的配置方法及装置,应用于采用VxWorks5.5操作系统的CPU,所述CPU上配置有至少一个PCIE控制器,本发明实施例能够在检测到至少两个PCIE控制器连接PCIE设备时,分别向各PCIE控制器分配真实总线号,以及向各PCIE设备分配真实总线号;接下来,根据真实总线号,向各PCIE控制器重新分配虚拟总线号,以及向各PCIE设备重新分配虚拟总线号;由于PCIE读写函数需要依据真实总线号来对各PCIE控制器和各PCIE设备执行读写操作,因此,PCIE读写函数在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,需要根据待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得待处理的PCIE控制器或者PCIE设备对应的真实总线号,以执行对所述待处理的PCIE控制器或者PCIE设备的读写操作。这样,在CPU上配置至少两个PCIE控制器,使至少两台PCIE设备能够分别直接与PCIE控制器连接的场景下,运行于VxWorks5.5操作系统之上的应用程序能够根据虚拟总线号区分多个PCIE控制器和PCIE设备,而PCIE读写函数可以依据由虚拟总线号转换后的真实总线号执行读写操作,不仅降低了PCIE设备的配置成本,而且便于安装及维护PCIE设备。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为PCIE控制器与PCIE设备的连接示意图;
图2为PCIE控制器与多台PCIE设备的连接示意图;
图3为本发明实施例的PCIE设备的配置方法的一种流程图;
图4为本发明实施例的CPU上配置两个PCIE控制器的连接示意图;
图5为本发明实施例的PCIE设备的配置方法的又一种流程图;
图6为本发明实施例的PCIE设备的配置装置的一种结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种PCIE设备的配置方法,应用于采用VxWorks5.5操作系统的CPU,所述CPU上配置有至少两个PCIE控制器。
参见图3,图3为本发明实施例的PCIE设备的配置方法的一种流程图,包括如下步骤:
步骤301,在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配真实总线号,以及向各所述PCIE设备分配真实总线号;
其中,各所述PCIE控制器与所述真实总线号不是一一对应的,以及各所述PCIE设备与所述真实总线号也不是一一对应的。
在本发明实施例中,CPU上可以配置至少两个PCIE控制器,每个PCIE控制器下可以连接至少一个PCIE设备。比如,CPU上可以配置两个PCIE控制器,每个PCIE控制器下可以连接一个PCIE设备,如图4所示,图4为本发明实施例的CPU上配置两个PCIE控制器的连接示意图。需要说明的是,本发明对CPU上配置PCIE控制器的个数,以及每个PCIE控制器下连接的PCIE设备的个数不加以限制。
具体地,VxWorks5.5操作系统在检测到至少两个PCIE控制器连接PCIE设备时,向所有配置在CPU上的PCIE控制器、以及在PCIE控制器下连接的PCIE设备进行初始化配置。在实际应用中,可以将一个PCIE控制器及所述PCIE控制器下连接的PCIE设备作为一个组,依次对每个PCIE控制器组进行初始化配置;其中,初始化配置包括向各PCIE控制器分配真实总线号、存储空间,确定真实总线号和存储空间之间的对应关系,以及向各PCIE设备分配真实总线号、存储空间,确定真实总线号和存储空间之间的对应关系。
需要说明的是,本步骤中对单个PCIE控制器或者单个PCIE控制器进行初始化配置的具体方法可以参考现有技术。
实际应用中,在本发明的一种优选实施例中,所述方法还包括:
在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配对应的存储空间,以及向各所述PCIE设备分配对应的存储空间;
其中,各所述PCIE控制器与所述存储空间是一一对应的,以及各所述PCIE设备与所述存储空间是一一对应的。
具体地,VxWorks5.5操作系统在检测到PCIE设备连接PCIE控制器后,可以向PCIE控制器以及在PCIE控制器下连接的PCIE设备分配的真实总线号和存储空间,以及根据所述真实总线号与所述存储空间,为PCIE控制器和PCIE设备挂接新的PCIE读写函数,需要说明的是,可以通过为PCIE控制器和PCIE设备挂接新的PCIE读写函数,确定PCIE控制器分别对应的真实总线号与存储空间之间的映射关系,以及PCIE设备分别对应的真实总线号与存储空间之间的映射关系。
但是,由于VxWorks5.5操作系统向每个PCIE控制器组分配的真实总线号均是从0开始依次排序,这样,当初始化配置完成后,所有的PCIE控制器被分配到的真实总线号均为0,所有的PCIE控制器下连接的第一个PCIE设备被分配到的真实总线号均为1;同理,其他PCIE控制器下连接的PCIE设备被分配到的真实总线号也是重复的。可以理解的,各PCIE控制器与被分配的真实总线号不是一一对应的,以及各PCIE设备与被分配的真实总线号也不是一一对应的。
需要说明的是,在实际应用中,用户通过运行于VxWorks5.5操作系统之上的应用程序下发读写指令,PCIE读写函数接收并执行读写指令。但是,在现有技术中,运行于VxWorks5.5操作系统之上的应用程序是根据真实总线号区分PCIE设备和PCIE控制器的,在采用VxWorks5.5操作系统的CPU上配置多个PCIE控制器的场景下,运行于VxWorks5.5操作系统之上的应用程序无法区分真实总线号相同的各PCIE控制器和真实总线号相同的各PCIE设备。
因此,为了避免对真实总线号相同的多个PCIE控制器或者PCIE设备进行误操作,目前在采用VxWorks5.5操作系统的CPU中,只能配置一个PCIE控制器。同时,由于每个PCIE控制器只能直接连接一个PCIE设备,那么,当需要使用采用VxWorks5.5操作系统的CPU控制至少两个PCIE设备时,只能使第一个PCIE设备直接连接PCIE控制器,第二个PCIE设备通过专用的硬件设备与第一个PCIE设备串联,同理,其他PCIE设备均通过专用的硬件设备与前一个PCIE设备串联连接,不仅增加了PCIE设备的配置成本,而且给PCIE设备的安装及维护带来了不便。
还需要说明的是,由于每个PCIE控制器对应的存储空间均是预先设置好的,且每个PCIE控制器下连接的PCIE设备对应的存储空间也是按照预设规则分配的,因此,每个PCIE设备对应的存储空间是唯一的,以及每个PCIE控制器对应的存储空间也是唯一的,也就是说,即使多个PCIE控制器的真实总线号相同,但每个PCIE控制器对应的存储空间是不同的。
比如,在采用VxWorks5.5操作系统的CPU上配置PCIE0控制器和PCIE1控制器,且PCIE0控制器下连接PCIE0设备,PCIE1控制器下连接PCIE1设备的场景下,VxWorks5.5操作系统向PCIE0控制器分配的真实总线号为0x00,存储空间的首地址为0xB000 0000;向PCIE0设备分配的真实总线号为0x01,存储空间的首地址为0xA000 0000;而向PCIE1控制器分配的真实总线号也为0x00,存储空间的首地址为0xD000 0000;向PCIE1设备分配的真实总线号也为0x01,存储空间的首地址为0xC000 0000;确定PCIE0控制器对应的总线号和存储空间之间的映射关系、PCIE0设备对应的总线号和存储空间之间的映射关系、PCIE1控制器对应的总线号和存储空间之间的映射关系、PCIE1设备对应的总线号和存储空间之间的映射关系,并将所述映射关系记录在PCIE读写函数中。
步骤302,根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号;
其中,各所述PCIE控制器与所述虚拟总线号是一一对应的,以及各所述PCIE设备与所述虚拟总线号是一一对应的。
在本步骤中,VxWorks5.5操作系统可以根据真实总线号,向各PCIE控制器重新分配虚拟总线号,以及向各PCIE设备重新分配所述虚拟总线号。
在现有技术中,由于多个PCIE控制器和PCIE设备可能被分配了同一个真实总线号,而运行于VxWorks5.5操作系统之上的应用程序只能根据真实总线号来区分各PCIE控制器或者各PCIE设备。因此,本发明实施例可以根据各PCIE控制器对应的唯一存储空间,向各PCIE控制器重新分配唯一的虚拟总线号;以及根据各PCIE设备对应的唯一存储空间,向各PCIE设备重新分配唯一的虚拟总线号。这样,运行于VxWorks5.5操作系统之上的应用程序就能够根据各PCIE控制器和各PCIE设备对应的唯一虚拟总线号,准确区分各PCIE控制器和各PCIE设备。
在实际应用中,通过VxWorks5.5操作系统注册的PCIE读写函数可以根据各PCIE控制器对应的唯一存储空间,以及各PCIE设备对应的唯一存储空间,按照预设的分配规则,分别为各PCIE控制器重新分配唯一的虚拟总线号,以及向各PCIE设备重新分配唯一的虚拟总线号。
在本发明的又一种优选实施例中,所述步骤302具体可以包括:
根据各所述PCIE控制器分别对应的所述存储空间和所述真实总线号,以及各所述PCIE设备分别对应的所述存储空间和所述真实总线号,按照从0依次往后的顺序,依次向各所述PCIE控制器和各所述PCIE设备重新分配虚拟总线号。
当然,在保证各PCIE控制器对应的虚拟总线号是唯一的,以及各PCIE设备对应的虚拟总线号是唯一的前提下,也可以按照其他分配规则分配虚拟总线号,本发明向为PCIE控制器和PCIE设备分配虚拟总线号的分配规则不加以限制。
比如,在采用VxWorks5.5操作系统的CPU上配置PCIE0控制器和PCIE1控制器,且PCIE0控制器下连接PCIE0设备,PCIE1控制器下连接PCIE1设备的场景下,PCIE读写函数可以按照从0开始依次往后的顺序为PCIE0控制器、PCIE0设备、PCIE1控制器和PCIE1设备分配的虚拟总线号分别为0x00、0x01、0x02和0x03。
步骤303,在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;
在本步骤中,PCIE读写函数在接收到来自VxWorks5.5操作系统之上的应用程序下发的、针对待处理的PCIE控制器或者PCIE设备的读写指令时,可以根据待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得待处理的PCIE控制器或者PCIE设备对应的所述真实总线号。
在本发明实施例中,由于各PCIE控制器和各PCIE设备均对应唯一的虚拟总线号,运行于VxWorks5.5操作系统之上的应用程序可以根据虚拟总线号,区分各PCIE控制器和各PCIE设备。这样,在采用VxWorks5.5操作系统的CPU上配置多个PCIE控制器时,运行于VxWorks5.5操作系统之上的应用程序能够针对各PCIE控制器或者各PCIE设备下发读写指令,以使PCIE读写函数对各PCIE控制器和各PCIE设备执行读写。
需要说明的是,虚拟总线号只用于使运行于VxWorks5.5操作系统之上的应用程序能够区分各PCIE控制器和各PCIE设备,以使用户能够通过VxWorks5.5操作系统之上的应用程序,调用PCIE读写函数对各PCIE控制器和各PCIE设备下发读写指令。但是,PCIE读写函数仍然需要依据在初始化配置中分配的真实总线号来对各PCIE控制器和各PCIE设备执行读写操作。因此,本发明实施例在PCIE读写函数中增加了将虚拟总线号转换为初始化配置中分配的真实总线号的处理过程。
步骤304:根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
在本步骤中,PCIE读写函数能够将虚拟总线号转换得到的真实总线号,进而根据真实总线号对各PCIE控制器和各PCIE设备执行读写操作。
比如,在采用VxWorks5.5操作系统的CPU上配置PCIE0控制器和PCIE1控制器的场景下,PCIE0控制器、PCIE0设备、PCIE1控制器和PCIE1设备分别对应的虚拟总线号为0x00、0x01、0x02和0x03,PCIE0控制器、PCIE0设备、PCIE1控制器和PCIE1设备分别对应的初始化配置中分配的总线号为0x00、0x01、0x00、0x01。此时,当用户通过运行于VxWorks5.5操作系统之上的应用程序对各PCIE控制器和各PCIE设备下发读写操作的指令时,PCIE读写函数可以将虚拟总线号分别转换为初始化配置中分配的真实总线号,以使得VxWorks5.5操作系统能够识别各PCIE控制器和各PCIE设备。
可见,本发明实施例能够在系统中采用至少两个PCIE控制器连接PCIE设备时,向各PCIE控制器分配真实总线号以及向各PCIE设备分配真实总线号;接下来,根据真实总线号,向各PCIE控制器重新分配虚拟总线号,以及向各PCIE设备重新分配虚拟总线号;由于PCIE读写函数需要依据真实总线号来对各PCIE控制器和各PCIE设备执行读写操作,因此,在接收到来自运行于VxWorks5.5操作系统之上的应用程序针对待处理的PCIE控制器或者PCIE设备的读写指令时,可以根据虚拟总线号,获得待处理的PCIE控制器或者PCIE设备对应的真实总线号;那么,PCIE读写函数就能够根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。这样,在CPU上配置至少两个PCIE控制器,使至少两台PCIE设备能够分别直接与PCIE控制器连接的场景下,运行于VxWorks5.5操作系统之上的应用程序能够根据虚拟总线号区分多个PCIE控制器和PCIE设备,而PCIE读写函数也可以依据由虚拟总线号转换后的真实总线号执行读写操作,不仅降低了PCIE设备的配置成本,而且便于安装及维护PCIE设备。
进一步地,在本发明的一种优选实施例中,步骤304中所述根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作的步骤,包括:
根据所述真实总线号,确定所述待处理的PCIE控制器或者PCIE设备对应的所述存储空间;
根据所述存储空间,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
需要说明的是,PCIE控制器的功能可以理解为是配置在CPU上的、可以连接PCIE设备的专用接口,需要通过PCIE控制器,对PCIE设备执行读写操作。因此,需要获取PCIE控制器和PCIE设备的存储空间,以便通过PCIE控制器对PCIE设备执行读写操作。
在本发明的另一种优选实施例中,步骤303中所述根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号的步骤,具体可以包括:
根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
进一步的,在本发明的一种应用实施例中,所述根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号的步骤,具体可以包括:
首先,判断所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号是否大于所述真实总线号的最大值;若为是,则将所述虚拟总线号确定为所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;若为否,从所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号中减去所述真实总线号的最大值,得到所述待处理的PCIE控制器或者PCIE设备对应的临时总线号;
接下来,判断所述临时总线号是否大于所述真实总线号的最大值;若为是,则返回所述从所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号中减去根据所述真实总线号的最大值的步骤;若为否,则将所述临时总线号确定为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
在实际应用中,可以先确定真实总线号的最大值,也就是将一个PCIE控制器及所述一个PCIE控制器下连接的多个PCIE设备作为一个PCIE控制器组,需要说明的是,一般情况下,每个PCIE控制器组中的PCIE控制器和PCIE设备的个数是相同的,这样,每个PCIE控制器组中的最大真实总线号就是真实总线号的最大值。
下面举例说明将三个PCIE控制器组中的各PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为真实总线号的过程:
首先,分别判断三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的虚拟总线号是否大于真实总线号的最大值;判断结果为第一个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的虚拟总线号不大于真实总线号的最大值,第二个和第三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的虚拟总线号均大于真实总线号的最大值,那么,可以将第一个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应虚拟总线号确定为真实总线号;
接下来,从第二个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的虚拟总线号中、减去真实总线号的最大值,得到第一临时总线号;判断所述第一临时总线号是否大于真实总线号的最大值;判断结果为所述第一临时总线号不大于真实总线号的最大值,那么可以将所述第一临时总线号确定为第二个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的真实总线号;
同时,从第三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的虚拟总线号中减去真实总线号,得到第三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的第二临时总线号,判断所述第二临时总线号是否大于真实总线号的最大值;判断结果为所述第二临时总线号仍大于真实总线号的最大值,那么,可以再次从所述第二临时总线号中减去真实总线号的最大值,得到第三临时总线号;判断所述第三临时总线号是否大于真实总线号;判断结果为所述第三临时总线号不大于真实总线号,这样就可以将所述第三临时总线号确定为真实总线号,得到第三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的真实总线号。其他PCIE控制器组的虚拟总线号的转换过程类似,这样就可以将各PCIE控制器组对应的虚拟总线号转换为真实总线号。
举例说明,如图5所示,图5为本发明实施例的PCIE设备的配置方法的又一种流程图,在CPU上配置两个PCIE控制器时,PCIE读写函数将虚拟总线号转换为初始化配置中分配的真实总线号的步骤如下所示:
步骤501,PCIE读写函数接收到来自VxWorks5.5操作系统之上的应用程序下发的读写指令,开始将读写指令中的虚拟总线号转换为初始化配置中分配的真实总线号;
步骤502,判断待处理的PCIE控制器或者PCIE设备对应的虚拟总线号是否为0或者1;若为是,则执行步骤503;若为否,则执行步骤507;
步骤503,确定所述待处理的PCIE控制器或者PCIE设备为PCIE0控制器或者PCIE1设备;
步骤504,判断所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号是否为0;若为是,则执行步骤505;若为否,则执行步骤506;
步骤505,确定所述待处理的PCIE控制器或者PCIE设备为PCIE0控制器,并得到PCIE0控制器对应的存储空间的首地址;执行步骤512;
具体地,可以在寄存器的地址上加上PCIE0控制器的基地址,得到PCIE0控制器对应的存储空间的首地址。
步骤506,确定所述待处理的PCIE控制器或者PCIE设备为PCIE1设备,并得到PCIE1设备对应的存储空间的首地址;执行步骤512;
具体地,可以在预设寄存器的地址上加上PCIE1设备的基地址,得到PCIE1设备对应的存储空间的首地址。
步骤507,确定所述待处理的PCIE控制器或者PCIE设备为PCIE2控制器或者PCIE3设备;
步骤508,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号减去2,得到所述待处理的PCIE控制器或者PCIE设备对应的真实总线号;
步骤509,判断待处理的PCIE控制器或者PCIE设备对应的真实总线号是否为0;若为是,则执行步骤510;若为否,则执行步骤511;
步骤510,确定所述待处理的PCIE控制器或者PCIE设备为PCIE2控制器,并得到PCIE2控制器对应的存储空间的首地址;执行步骤512;
具体地,可以在CPU上的寄存器地址上加上PCIE2控制器的基地址,得到PCIE2控制器对应的存储空间的首地址。
步骤511,确定所述待处理的PCIE控制器或者PCIE设备为PCIE3设备,并得到PCIE3设备对应的存储空间的首地址;执行步骤512;
具体地,可以在CPU上的寄存器地址上加上PCIE3设备的基地址,得到PCIE3设备对应的存储空间的首地址。
步骤512,根据所述待处理的PCIE控制器或者PCIE设备对应的存储空间的首地址,对所述待处理的PCIE控制器或者PCIE设备进行读写操作。
另外,在CPU上配置有三个PCIE控制器的场景下,对于第三个PCIE控制器:首先,在判断虚拟总线号大于真实总线号的最大值后,先从第三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的虚拟总线号中减去真实总线号,得到第一临时总线号;接下来,判断第一临时总线号仍大于真实总线号的最大值,那么,需要再从第一临时总线号中减去真实总线号的最大值,得到第二临时总线号;然后,继续判断第二临时总线号是否大于真实总线号,得到第二临时总线号不大于真实总线号的最大值,此时,可以将第二临时总线号确定为真实总线号,得到第三个PCIE控制器组中的PCIE控制器或者PCIE设备分别对应的真实总线号。
此外,在本发明的又一种应用实施例中,步骤303中所述根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号的步骤,具体还可以通过在PCIE读写函数中记录同一个PCIE控制器或者PCIE设备对应的虚拟总线号和真实总线号之间的对应关系,来实现虚拟总线号和真实总线号之间的转换,详细描述如下:
首先,可以在步骤302中根据所述真实总线号,分别向各所述PCIE控制器重新分配虚拟总线号,以及分别向各所述PCIE设备重新分配所述虚拟总线号之后,在PCIE读写函数中分别保存各所述PCIE控制器的虚拟总线号与真实总线号之间的对应关系,以及分别保存各所述PCIE设备的虚拟总线号与真实总线号之间的对应关系;
接下来,可以在步骤303接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,查询PCIE读写函数中保存的虚拟总线号与真实总线号之间的对应关系,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号。
这样,PCIE读写函数就可以将虚拟总线号分别转换为真实总线号,以实现对各PCIE控制器和各PCIE设备的读写操作。
本发明实施例还提供了一种PCIE设备的配置装置。以下装置实施例中描述,可以参见上述方法实施例中的描述,在此不再赘述。
如图6所示,图6为本发明实施例的PCIE设备的配置装置的一种结构图,所述装置包括:
第一分配单元601,用于在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配真实总线号,以及向各所述PCIE设备分配所述真实总线号;
第二分配单元602,用于根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号;其中,各所述PCIE控制器与所述虚拟总线号是一一对应的,以及各所述PCIE设备与所述虚拟总线号是一一对应的;
获得单元603,用于在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;
读写单元604,用于根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
可见,本发明装置实施例能够实现在CPU上配置至少两个PCIE控制器,使至少两台PCIE设备能够分别直接与PCIE控制器连接,并且,运行于VxWorks5.5操作系统之上的应用程序能够根据虚拟总线号区分多个PCIE控制器和PCIE设备,而PCIE读写函数也可以依据由虚拟总线号转换后的真实总线号执行读写操作,不仅降低了PCIE设备的配置成本,而且便于安装及维护PCIE设备。
在本发明的一种优选实施例中,所述装置还包括:
第三分配单元,用于在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配对应的存储空间,以及向各所述PCIE设备分配对应的存储空间;其中,各所述PCIE控制器与所述存储空间是一一对应的,以及各所述PCIE设备与所述存储空间是一一对应的。
在本发明的又一种优选实施例中,所述第二分配单元602,具体用于根据各所述PCIE控制器分别对应的所述存储空间和所述真实总线号,以及各所述PCIE设备分别对应的所述存储空间和所述真实总线号,按照从0依次往后的顺序,依次向各所述PCIE控制器和各所述PCIE设备重新分配虚拟总线号。
在本发明的另一种优选实施例中,所述获得单元603,具体用于根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
在本发明的再一种优选实施例中,所述读写单元604,包括确定子单元和读写子单元;
所述确定子单元,用于根据所述真实总线号,确定所述待处理的PCIE控制器或者PCIE设备对应的所述存储空间;
所述读写子单元,用于根据所述存储空间,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种PCIE设备的配置方法,其特征在于,应用于采用VxWorks5.5操作系统的CPU,所述CPU上配置有至少两个PCIE控制器,所述方法包括:
在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配真实总线号,以及向各所述PCIE设备分配所述真实总线号;
根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号;其中,各所述PCIE控制器与所述虚拟总线号是一一对应的,以及各所述PCIE设备与所述虚拟总线号是一一对应的;各所述PCIE控制器和各所述PCIE设备对应的唯一虚拟总线号,用于区分各所述PCIE控制器和各所述PCIE设备;
在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;
根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配对应的存储空间,以及向各所述PCIE设备分配对应的存储空间;其中,各所述PCIE控制器与所述存储空间是一一对应的,以及各所述PCIE设备与所述存储空间是一一对应的。
3.根据权利要求2所述方法,其特征在于,所述根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号的步骤,包括:
根据各所述PCIE控制器分别对应的所述存储空间和所述真实总线号,以及各所述PCIE设备分别对应的所述存储空间和所述真实总线号,按照从0依次往后的顺序,依次向各所述PCIE控制器和各所述PCIE设备重新分配虚拟总线号。
4.根据权利要求3所述方法,其特征在于,所述根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号的步骤,包括:
根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
5.根据权利要求4所述方法,其特征在于,所述根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作的步骤,包括:
根据所述真实总线号,确定所述待处理的PCIE控制器或者PCIE设备对应的所述存储空间;
根据所述存储空间,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
6.一种PCIE设备的配置装置,其特征在于,应用于采用VxWorks5.5操作系统的CPU,所述CPU上配置有至少两个PCIE控制器,所述装置包括:
第一分配单元,用于在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配真实总线号,以及向各所述PCIE设备分配所述真实总线号;
第二分配单元,用于根据所述真实总线号,向各所述PCIE控制器重新分配虚拟总线号,以及向各所述PCIE设备重新分配所述虚拟总线号;其中,各所述PCIE控制器与所述虚拟总线号是一一对应的,以及各所述PCIE设备与所述虚拟总线号是一一对应的;各所述PCIE控制器和各所述PCIE设备对应的唯一虚拟总线号,用于区分各所述PCIE控制器和各所述PCIE设备;
获得单元,用于在接收到针对待处理的PCIE控制器或者PCIE设备的读写操作时,根据所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号,获得所述待处理的PCIE控制器或者PCIE设备对应的所述真实总线号;
读写单元,用于根据所述真实总线号,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
7.根据权利要求6所述装置,其特征在于,所述装置还包括:
第三分配单元,用于在检测到至少两个所述PCIE控制器连接PCIE设备时,向各所述PCIE控制器分配对应的存储空间,以及向各所述PCIE设备分配对应的存储空间;其中,各所述PCIE控制器与所述存储空间是一一对应的,以及各所述PCIE设备与所述存储空间是一一对应的。
8.根据权利要求7所述装置,其特征在于,所述第二分配单元,具体用于根据各所述PCIE控制器分别对应的所述存储空间和所述真实总线号,以及各所述PCIE设备分别对应的所述存储空间和所述真实总线号,按照从0依次往后的顺序,依次向各所述PCIE控制器和各所述PCIE设备重新分配虚拟总线号。
9.根据权利要求8所述装置,其特征在于,所述获得单元,具体用于根据所述真实总线号的最大值,将所述待处理的PCIE控制器或者PCIE设备对应的虚拟总线号分别转换为所述待处理的PCIE控制器或者PCIE设备对应的真实总线号。
10.根据权利要求9所述装置,其特征在于,所述读写单元,包括确定子单元和读写子单元;
所述确定子单元,用于根据所述真实总线号,确定所述待处理的PCIE控制器或者PCIE设备对应的所述存储空间;
所述读写子单元,用于根据所述存储空间,对所述待处理的PCIE控制器或者PCIE设备执行读写操作。
CN201611097298.8A 2016-12-02 2016-12-02 一种pcie设备的配置方法及装置 Active CN106776382B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611097298.8A CN106776382B (zh) 2016-12-02 2016-12-02 一种pcie设备的配置方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611097298.8A CN106776382B (zh) 2016-12-02 2016-12-02 一种pcie设备的配置方法及装置

Publications (2)

Publication Number Publication Date
CN106776382A CN106776382A (zh) 2017-05-31
CN106776382B true CN106776382B (zh) 2020-03-17

Family

ID=58883939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611097298.8A Active CN106776382B (zh) 2016-12-02 2016-12-02 一种pcie设备的配置方法及装置

Country Status (1)

Country Link
CN (1) CN106776382B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110209605B (zh) * 2019-05-31 2021-09-07 广州大学 Pcie总线网卡的寄存器读写方法和计算设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707991A (zh) * 2012-05-17 2012-10-03 中国科学院计算技术研究所 多根i/o 虚拟化共享方法和系统
CN103294509A (zh) * 2013-05-17 2013-09-11 深圳市亿威尔信息技术股份有限公司 用于VxWorks操作系统的驱动多串口设备的方法
CN103778018A (zh) * 2014-01-16 2014-05-07 江苏华丽网络工程有限公司 一种用于pcie虚拟化管理的方法
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262363B2 (en) * 2012-11-30 2016-02-16 Ciena Corporation PCI and PCI express virtual hot plug systems and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707991A (zh) * 2012-05-17 2012-10-03 中国科学院计算技术研究所 多根i/o 虚拟化共享方法和系统
CN103294509A (zh) * 2013-05-17 2013-09-11 深圳市亿威尔信息技术股份有限公司 用于VxWorks操作系统的驱动多串口设备的方法
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
CN103778018A (zh) * 2014-01-16 2014-05-07 江苏华丽网络工程有限公司 一种用于pcie虚拟化管理的方法

Also Published As

Publication number Publication date
CN106776382A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
US9081612B2 (en) Virtual machine control method and virtual machine
US20130290947A1 (en) Termimal and method for updating firmware of baseboard management controller
CN106293893B (zh) 作业调度方法、装置及分布式系统
EP2892181A1 (en) Method, device and physical host for managing physical network card
CN103797462A (zh) 一种创建虚拟机的方法和装置
US8533300B2 (en) Storage device, controller, and address management method
JP6003590B2 (ja) データセンタ,仮想システムの複写サービスの提供方法,データセンタの管理サーバ及び仮想システムの複写プログラム
CN103744708A (zh) 一种实现linux操作系统下固定磁盘设备名的方法
KR20180045347A (ko) 가상화 환경에서의 자원 관리 방법 및 이를 지원하는 장치
CN115242752B (zh) 电池管理系统的地址分配方法、装置、设备及介质
CN110989567A (zh) 控制器刷写方法、控制器及上位机
US10148505B2 (en) Provisioning resources for datacenters
EP3032752B1 (en) Apparatus, system and method for allocating identifiers to components of a control system
CN111464331B (zh) 一种线程创建的控制方法、系统及终端设备
CN106776382B (zh) 一种pcie设备的配置方法及装置
US20240107647A1 (en) Control method, control device and lighting system
CN105874426A (zh) 一种系统调用命令的批处理方法及装置
CN104123188A (zh) 一种资源分配方法及相关装置
CN105279110B (zh) 一种usb设备识别主机系统的方法及usb设备
CN107634978B (zh) 一种资源调度方法及装置
TW201805833A (zh) 設備分配控制器以及設備分配方法
TWI522921B (zh) 虛擬機器建立系統以及方法
WO2020119029A1 (zh) 分布式任务调度方法、系统及存储介质
US9348667B2 (en) Apparatus for managing application program and method therefor
US10079777B2 (en) Apparatus, systems, and methods of allocating heterogeneous resources

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant