CN111679997A - 一种多个pci/pci-e接口系统的设备管理方法 - Google Patents
一种多个pci/pci-e接口系统的设备管理方法 Download PDFInfo
- Publication number
- CN111679997A CN111679997A CN202010476671.0A CN202010476671A CN111679997A CN 111679997 A CN111679997 A CN 111679997A CN 202010476671 A CN202010476671 A CN 202010476671A CN 111679997 A CN111679997 A CN 111679997A
- Authority
- CN
- China
- Prior art keywords
- interface
- pci
- virtual
- bus
- bus number
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
Abstract
本发明提供了一种多个PCI/PCI‑E接口系统的设备管理方法,通过增加虚拟总线号完成对多个PCI/PCI‑E接口设备的统一管理。在多个PCI/PCI‑E接口系统中应用层软件通过虚拟总线号对多个PCI/PCI‑E接口的设备进行管理。应用层软件通过操作系统调用底层驱动。底层驱动把应用层的虚拟总线号映射到设备所在的接口号及接口内总线号,设备号、功能号保持应用层的参数不变,通过对应接口的配置空间及接口内总线号、设备号、功能号对设备进行操作,实现系统对多个PCI/PCI‑E接口设备的统一管理。
Description
技术领域
本发明属于嵌入式计算机设计技术领域,具体涉及一种多个PCI/PCI-E接口系统的设备管理方法。
背景技术
PCI/PCI-E总线作为一种高性能外围设备接口总线,被广泛的应用于嵌入式系统。随着嵌入式系统的发展,系统功能越来越复杂,交联的设备越来越多。受限于PCI/PCI-E总线的电气特性,一个接口上挂接的设备有限,嵌入式系统越来越多集成了多个PCI/PCI-E接口。这就要求各个PCI/PCI-E接口物理上互不影响,每个接口有各自独立的配置空间,设备的总线号、设备号、功能号可独立配置,不受别的接口的影响。这样,多个PCI/PCI-E接口的设备需通过对应接口的配置空间结合本接口内总线号、设备号和功能号进行操作(在多个PCI/PCI-E接口系统中通过接口号、总线号、设备号和功能号这四个信息才能唯一标识一个设备)。而PCI/PCI-E协议规范中操作一个设备应当只需通过总线号、设备号、功能号,因此需要提出一种满足PCI/PCI-E协议规范的多个PCI/PCI-E接口系统的设备管理方法。
发明内容
本发明的目的是:提出一种满足PCI/PCI-E协议规范的多个PCI/PCI-E接口系统的设备管理方法,提高代码的通用性及减少代码的冗余性,提高代码的执行效率。
本发明的技术方案如下:
一种多个PCI/PCI-E接口系统的设备管理方法,包括:
应用层根据多个PCI/PCI-E接口连接设备的拓扑结构预先为每个物理接口设定依序标记的多个虚拟总线号,使得虚拟总线号与物理接口的接口号以及接口内总线号建立唯一映射关系;
应用层的应用软件通过操作系统调用底层硬件驱动,其中调用指令包含虚拟总线号、设备号和功能号;
底层硬件驱动截获调用指令中的虚拟总线号,将该虚拟总线号映射到设备所在的接口号及接口内总线号,设备号、功能号保持应用层的参数不变;通过对应接口的配置空间及接口内总线号、设备号、功能号对设备进行操作,完成应用软件的要求,实现系统对多个PCI/PCI-E接口设备的统一管理。
进一步地,每个物理接口设定的多个虚拟总线号中,第一个记为虚拟起始总线号,最后一个记为虚拟结束总线号;不同物理接口的虚拟起始总线号至虚拟结束总线号的区间段应不重叠;虚拟总线号与所述接口内总线号的映射关系为:虚拟总线号与对应物理接口的虚拟起始总线号的差值为接口内总线的序号,所述接口内总线的序号是预先为所述接口内总线号的排序(对接口内总线号进行排序是为了应用层虚拟总线号映射的灵活性,接口内总线的序号和接口内总线号可相同,也可根据实际需灵活调整)。
进一步地,多个物理接口的虚拟起始总线号、虚拟结束总线号依次接续。
进一步地,每个物理接口的虚拟起始总线号至虚拟结束总线号依次加1。
进一步地,所述将该虚拟总线号映射到设备所在的接口号及接口内总线号,具体是:底层硬件驱动遍历每个物理接口的虚拟起始总线号和虚拟结束总线号,查看调用指令的虚拟总线号是否落在对应物理接口包含的虚拟总线号区间段上,据此找到对应的物理接口;虚拟总线号与对应物理接口的虚拟起始总线号的差值即为接口内总线的序号,根据序号查找到接口内总线号;
如果底层硬件驱动找不到对应的物理接口,则向应用层返回相关信息(报错信息)。
进一步地,应用软件是通过操作系统提供的API调用底层硬件驱动。
本发明的优点是:
1.本发明在应用层增加虚拟总线号,在驱动层完成虚拟总线号和物理接口号及对应接口内总线号的映射,使系统PCI/PCI-E物理接口(接口号)对应用层为透明,实现对多个PCI/PCI-E接口的设备统一管理。
2.应用层通过虚拟总线号、设备号、功能号对设备进行操作,符合PCI/PCI-E协议规范,提高代码的通用性,减少代码的冗余性,提高代码的执行效率
附图说明:
图1是本发明的原理示意图;
图2为本发明实施例的虚拟总线号和接口及接口内总线号映射示意图;
图3是本发明实施例的系统架构框图。
具体实施方式
以下结合附图,通过实施例详述本发明。
PCI/PCI-E协议规范中一个PCI/PCI-E设备的标识为总线号、设备号和功能号。通过配置空间结合总线号、设备号和功能号完成对PCI/PCI-E设备的初始化。在多个PCI/PCI-E接口的系统中每个PCI/PCI-E接口为独立接口,有各自独立的配置空间和标识设备的总线号、设备号、功能号。对每个PCI/PCI-E接口的设备初始化通过操作对应的配置空间完成。不同PCI/PCI-E接口的设备的总线号、设备号、功能号可以相同,互不影响,通过不同的接口的配置空间实现各自的初始化。在多个PCI/PCI-E接口系统中设备的标识变为接口号、总线号、设备号、功能号。而设备的接口号并不包含在PCI/PCI-E的协议规范中。为了让应用软件符合PCI/PCI-E规范中要求,提高代码的通用性及减少代码的冗余性,提高代码的执行效率,在多个PCI/PCI-E接口的系统中,考虑设计物理接口对应用软件为透明,驱动软件需要完成应用层的总线号和设备的接口号及对应接口内总线号的映射。
本实施例的一种多个PCI/PCI-E接口系统的设备管理方法的原理如图1所示。在系统应用层增加虚拟总线号,应用软件通过虚拟总线号、设备号和功能号对设备进行操作,软件操作符合PCI/PCI-E规范,提高软件的通用性及高可移植性。应用软件通过操作系统提供的API调用底层硬件驱动。驱动层截获应用层的虚拟总线号,完成虚拟总线号和物理接口号及接口内总线号的映射,并结合应用层的设备号、功能号在对应接口的配置空间中完成应用软件的要求完成的操作。
在多个PCI/PCI-E接口系统中首先应根据系统中PCI/PCI-E设备的拓扑结构,为每个接口确定虚拟起始和结束总线号,同时确定每个接口包含的接口总线号并排序。对接口内总线号进行排序是为了应用层虚拟总线号映射的灵活性。每个接口的虚拟起始和结束总线号的差值加1为本接口可包含的最大总线数量。每个接口的最大总线数量应大于实际的拓扑结构的总线数量,且有余量,便于后续系统的扩展。每个接口的虚拟起始和结束总线号区间段不能有重叠。遍历每个接口的虚拟起始和结束总线号,应用层的虚拟总线号落在的接口区间即为虚拟总线号对应的接口号。应用层虚拟总线号和对应接口的虚拟起始总线号的差值即为接口内总线的序号,根据序号查找到接口内总线号,完成应用层虚拟总线号和接口号及接口内总线号的映射。应用层虚拟总线号和接口及接口内总线映射如图2所示。
本实施例的具体操作流程如下:
1.根据系统的多个PCI/PCI-E接口连接设备的拓扑结构,为每个物理接口指定虚拟的起始总线号和结束总线号。每个物理接口虚拟的起始总线号和结束总线号的区间段应不重叠。
2.底层驱动遍历每个接口指定的虚拟起始总线号和结束总线号,查看应用层的虚拟总线号是否落在对应的物理接口包含的虚拟总线号区间段上。
3.底层驱动如果找到对应的物理接口,需确定接口内总线号。应用层虚拟总线号和对应接口的虚拟起始总线号的差值即为接口内总线的序号,根据序号查找到接口内总线号。而后结合应用层的设备号和功能号通过对应接口配置空间对设备进行相关操作。
4.如果底层驱动按照第3条找不到对应的物理接口,向应用层返回相关信息。
应用层软件通过虚拟总线号、设备号、功能号标识一个PCI设备,对设备进行相关操作。底层驱动完成应用层虚拟总线号和物理接口号及接口内总线号的映射,通过接口号、总线号、设备号、功能号标识一个PCI设备,并完成应用层的操作。本发明通过在应用层增加虚拟总线号,在驱动层完成虚拟总线号和物理接口号及接口内总线号的映射,实现对多个PCI/PCI-E接口设备的统一管理。
下面以目前机载计算机系统的典型系统为例进行进一步详细说明。机载计算机系统采用基于PowerPC处理器的vxWorks系统架构,PowerPC处理器选用MPC8548,该处理器芯片集成两个PCI接口。受限于PCI总线的电气特性一个PCI接口上挂接的设备有限。两个PCI接口能为系统提供挂接更多设备的能力。操作系统为嵌入式实时操作系统Vxworks5.5.1。
该机载计算机系统的MPC8548处理器集成两个PCI接口,两个PCI接口上电均配置为HOST模式。MPC8548处理器作为HOST模式在两个PCI接口上总线号均为0。根据每个PCI接口上挂接设备的拓扑结构,第一个PCI接口上总线号为0,1,2,第二个PCI接口上的总线号问为0,1,2,3,4。两个PCI接口的总线序号和内总线号相同。Vxworks5.5.1操作系统对应用程序提供一套PCI操作的API,通过总线号、设备号、功能号进行设备操作。在该机载计算机系统中包含两个PCI接口,应用层软件调用Vxworks的API对系统中的PCI设备进行管理,API的总线号为虚拟总线号。机载计算机系统MPC8548处理器每个PCI接口有不同的配置空间和各自独立的总线号、设备号、功能号。MPC8548处理器对交联的PCI设备的操作通过不同接口的配置空间及对应的总线号、设备号、功能号进行。在驱动程序中需完成应用层虚拟总线号到物理层的接口号及接口内总线号的映射。驱动程序根据系统每个PCI接口的设备拓扑结构规定第一个PCI接口的虚拟起始和结束总线号为0和15,第二个PCI接口的虚拟起始和结束总线号为16和31,两个PCI接口的总线序号和内总线号相同。
当应用层软件对虚拟总线号0-15的PCI设备进行操作时,底层驱动截获应用层的虚拟总线号,定位该虚拟总线号对应为第一个PCI接口。应用层的虚拟总线号和接口的虚拟起始总线号的差值为接口内总线的序号,通过序号查找接口内总线号。鉴于第一个PCI接口的虚拟起始总线号为0,且接口的内总线序号和接口内总线号相同,此次操作的接口内总线号等于应用层虚拟总线号。确定了第一个接口对应的内总线号,结合应用层的设备号和功能号在第一个接口配置空间中完成对PCI设备的操作。
当应用层软件对虚拟总线号16-31的PCI设备进行操作时,底层驱动截获应用层的总线号,定位该虚拟总线号对应为第二个PCI接口。应用层的虚拟总线号和第二个接口的虚拟起始总线号的差值为第二个接口内总线的序号,通过序号查找到接口内总线号。鉴于第二个PCI接口的虚拟起始总线号为16,且接口的内总线序号和接口内总线号相同,此次操作的接口内总线号等于应用层的虚拟总线号减去16。通过第二个PCI接口的配置空间结合接口内总线号、设备号、功能号完成对PCI设备的操作。
Claims (6)
1.一种多个PCI/PCI-E接口系统的设备管理方法,其特征在于,包括:
应用层根据多个PCI/PCI-E接口连接设备的拓扑结构预先为每个物理接口设定依序标记的多个虚拟总线号,使得虚拟总线号与物理接口的接口号以及接口内总线号建立唯一映射关系;
应用层的应用软件通过操作系统调用底层硬件驱动,其中调用指令包含虚拟总线号、设备号和功能号;
底层硬件驱动截获调用指令中的虚拟总线号,将该虚拟总线号映射到设备所在的接口号及接口内总线号,设备号、功能号保持应用层的参数不变;通过对应接口的配置空间及接口内总线号、设备号、功能号对设备进行操作,完成应用软件的要求,实现系统对多个PCI/PCI-E接口设备的统一管理。
2.根据权利要求1所述的一种多个PCI/PCI-E接口系统的设备管理方法,其特征在于,每个物理接口设定的多个虚拟总线号中,第一个记为虚拟起始总线号,最后一个记为虚拟结束总线号;不同物理接口的虚拟起始总线号至虚拟结束总线号的区间段应不重叠;虚拟总线号与所述接口内总线号的映射关系为:虚拟总线号与对应物理接口的虚拟起始总线号的差值为接口内总线的序号,所述接口内总线的序号是预先为所述接口内总线号的排序。
3.根据权利要求2所述的一种多个PCI/PCI-E接口系统的设备管理方法,其特征在于,多个物理接口的虚拟起始总线号、虚拟结束总线号依次接续。
4.根据权利要求3所述的一种多个PCI/PCI-E接口系统的设备管理方法,其特征在于,每个物理接口的虚拟起始总线号至虚拟结束总线号依次加1。
5.根据权利要求4所述的一种多个PCI/PCI-E接口系统的设备管理方法,其特征在于,所述将该虚拟总线号映射到设备所在的接口号及接口内总线号,具体是:底层硬件驱动遍历每个物理接口的虚拟起始总线号和虚拟结束总线号,查看调用指令的虚拟总线号是否落在对应物理接口包含的虚拟总线号区间段上,据此找到对应的物理接口;虚拟总线号与对应物理接口的虚拟起始总线号的差值即为接口内总线的序号,根据序号查找到接口内总线号;
如果底层硬件驱动找不到对应的物理接口,则向应用层返回相关信息。
6.根据权利要求1所述的一种多个PCI/PCI-E接口系统的设备管理方法,其特征在于,应用软件是通过操作系统提供的API调用底层硬件驱动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476671.0A CN111679997B (zh) | 2020-05-29 | 2020-05-29 | 一种多个pci/pci-e接口系统的设备管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476671.0A CN111679997B (zh) | 2020-05-29 | 2020-05-29 | 一种多个pci/pci-e接口系统的设备管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679997A true CN111679997A (zh) | 2020-09-18 |
CN111679997B CN111679997B (zh) | 2023-06-13 |
Family
ID=72453702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476671.0A Active CN111679997B (zh) | 2020-05-29 | 2020-05-29 | 一种多个pci/pci-e接口系统的设备管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679997B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559202A (zh) * | 2020-12-08 | 2021-03-26 | 北京机电工程研究所 | 基于嵌入式实时操作系统的飞行器应用软件通讯方法 |
CN115904520A (zh) * | 2023-03-13 | 2023-04-04 | 珠海星云智联科技有限公司 | 基于pcie拓扑状态变更的配置保存方法及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083258A1 (en) * | 2000-12-27 | 2002-06-27 | Bauman Ellen Marie | Method and apparatus for interrupt routing of PCI adapters via device address mapping |
US20030182487A1 (en) * | 2002-03-19 | 2003-09-25 | Dennis Lowell B. | System and method for managing bus numbering |
US20110029693A1 (en) * | 2008-04-01 | 2011-02-03 | Hubert Brinkmann | Reserving pci memory space for pci devices |
CN104285218A (zh) * | 2013-12-31 | 2015-01-14 | 华为技术有限公司 | 一种扩展PCIe总线域的方法和装置 |
WO2015045030A1 (ja) * | 2013-09-25 | 2015-04-02 | 株式会社日立製作所 | ドライブの増設可能な情報システムおよび該情報システムのバス番号割り当て方法 |
US20190179788A1 (en) * | 2017-12-13 | 2019-06-13 | Red Hat Israel, Ltd. | Hot plugging of virtual bridges in a virtual pci system |
-
2020
- 2020-05-29 CN CN202010476671.0A patent/CN111679997B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083258A1 (en) * | 2000-12-27 | 2002-06-27 | Bauman Ellen Marie | Method and apparatus for interrupt routing of PCI adapters via device address mapping |
US20030182487A1 (en) * | 2002-03-19 | 2003-09-25 | Dennis Lowell B. | System and method for managing bus numbering |
US20110029693A1 (en) * | 2008-04-01 | 2011-02-03 | Hubert Brinkmann | Reserving pci memory space for pci devices |
WO2015045030A1 (ja) * | 2013-09-25 | 2015-04-02 | 株式会社日立製作所 | ドライブの増設可能な情報システムおよび該情報システムのバス番号割り当て方法 |
CN104285218A (zh) * | 2013-12-31 | 2015-01-14 | 华为技术有限公司 | 一种扩展PCIe总线域的方法和装置 |
US20190179788A1 (en) * | 2017-12-13 | 2019-06-13 | Red Hat Israel, Ltd. | Hot plugging of virtual bridges in a virtual pci system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559202A (zh) * | 2020-12-08 | 2021-03-26 | 北京机电工程研究所 | 基于嵌入式实时操作系统的飞行器应用软件通讯方法 |
CN115904520A (zh) * | 2023-03-13 | 2023-04-04 | 珠海星云智联科技有限公司 | 基于pcie拓扑状态变更的配置保存方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111679997B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9535631B2 (en) | Multi-path management | |
EP2784670B1 (en) | Memory management method, memory management device and numa system | |
CN113946415A (zh) | 调度方法、装置和主节点 | |
CN111679997A (zh) | 一种多个pci/pci-e接口系统的设备管理方法 | |
US20160117281A1 (en) | Information system capable of expanding drive and bus number allocation method of the information system | |
CN108141471A (zh) | 压缩数据的方法、装置和设备 | |
US6748459B1 (en) | Method and apparatus for address mapping | |
JP4351071B2 (ja) | Ata/sata複合コントローラ | |
CN105739930A (zh) | 一种存储架构及其初始化方法和数据存储方法及管理装置 | |
CN116009785A (zh) | 一种硬盘管理的方法及计算设备 | |
US9542200B2 (en) | Dynamic port naming in a chassis | |
CN106155758B (zh) | 一种服务器系统及其相关控制方法 | |
CN109189705A (zh) | 一种usb扩展方法、装置、设备、存储介质及系统 | |
CN110795373B (zh) | 一种i2c总线到并行总线的转换方法、终端及存储介质 | |
CN111142945A (zh) | 一种双余度计算机的主、从通道动态切换方法 | |
CN114546920B (zh) | 基于智能网卡的飞腾cpu架构下裸金属服务器数据盘热插拔方法 | |
CN113392052B (zh) | 一种基于四路服务器的bios系统、方法及计算机可读存储介质 | |
CN112130904B (zh) | 处理系统、处理器间通信方法、以及共享资源管理方法 | |
CN114238181A (zh) | 多路径设备路径的物理链路信息的处理方法和获取方法 | |
CN118568015B (zh) | 设备通信方法、系统、装置、设备、存储介质及程序产品 | |
US9772961B2 (en) | Computer system, a system management module and method of bidirectionally interchanging data via module according to the IPMI standard | |
CN116974636B (zh) | 多路互联系统及其总线接口初始化方法、装置 | |
CN211236889U (zh) | 一种利用单片机配置计算机bios参数的电路 | |
CN104424153A (zh) | 一种对usb接口的音视频设备数据采集系统及其方法 | |
CN118568015A (zh) | 设备通信方法、系统、装置、设备、存储介质及程序产品 |
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 |