一种PCIe交换机及其端点地址空间分配方法组成比例

技术编号:19390878 阅读:56 留言:0更新日期:2018-11-10 02:46
本发明专利技术涉及一种PCIe交换机及其端点地址空间分配方法,在遍历虚拟PCI桥的过程中,通过在未发现连接端点设备的下游虚拟PCI桥下设置虚拟端点,并将虚拟端点添加到该下游虚拟PCI桥的链路下,形成包括有虚拟端点的系统拓扑结构,并为系统扩展链路下所有虚拟PCI桥设置固定间隔的下辖外设地址空间,以实现无论系统端点数目、类型、位置发生何种改变,各下游虚拟PCI桥下接入的有效端点分配的地址空间固定,解决了目前自动分配PCIe外设地址造成的统一编程困难及存在系统外设地址访问出错、内存篡改等隐患的问题。

A PCIe switch and its endpoint address space allocation method

The invention relates to a PCIe switch and an endpoint address space allocation method. During traversing a virtual PCI bridge, a virtual endpoint is set up under a downstream virtual PCI bridge which has not found a connection endpoint device, and the virtual endpoint is added to the downstream virtual PCI bridge link to form a system topology node including a virtual endpoint. In order to achieve the fixed address space allocated by the effective endpoints of the downstream virtual PCI bridges regardless of the number, type and location of the system endpoints, the fixed address space allocated by the effective endpoints of the downstream virtual PCI bridges is set for all virtual PCI bridges under the system extension link, which solves the problem caused by the current automatic allocation of PCIe peripheral addresses. Unified programming is difficult and there are problems such as system external address access error, memory tampering and other hidden problems.

【技术实现步骤摘要】
一种PCIe交换机及其端点地址空间分配方法
本专利技术属于PCIe交换机接口扩展
,具体涉及一种PCIe交换机及其端点地址空间分配方法。
技术介绍
PCIe总线基于点到点拓扑结构,只有使用交换机才能对PCIe链路进行扩展,通过交换机扩展出的PCIe链路可以继续挂接EP(外部设备)或者其他交换机。而每扩展一条PCIe链路将产生一个新的PCIe总线号。每个PCIe设备/桥都会用总线号、设备号、功能号这一组合来进行编号,称为端点ID信息。如图1所示,基于PCIe交换机链路扩展的系统中交换机(Switch)可以看作为虚拟PCI桥、虚拟Bus的集合体,该设备由一个上游端口和多个下游端口组成。在这种架构的系统中,如果所有设备都使用厂商预设的配置空间,会引起PCIe设备所映射的地址空间冲突,造成系统异常。为避免各PCIe设备的资源冲突,操作系统必须为所有PCIe设备统一分配地址空间。目前,嵌入式系统对PCIe设备的地址分配主要通过操作系统自动配置,这种方法根据系统中实际存在的设备进行PCIe外设地址空间分配。然而,在由交换机实现链路扩展的多端点系统中,扩展链路下接入端点的数目不定、类型不同且位置也不定,如果由系统自动分配外设地址空间,会使得系统中各下游虚拟PCI桥(即下游端口对应的虚拟PCI桥)下接入端点的Bar空间起始地址不固定,各下游虚拟PCI桥的下辖外设地址空间也不确定,这样,不仅增加系统复杂性,造成统一编程困难,还存在系统外设地址访问出错、内存篡改等隐患。
技术实现思路
本专利技术的目的是提供一种PCIe交换机及其端点地址空间分配方法,用于解决目前自动分配PCIe外设地址而造成统一编程困难及存在系统外设地址访问出错、内存篡改等隐患的问题。为解决上述技术问题,本专利技术提出一种PCIe交换机的端点地址空间分配方法,包括以下步骤:1)遍历PCIe交换机的扩展链路中所有虚拟PCI桥,当扩展链路中下游端口对应的虚拟PCI桥下未发现有效端点时,添加虚拟端点到该虚拟PCI桥下,并将虚拟端点拓展到PCIe交换机的系统拓扑结构中;2)为所有虚拟PCI桥配置固定间隔的下辖外设地址空间,为各虚拟PCI桥的有效端点和虚拟端点分配固定的地址空间。本专利技术在遍历虚拟PCI桥过程中,通过在未发现连接端点设备的下游虚拟PCI桥下设置虚拟端点,并将虚拟端点添加到该下游虚拟PCI桥的链路下,形成包括有虚拟端点的系统拓扑结构,并为系统扩展链路下所有虚拟PCI桥设置固定间隔的下辖外设地址空间,以实现无论系统端点数目、类型、位置发生何种改变,各下游虚拟PCI桥下接入的有效端点分配的地址空间固定。作为PCIe交换机中各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的进一步限定,分别将各虚拟PCI桥下有效端点的所需地址空间的长度和预设固定间隔的长度进行比较,当比较的结果为固定间隔的长度大于或等于所需地址空间的长度时,则设置该虚拟PCI桥的下辖外设地址空间长度为所述固定间隔的长度;当比较的结果为所需地址空间的长度大于固定间隔的长度时,则将固定间隔的长度更新设置为所需地址空间的长度。进一步,所述扩展链路中上游端口对应的虚拟PCI桥的下辖外设地址空间为所有下游端口对应的虚拟PCI桥的下辖外设地址空间的总和。进一步,各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址,与该虚拟PCI桥下的有效端点或虚拟端点的起始地址相同。具体的,各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址计算公式为:Pcie_Mem_Pre(Number)=Pcie_Mem_Adrs+Number*Fixed_Space式中,Pcie_Mem_Pre(Number)为所求各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址,Number为下游端口对应的虚拟PCI桥的编号,Number=0,1,2...n,Pcie_Mem_Adrs为驱动中配置的系统PCIe空间起始地址,Fixed_Space为所述固定间隔。作为所述有效端点和虚拟端点的进一步限定,一个下游端口对应的虚拟PCI桥最多接入一个有效端点,一个下游端口对应的虚拟PCI桥最多接入一个虚拟端点。进一步,添加虚拟端点后,将虚拟PCI桥的虚拟端点的端点ID信息添加到设备ID表中,用于拓展系统拓扑结构,所述设备ID表为系统拓扑结构中的所有设备的端点ID信息的链表。进一步,为下一个有效端点或虚拟端点分配地址空间前,比较剩余外设地址空间和待分配的地址空间的大小,当剩余外设地址空间小于待分配的地址空间时,发出报错信息。为解决上述技术问题,本专利技术还提出一种PCIe交换机,PCIe交换机用于进行端点地址空间分配,包括以下步骤:1)遍历PCIe交换机的扩展链路中所有虚拟PCI桥,当扩展链路中下游端口对应的虚拟PCI桥下未发现有效端点时,添加虚拟端点到该虚拟PCI桥下,并将虚拟端点拓展到PCIe交换机的系统拓扑结构中;2)为所有虚拟PCI桥配置固定间隔的下辖外设地址空间,为各虚拟PCI桥的有效端点和虚拟端点分配固定的地址空间。作为PCIe交换机中各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的进一步限定,分别将各虚拟PCI桥下有效端点的所需地址空间的长度和预设固定间隔的长度进行比较,当比较的结果为固定间隔的长度大于或等于所需地址空间的长度时,则设置该虚拟PCI桥的下辖外设地址空间长度为所述固定间隔的长度;当比较的结果为所需地址空间的长度大于固定间隔的长度时,则将固定间隔的长度更新设置为所需地址空间的长度。进一步,所述扩展链路中上游端口对应的虚拟PCI桥的下辖外设地址空间为所有下游端口对应的虚拟PCI桥的下辖外设地址空间的总和。进一步,各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址,与该虚拟PCI桥下的有效端点或虚拟端点的起始地址相同。具体的,各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址计算公式为:Pcie_Mem_Pre(Number)=Pcie_Mem_Adrs+Number*Fixed_Space式中,Pcie_Mem_Pre(Number)为所求各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址,Number为下游端口对应的虚拟PCI桥的编号,Number=0,1,2...n,Pcie_Mem_Adrs为驱动中配置的系统PCIe空间起始地址,Fixed_Space为所述固定间隔。作为所述有效端点和虚拟端点的进一步限定,一个下游端口对应的虚拟PCI桥最多接入一个有效端点,一个下游端口对应的虚拟PCI桥最多接入一个虚拟端点。进一步,添加虚拟端点后,将虚拟PCI桥的虚拟端点的端点ID信息添加到设备ID表中,用于拓展系统拓扑结构,所述设备ID表为系统拓扑结构中的所有设备的端点ID信息的链表。进一步,为下一个有效端点或虚拟端点分配地址空间前,比较剩余外设地址空间和待分配的地址空间的大小,当剩余外设地址空间小于待分配的地址空间时,发出报错信息。附图说明图1是现有技术中基于PCIe交换机的系统拓扑结构图;图2是本专利技术含有虚拟端点的系统拓扑结构图;图3是含有虚拟端点的系统拓扑结构获取流程图;图4是本专利技术的外设地址空间的固定分本文档来自技高网...

【技术保护点】
1.一种PCIe交换机的端点地址空间分配方法,其特征在于,包括以下步骤:1)遍历PCIe交换机的扩展链路中所有虚拟PCI桥,当扩展链路中下游端口对应的虚拟PCI桥下未发现有效端点时,添加虚拟端点到该虚拟PCI桥下,并将虚拟端点拓展到PCIe交换机的系统拓扑结构中;2)为所有虚拟PCI桥配置固定间隔的下辖外设地址空间,为各虚拟PCI桥的有效端点和虚拟端点分配固定的地址空间。

【技术特征摘要】
1.一种PCIe交换机的端点地址空间分配方法,其特征在于,包括以下步骤:1)遍历PCIe交换机的扩展链路中所有虚拟PCI桥,当扩展链路中下游端口对应的虚拟PCI桥下未发现有效端点时,添加虚拟端点到该虚拟PCI桥下,并将虚拟端点拓展到PCIe交换机的系统拓扑结构中;2)为所有虚拟PCI桥配置固定间隔的下辖外设地址空间,为各虚拟PCI桥的有效端点和虚拟端点分配固定的地址空间。2.根据权利要求1所述的PCIe交换机的端点地址空间分配方法,其特征在于,为所述下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间包括以下步骤:分别将各虚拟PCI桥下有效端点的所需地址空间的长度和预设固定间隔的长度进行比较,当比较的结果为固定间隔的长度大于或等于所需地址空间的长度时,则设置该虚拟PCI桥的下辖外设地址空间长度为所述固定间隔的长度;当比较的结果为所需地址空间的长度大于固定间隔的长度时,则将固定间隔的长度更新设置为所需地址空间的长度。3.根据权利要求1所述的PCIe交换机的端点地址空间分配方法,其特征在于,各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址,与该虚拟PCI桥下的有效端点或虚拟端点的起始地址相同。4.根据权利要求3所述的PCIe交换机的端点地址空间分配方法,其特征在于,各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址计算公式为:Pcie_Mem_Pre(Number)=Pcie_Mem_Adrs+Number*Fixed_Space式中,Pcie_Mem_Pre(Number)为所求各下游端口对应的虚拟PCI桥配置固定间隔的下辖外设地址空间的起始地址,Number为下游端口对应的虚拟PCI桥的编号,Number=0,1,2...n,Pcie_Mem_Adrs为驱动中配置的系统PCIe空间起始地址,Fixed_Space为所述固定间隔。5.根据权利要求2所述的PCIe交换机的端点地址空间分配方法...

【专利技术属性】
技术研发人员:张健杨亚璞曾丽丽刘威鹏岳亚菲李跃鹏于海董春晨李二玉付庆钊刘海斌郭虎锋
申请(专利权)人:许继电气股份有限公司许继集团有限公司国家电网有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1