基于分页机制扩展PCIe访存的方法、计算机装置及计算机可读存储介质与流程

未命名 07-13 阅读:88 评论:0

基于分页机制扩展pcie访存的方法、计算机装置及计算机可读存储介质
技术领域
1.本发明涉及计算机技术领域,具体是涉及一种基于分页机制扩展pcie访存的方法、计算机装置及计算机可读存储介质。


背景技术:

2.在pcie(peripheral component interconnectexpress)体系架构中,pcie的root complex(下称“rc”)可以访问已分配给pcie endpoint(下称“ep”)的地址。以32位系统为例:在soc(片上系统,system on chip)需要外接pcie外设的情况时,存在pcie外设需要在soc上申请较大资源空间(“资源空间”即pcie协议中的io空间和mem空间)的情况,若soc现有的资源空间大小不能满足该pcie外设的需求,会导致soc无法兼容该pcie外设。
3.具体的,在soc初始化pcie子系统时,会扫描挂载在pcie链路上的各个pcie外设,并发起配置空间(configuration space)读写事务,获取pcie ep的基本信息:vendor id、设备类型、bar(base address register)空间的数据以及msi终端等,其中bra空间记录该ep需要申请的资源空间大小,rc会分配与该申请匹配的资源空间的地址和大小给该ep,并将该资源空间的基地址写入到ep的bra空间中,此时如果rc现有的资源空间不足以满足该ep的需求,会造成分配失败,该ep被枚举失败,即该pcie外设挂载失败。
4.对于上述问题,目前通常通过以下方式进行处理:临时扩大rc在dts(device tree source)中配置的资源空间大小,使得其可以满足ep对资源空间的需求。即先确认该pcie外设的ep具体需要的资源空间的大小,然后通过重新设计rc的dma(direct memory access)驱动程序,分配给ep新的资源空间基地址,并通过dma直接操作该ep的pcie地址。但是该方法占用了dma通道,且在适配不同的pcie外设时,需要程序设计人员反复修改dma驱动,处理与维护过程复杂,导致soc的兼容性和灵活性大大降低。


技术实现要素:

5.本发明的第一目的是提供一种不受cpu域的资源空间限制的基于分页机制扩展pcie访存的方法。
6.本发明的第二目的是提供一种实现上述基于分页机制扩展pcie访存的方法的计算机装置。
7.本发明的第三目的是提供一种实现上述基于分页机制扩展pcie访存的方法的计算机可读存储介质。
8.为了实现上述的第一目的,本发明提供的一种基于分页机制扩展pcie访存的方法,其中,包括以下步骤:获取配置文件,根据配置文件确定cpu域的地址空间、pcie域的地址空间、cpu域的地址空间中的第一资源空间;枚举pcie外设时,在pcie域的地址空间内配置pcie外设所需的第二资源空间,第二资源空间的容量大于第一资源空间的容量;当访问第二资源空间的第二地址时,建立第二地址的第二页表地址表示的地址空间与第一资源空
间的第一地址的第一页表地址表示的地址空间的映射关系,然后根据第二地址的第二偏移地址确定待访问的第一目标地址,并访问第一目标地址;第二页表地址表示的地址范围大小与第一页表地址表示的地址范围大小相等,第一资源空间的第一页表地址为预设值。
9.由上述方案可见,本发明通过在cpu域划分第一资源空间时,在枚举pcie外设时,控制rc分配pcie域的第二资源空间给所述pcie外设,当运行在soc的该pcie的驱动程序需要访问第二资源空间的第二地址时,建立第一页表地址表示的地址空间与第二页表地址表示的地址空间的映射关系,再基于上述映射关系,根据第二偏移地址确定第二地址对应的第一目标地址,通过第一目标地址实现对该第二地址的访问。本发明不受soc的第一资源空间的限制,提高soc对pcie外设的兼容性,同时不占用dma通道,无需驱动设计人员反复维护pcie驱动,降低维护成本。
10.进一步的方案是,第二页表地址表示的地址范围大小与第一页表地址表示的地址范围大小均为64kb;第二地址的高16位为第二页表地址,第二地址的低16位为第二偏移地址,第一地址的高16位为第一页表地址,第一地址的低16位为第一偏移地址。
11.进一步的方案是,建立第二地址的第二页表地址表示的地址空间与第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系时,调用rc驱动接口建立第二地址的二页表地址表示的地址空间与第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系。
12.为了实现上述的第二目的,本发明提供的一种计算机装置,包括存储器与处理器,其中:存储器存储有计算机程序,计算机程序被处理器执行时实现上述的基于分页机制扩展pcie访存的方法。
13.为了实现上述的第三目的,本发明提供的一种计算机可读存储介质,包括计算机程序,其中:计算机程序运行时实现上述的基于分页机制扩展pcie访存的方法。
附图说明
14.图1是本发明基于分页机制扩展pcie访存的方法实施例的流程图。
15.图2是本发明基于分页机制扩展pcie访存的方法实施例中第二地址的第二页表地址表示的地址空间与第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系示意图。
16.以下结合附图及实施例对本发明作进一步说明。
具体实施方式
17.本发明的基于分页机制扩展pcie访存的方法,针对现有soc的资源空间大小不能满足pcie外设的要求,通过分页映射的机制,保证soc能够兼容各种申请大的资源空间的pcie外设。本发明还提供实现上述基于分页机制扩展pcie访存的方法。
18.参见图1,实现本发明的基于分页机制拓展pcie访存的方法,首先执行步骤s1,获取配置文件,根据配置文件确定cpu域的地址空间、pcie域的地址空间、cpu域的地址空间中的第一资源空间。具体的是,soc根据配置文件,在dts中配置pcie相关属性,如下为pcie相关配置,包括地址空间属性、cpu域基地址、pcie域基地址、cpu域的地址空间范围、pcie域的地址空间范围:
19.ranges=《0x00000800 0 0x05410000 0 0x05410000 0 0x00010000/*config space*/
20.0x81000000 0 0x05420000 0 0x05420000 0 0x00010000/*io space*/
21.0x82000000 0 0x05500000 0 0x05500000 0 0x00800000/*mem space*/》;
22.由此可知,cpu域的地址空间config space为0x05410000至0x0541ffff共64kb,pcie域的地址空间包括io space和mem space,io space即0x05420000至0x0542ffff共64kb,mem space即0x05500000至0x058fffff共4mb。cpu域的地址空间的第一资源空间即0x05410000至0x0541ffff共64kb。
23.然后执行步骤s2,枚举pcie外设时,在pcie域的地址空间配置pcie外设所需的第二资源空间。具体的是,当一个pcie外设接入soc时,soc通过rc枚举该pcie外设,读取该pcie外设的bar空间,确认该pcie需要的第二资源空间,在pcie域内分配该pcie外设所需的第二资源空间,并将第二资源空间的基地址写入到bar寄存器中。本实施例中,该pcie外设需要申请4mb的第二资源空间,则rc分配pcie域中0x05500000至0x058fffff的地址空间给该pcie外设,基地址即0x05500000。此时,第二资源空间的容量为4mb,大于第一资源空间的容量64kb。
24.最后执行步骤s3,当访问第二资源空间的第二地址时,基于第二地址的第二页表地址与第二偏移地址确定第一目标地址,访问第一目标地址。由于第二资源空间的容量大于第一资源空间的容量,无法将第二资源空间的第二地址与第一资源空间的第一地址一一建立映射,此时将64kb作为一页的粒度对第一资源空间与第二资源空间进行分页,粒度具体的大小取决与该第一资源空间的大小,本实施例中,第一资源空间大小为64kb,则粒度为64kb。由此,可得到第一资源空间可划分为1个页表,用第一页表地址表示该页表,即第一地址0x0541xxxx的前16位0x0541表示为第一页表地址,该第一页表地址表示的地址空间为0x05410000至0x0541ffff,第一页表地址为预设值,在上述步骤s1中有cpu域的地址空间确定。还可得到第二资源空间可划分为26个页表,每页表示64kb的存储空间,第二资源空间中第二地址0x05500000至0x058fffff中的任意第二地址的前16位表示第二页表地址,例如0x0550表示26中的其中一页,该第二页表地址0x0550表示的地址空间为0x05500000至0x0550ffff。
25.当运行在soc的该pcie外设的ep外设驱动需要访问pcie域中0x05500000至0x058fffff的地址空间内的数据时,例如需要访问的第二资源空间的第二地址为0x05501004,此时需要先建立第二地址的第二页表地址表示的地址空间与第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系,即soc通过调用rc驱动接口,从而使得rc将第二页表地址0x0550表示的0x05500000至0x0550ffff的地址空间与第一页表地址0x0541表示的0x05410000至0x0541ffff的地址空间之间建立映射关系。然后,soc根据要访问的第二地址的第二偏移地址访问对应的第一目标地址,即以要访问的第二地址0x05501004的后16位0x1004为第二偏移地址,该第二偏移地址即表示0x0550表示的页表中具体需要访问的地址,根据上述得到的映射关系,由于0x05500000至0x0550ffff与0x05410000至0x0541ffff的表示的地址空间均为64kb,可知0x550表示的页表中的第二偏移地址0x1004对应0x541表示的页表中的第一偏移地址0x1004,即第二资源空间的0x05501004对应第一资源空间的0x05411004,0x05411004即第二偏移地址对应的第一目标
地址。soc可通过直接访问第一目标地址,即cpu域的0x05411004实现访问pcie域中0x05501004的数据,在此期间,rc从pcie域的0x05501004中获取数据并传输至cpu域的0x05411004。
26.可以理解,对于第二资源空间中其他第二地址的访问时,同样可以先通过调用rc驱动接口,将所要访问的第二地址所在的第二页表标识的地址空间与第一资源空间的第一地址的第一页表地址表示的地址空间的建立映射关系,再根据第二地址的第二偏差值确定第一目标地址,从而实现对该第二地址的访问。
27.在不同的实施例中,pcie域的地址空间为4g,单个pcie申请的第二资源空间最大为4g,此时可将第二资源空间以64kb为一个页表,划分为2
16
个页表,从而可通过访问cpu域中大小64kb为第一资源空间,实现对pcie域中4g的第二资源空间的访问。
28.计算机装置实施例:
29.本实施例的计算机装置包括处理器与存储器,存储器存储有计算机程序,处理器执行计算机程序时实现上述基于分页机制扩展pcie访存的方法的各个步骤。
30.计算机装置可包括但不限于处理器与存储器。本领域技术人员可以理解,计算机装置可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机装置还可以包括输入输出设备、网络接入设备、总线等。
31.例如,处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微控制器或者该处理器也可以是任何常规的处理器等。处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
32.存储器可用于存储计算机程序和/或模块,控制器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。例如,存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如声音接收功能、声音转换成文字功能等)等;存储数据区可存储根据手机的使用所创建的数据(例如音频数据、文本数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
33.计算机可读存储介质实施例:
34.上述实施例的计算机装置集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,实现基于分页机制扩展pcie访存的方法实施例的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被控制器执行时,可实现上述基于分页机制扩展pcie访存的方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u
盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
35.综上所述,本发明通过在cpu域划分第一资源空间时,将第一资源空间的大小设定为1个页表的大小,在枚举pcie外设时,控制rc分配pcie域的第二资源空间给所述pcie外设,当运行在soc的该pcie的驱动程序需要访问第二资源空间的第二地址时,根据上述的页表对第二资源空间进行划分并建立该第二地址所在的页表与第一资源空间的页表的映射关系,再根据第二地址的偏移地址确定第一目标地址,通过第一目标地址实现对该第二地址的访问。本发明可以soc的第一资源空间的限制,提高soc对pcie外设的兼容性,同时不占用dma通道,无需驱动设计人员反复维护pcie驱动,降低维护成本。

技术特征:
1.一种基于分页机制扩展pcie访存的方法,其特征在于,包括以下步骤:获取配置文件,根据所述配置文件确定cpu域的地址空间、pcie域的地址空间、所述cpu域的地址空间中的第一资源空间;枚举pcie外设时,在所述pcie域的地址空间内配置所述pcie外设所需的第二资源空间,所述第二资源空间的容量大于所述第一资源空间的容量;当访问所述第二资源空间的第二地址时,建立所述第二地址的第二页表地址表示的地址空间与所述第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系,然后根据所述第二地址的第二偏移地址确定待访问的第一目标地址,并访问所述第一目标地址;所述第二页表地址表示的地址范围大小与所述第一页表地址表示的地址范围大小相等,所述第一资源空间的第一页表地址为预设值。2.如权利要求1所述的基于分页机制扩展pcie访存的方法,其特征在于:所述第二页表地址表示的地址范围大小与所述第一页表地址表示的地址范围大小均为64kb;所述第二地址的高16位为所述第二页表地址,所述第二地址的低16位为所述第二偏移地址,所述第一地址的高16位为所述第一页表地址,所述第一地址的低16位为第一偏移地址。3.如权利要求1所述的基于分页机制扩展pcie访存的方法,其特征在于:建立所述第二地址的第二页表地址表示的地址空间与所述第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系时,调用rc驱动接口建立所述第二地址的第二页表地址表示的地址空间与所述第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系。4.计算机装置,包括存储器与处理器,其特征在于:所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现上述权利要求1至3任一项所述的基于分页机制扩展pcie访存的方法。5.计算机可读存储介质,包括计算机程序,其特征在于:所述计算机程序运行时实现上述权利要求1至3任一项所述的基于分页机制扩展pcie访存的方法。

技术总结
本发明提供一种基于分页机制扩展PCIe访存的方法、计算机装置及计算机可读存储介质,该基于分页机制扩展PCIe访存的方法包括:获取配置文件,根据配置文件确定CPU域的地址空间、PCIe域的地址空间、CPU域的地址空间中的第一资源空间;枚举PCIe外设时,在PCIe域的地址空间配置PCIe外设所需的第二资源空间,第二资源空间的容量大于第一资源空间的容量;当访问第二资源空间的第二地址时,建立第二地址的第二页表地址表示的地址空间与第一资源空间的第一地址的第一页表地址表示的地址空间的映射关系,然后根据第二地址的第二偏移地址确定第一目标地址,访问第一目标地址。本发明不受SoC的第一资源空间的限制,使用灵活,兼容性好,同时不占用DMA通道,维护成本低。维护成本低。维护成本低。


技术研发人员:宋俊东
受保护的技术使用者:西安全志科技有限公司
技术研发日:2023.03.21
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐