(完整版)PCIe总线基础及FPGA设计实战.docx_第1页
(完整版)PCIe总线基础及FPGA设计实战.docx_第2页
(完整版)PCIe总线基础及FPGA设计实战.docx_第3页
(完整版)PCIe总线基础及FPGA设计实战.docx_第4页
(完整版)PCIe总线基础及FPGA设计实战.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PCI Express总线基础及 FPGA设计实战1. PCI Express 基础PCIe总线是基于PCI总线发展起来的,很多基本概念都来自于PCI总线,有必要在介绍 PCIe之前了解PCI总线。1.1 PCI基础pci总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处 理器系统的系统总线连接Cache和主存储器。PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,孤立的研究PCI总线并不可取,因此需要将PCI作为存储器系统的一个 部分来研究。1.1.1 几个重要概念1) PCI总线空间与处理器空间隔离PCI设备具有独立的地址空间,即PCI总线地址空间,该

2、空间与存储器地址空间通过HOST主 桥隔离。处理器需要通过HOST主桥才能访问PCI设备,而PCI设备需要通过HOST主桥 才能方位主存储器。要注意区分存储器地址空间和 PCI总线地址。在一个处理器系统中,存储器域、PCI总线域与HOST主桥的关系如下图。国2-1存储器域与PCI总线域的划分图中的处理器系统由一个 CPU、一个DRAM控制器和两个 HOST主桥组成。在这个处理 器系统中,包含 CPU域、DRAM域、存储器域和PCI总线域地址空间。其中 HOST主桥x和 HOST主桥y分别管理PCI总线x域与PCI总线y域。CPU访问PCI设备,必须通过 HOST主 桥进行地址转换,而PCI设备

3、访问存储器设备,也需要HOST主桥进行地址转换。HOST主桥的一个重要作用就是将存储器访问的存储器地址转换成PCI总线地址。CPU域地址空间是指CPU所能直接访问的地址空间集合。DRAM域地址空间是指 DRAM控制器所能访问的地址空间集合,又称为主主存储器域。存储器域是CPU域和DRAM域的集合。存储器域包括CPU内部的通用寄存器、存储器映射寻址的寄存器、主存储器空间和外部设备空间。在Intel的x86处理系统中,外部设备空间与PCI总线域地址空间等效。因为在X86处理器系统中,使用PCI总线同一管理全部外部设 备。值得注意的是,存储器域的外部设备空间,在PCI总线域中还有一个地址映射。当处理

4、器访问PCI设备时,首先访问的是这个设备在存储器域上的PCI设备空间,之后 HOST主桥将这个存储器域的PCI总线地址转换成PCI总线域的物理地址,然后通过PCI总线事务访问PCI 总线域的地址空间。2)可扩展性PCI总线具有很强的扩展性。在PCI总线中,HOST主桥可以直接推出一条 PCI总线,这条总线也是该HOST主桥管理的第一条 PCI总线,该总线还可以通过PCI桥扩展一系列PCI总线,并以HOST主桥作为根节点,形成1棵PCI总线树。这些PCI总线都可以连接 PCI设备,但是一棵PCI设备树上,最多只能挂接256个PCI设备(包括PCI桥)o3)动态配置机制PCI设备使用的地址可以根据

5、需要由系统软件动态分配。PCI总线使用这种方式合理地解决设备间的地址冲突,从而实现了 “即插即用”功能。每一个PCI设备都有独立的配置空间,在配置空间中包含该设备在PCI总线中使用的基地址即 BAR地址,从而保证每一个 PCI设备使用的物理地址并不相同。PCI桥的配置空间中包含有其下 PCI子树所能使用的地址范围。X86系统的工作流程是:主板上的 BIOS程序会扫描PCI/PCIE设备,读取其BAR空间的 大小,动态地为PCI/PCIE设备分配地址空间。在调试过中发现,假如将BAR空间设置成 2G, x86系统会报no bootable device的错误,原因应该是BIOS给PCIE设备分配

6、了 2G的地址空 间,暂用了硬盘的地址空间,导致无法加载操作系统。4)总线带宽PCI总线与之前的局部总线相比,极大提高了数据传送带宽,32位/33MHz的PCI总线可以提供132MB/S的峰值带宽,而64位/66MHz的PCI总线可以提供的峰值带宽为 532MB/S。 虽然PCI总线所能提供的峰值带宽远不能和PCIe总线相比,但是与之前的局部总线 ISA、EISA和MCA总线相比,仍然具有极大的优势。ISA总线的最高主频为8MHz ,位宽为16,其峰值带宽为 16MB/s ; EISA总线的最高主频 为8.33MHz,位宽为32,其峰值带宽为 33MB/S ;而MCA总线的最高主频为10MHz

7、,最高 位宽为32,其峰值带宽为40MB/S o PCI总线提供的峰值带宽远高于这些总线。_IT PCI-MjiK,带宽与负载之®)的关系(MR/.出裁康力一PCIM j i""' -266i-a tMHPC1-XC_ 266个椭修133533_2个桶槽2661个辅幅53321311个捕M5)共享总线机制PCI设备通过仲裁获得PCI总线的使用权后,才能进行数据传送,在PCI总线上进行数据传送,并不需要处理器进行干预。PCI总线仲裁器不在PCI总线规范定义的范围内,也不一定是HOST主桥和PCI桥的一部分,虽然绝大多数HOST主桥和PCI桥都包含PCI总线仲

8、裁 器,但是在某些处理器系统设计中也可以使用独立的PCI总线仲裁器。PCI设备使用共享总线方式进行数据传递,在同一条总线上,所有PCI设备共享同一总线带宽,这将极大地影响 PCI总线的利用率。这种机制显然不如 PCIe总线采用的交换结构。 6)中断机制PCI总线上的设备可以通过四根中断请求信号INTAD#向处理器提交中断请求。与ISA总线上 的设备不同,PCI总线上的设备可以共享这些中断请求信号,不同的PCI设备可以将这些中断请求 信号线与后,与中断控制器的中断请求引脚连接。PCI设备的配置空间记录了该设备使用这四根中 断请求信号的信息。PCI总线还进一步提出了 MSI ( Message S

9、ignal Interrupt )机制,该机制使用存储器写总 线事务传递中断请求,并可以使用x86处理器FSB (Front Side Bus)总线提供的InterruptMessage总线事务,从而提高了 PCI设备的中断请求效率。1.1.2 PCI总线的组成结构。处理器内部户小前端总线|JCacheft占3性模块外部CacheHOST主椅 HOST主桥 X二版 DDR-SDRAMPG总线yO |PCI总线#。一一【,一 .1 一 1FI殳备刈PC理备yO2j PH圾d | |小堪段备3M欣备02 PCAa播 pa 总线 制 一ISA总线"丁逑! 1鼻:.|上而&备1口I

10、PCI. 12口SAib备H I ISA备2 图1-1基于PCI总线的处理器系统图中与PCI总线相关的模块包括:HOST主桥、PCI总线、PCI桥和PCI设备。PCI总线是由HOST主桥和PCI桥推出,HOST主桥与主存储器控制器在同一级总线上,因此PCI设备可以方便通过HOST主桥访问存储器,即进行 DMA操作。在一些简单的处理器系统中,可能 不包含PCI桥,此时所有PCI设备都是连接再 HOST主桥上推出的PCI总线上。在一些处理 器系统中有可能有多个 HOST主桥,如图1-1所示处理器系统中含有 HOST主桥x和HOST 主桥y。X86处理器的HOST主桥X86处理器使用南北桥结构连接

11、CPU和PCI设备。其中北桥连接快速设备,如显卡和内存条,并推出PCI总线,HOST主桥包含在北桥中。而南桥连接慢速设备。图2-6通6处理器的南北桥结构1.2 PCIE总线概述PCI总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽,而PCle总线使用高速查分总线,采用端对端的连接方式,因此在每一条PCle链路中只能连接两个设备。这使得PCle与PCI总线采用的拓扑结构有所不同。PCle总线除了在连接方式上与 PCI总线不同之外,还使用一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑在数据传送中出现的服务质量 QoS

12、 (Quality of Service )问题。1.2.1 基于PCle的系统结构前期的Intel主板中会集成单独的南北桥芯片,北桥负责连接速度较快的CPU、主存储器以及显卡等元件,南桥负责连接速度较慢的设备,包括硬盘、 USB、网卡等。只要CPU读 取主存储器,还需要北桥的支持,也就是CPU与主存储器的交流,会占用北桥的带宽。因此新一代的Intel主板架构,大多将北桥存储控制器整合到CPU封装中,CPU直接与主存储器交互,速度较快。txIGIares PC3 E 中 C 3J 3茶区,基于PCIe总线的Intel处理器架构主存储器的速度SDRAM/DDR型号数据位宽内部时钟频率速度带宽SD

13、RAMPC 10064100100800MBytes/secSDRAMPC133641331331064MBytes/secDDRDDR-266641332662.1GBytes/secDDRDDR-400642004003.2GBytes/secDDRDDR2-900642008006.4GBytes/secDDRDDR3-160064200160012.8GBytes/secPCIe总线带宽规格lx带宽16x带宽PCIe 1.0250Mb ytes/sec4GBytes/secPCIe2.0500Mb ytes/sec8GBytes/secPCIe3.0-IGBytes/sec16GByt

14、es/secPCIe4.02GBytes/sec32GBytes/secSATA总线带宽版本带宽SATAI .0150Mb ytes/secSATA2.0300Mb ytes/secSATA3.0600Mb ytes/sec版本带宽USB1.01.5Mbytes/secUSB2.060Mbytes/secUSB3.0500Mb ytes/secUSB3.11000Mbytes/secUSB总线带宽1.2.2端到端的数据传递PCI总线不同,PCIe总线采用端到端的连接方式,在一条PCIe链路的两端只能各连接一个 设备,这两个设备互为数据发送端和数据接收端。发送端Data I.inker I接收灌

15、ysical layer ”“a'inker layerElectricalLogical、PC怙总线镰路”in图4-1 PCTe总线的物理链路在PCIe总线的物理链路的一个数据通路(Lane)中,有两组查分信号,共4根信号线。其中发送 端的TX部件与接收端的RX部件使用一组差分信号连接,该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端 TX部件使用另一组查分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。一个PCIe链路可以由多个数据通路Lane组成,目前PCIe链路可以支持1、2、4、8、16 和 32Lane,即 xl、x2、x4、

16、x8、xl6、x32 宽度的 PCIe 链路。表4-1 PCIe总线娓苑与总畿独率如策码的关系pc%总拨现熬配"箱率1.也Lnr的稣值带宣/(GT/.)场风方式L252.S2.3-r-K/lOb班用a/iob Min遗照的总桎制隼物雉分信号校胺遂断-0-和PCIe总线物理链路间的数据传送使用基于时钟的同步传送机制,但是在物理链路上并没有时钟线,PCIE总线的接收端含有时钟恢复模块CDR ( Clock Data Recovery) , CDR将从接收报文中提取接收时钟,从而进行同步数据传递,PCIe设备进行链路训练时将完成时钟的提取工作。1.2.3 PCIe总线的层次结构PCIe总线

17、采用串行连接方式,并使用数据包(Packet)进行数据传输。在PCIe总线中,数据 报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层。Pt Ie Device BW,加 4>evice AIM、ice ( urcDevwc CoreTninMCtion liyerData Link LayerDaW Link LayerTraunction liycr图4-4 PCI Ekpe 总线的层次组成结构PCIe总线的层次组成结构与网络中的层次结构有类似之处,但PCIe总线的各个层次都是用硬件逻 辑实现的。在PCIe体系结构中,根据报文首先在设备的核心层(Device C

18、ore)中产生,然后再经 过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要经过物理层、数据链路层和 事务层,最终到达核心层。1 .事务层事务层定义了 PCIe总线使用总线事务,其中多数总线事务与 PCI总线兼容。这些总线 事务可以通过Switch等设备传送到其他PCIe设备或者RC设备。RC设备也可以使用这些总线事 务访问PCIe设备。事务层接收来自PCIe设备核心层的数据,并将其封装成 TLP ( Transaction Layer Packet) 后,发向数据链路

19、层。此外事务层还可以从数据链路层中接收数据报文,然后转发至PCIe设备的核心层。2 .数据链路层数据链路层保证来自发送端事务层的报文可以可靠、完整地发送到接收端的数据链路层。来自事务层的报文在通过数据链路层时,被添加 Sequence Number前缀和CRC后缀。数据 链路层使用ACK/NAK协议保证报文的可靠传递。PCIe总线的数据链路层还定义了多DLLP ( Data Link Layer Packet) , DLLP产生于数据链种路层,终止与数据链路层。3 .物理层物理层是PCIe的最底层,将PCIe设备连接再一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。

20、PCIe总线的物理层为 PCIe设备间的数据通信提供传送介质,为数据提供可靠的物理环境。1.2.3 PCIe体系结构的组成结构PCIe总线作为处理器系统的局部总线,其作用于PCI总线类似,主要目的是为了连接处理器系统中的外部设备。在大多数处理器系统中,都使用 RCSwitch和PCIe-to-PCI桥这些基 本模块连接PCIe和PCI设备。在PCIe总线中,基于PCIe总线的设备,也成为EP ( Endpoint )。基于PCIe总线的通用处理器系统如下图图4-9基于POe总线的通用处理器系统图中所示的结构将 PCIe总线端口、存储器控制器等一系列与外部设备有关的接口都集 成在一起,并统称为

21、RCo RC具有一个或者多个 PCIe端口,可以连接各类 PCIe设备。PCIe 设备包括(网卡、显卡等设备)、Switch和PCIe桥。PCIe总线采取端到端的连接方式,每一个PCIe端口只能连接一个EP,当然PCIe端口也可以连接Switch进行链路扩展。通过 Switch扩展出的PCIe链路可以继续挂接 EP或者其它S witch o2 .基于FPGA的PCIe总线分析2.1 硬件系统设计本章将采用xilinx的FPGA芯片搭建一个 RC端和EP端的硬件平台,用于仿真学习 PCIe 总线相关的知识包括DMA操作、地址映射等,以及xilinx的AXI Memoy Mapped TO PCI

22、 Express、 AXIDMA等IP使用。2.1.1 RC端系统设计RC 端硬件系统由 MicroBlaze 处理器、RC (采用 xilinx 的 AXIMcmony Mapped To PCI Express配置成RC模式)、内存(采用内置BRAM块)、常用外设包括GPIO、串口。地址分配pcie 地址空间axi_pcie_barOmem地址空间axi_mem_00xC000_0000-0xC000_FFFF0x0600_0000-0x0600_FFFF I;0 ki_brMT、工EtWMOJKEO64K - >*"5JULIStsOxiDOC_MKO ©je4

23、300 ?T?7* _, flGaaxjSec0*41 式,立264K +I0LijltlEAiaOMCSCjeg&1X ©K8QJ"打1a二建:;HCIS。改才二小寸2S4M OmSFTVJFT> «r*nl3t* 03 JU1我f?5。6二_06山6;K / GHdft匚白金.r:orU«J3申4;M t 叠;/,米 w M J i< >3 gijiTMijH1,2 An由(hfi|O0JDOOOtax 日E/口m,: 'OxtMJJ- 6*K ,U*廿.竹号- ,%。gilSSJXKO6" - O

24、7;412C.n?7k »FAWChiC眸JXKO讯 0忒沟QJP1 取 : e snjcieSJlH!L13。151»0_笫2多M,0x5315JI51>UjHjJ$JltjSee0»4M3_WMMK * 0»4£»l_WF?"1, » r:crabLuejOscaljBM0ry/<lf)Om.JIJZgQsiOWO.DOW:*,(MBOIJT打S IWAmCUOB '; 3 4-71 . : IS” 步,9 mhNla。0FiOTwW fcrw. . 3JI5ForUKOjmL;S

25、E , O«tk»t FT?72.1.2 EP端系统设计EP 端硬件系统由 Micro Blaze 处理器、EP (采用 xilinx 的 AXI Memony Mapped To PCI Express 配置成EP模式)、DMA以及内置BRAM块。地址分配二勺二,I卷他S C'二;:11H m JsrjOe sxic*JJ snwiQ一 C E«.cl.de 3Sttgrifiats. *、5a_C若 JaU_SJM 口二二七 "S:.。:au】睇_,/1/ r» =«i._01. Fidtjd* 1 Allfss 九gm”

26、 3 rri ana C ,Q uri pete 0LJ-8 R_AI2 ,22 ed.dk es.3 L. is 43(u ar i w _< r< sx i _ aw a_D* U1J9C2 V.G3 4riq<*i、a5 J1L»«CSAILfAKsuecnx-S All LLI&J6JAHM$ AHIABCS 皿口LCILGS,ML,LIia5 JJ£S JlLLLlt3s air ciiEC* 。所 OJMOO32KS懒THSWGCLXJ86厘.oxtwojnyGxlK<0 KOO a*256mwOxliJJ HJF052

27、0-0 MOO wraUL3KA0 FF”%09G0JH832SOiojn?0.4K0.M0O屯区OilUWW25例.OxlPJJJFJF-2DC,U_TiOOBiX疗产前丁广有以岷OJBMi32XwOiWOGJTJFhOMojns3ZX*OiOWOJFTF&电QiiWO lfyFiwq mo255OxlFT? ITTFpc把地址空间 mem地址空间axi_pcie_barOaxi_mem_00x4000_0000-0x4000_FFFFOxO8OO_OOOO-OxO8OO_FFFF2.2 读写数据分析2.2.1 读写MEM数据操作地址为RC端BAR空间存储器域地址+偏移量例如,往EP

28、端偏移量为0x1000的MEM写数据,RC端写地址为 0xC000_000+0xl0000xC000_000为RC端axi_pcie_barO基地址,即EP端PCIe域基地址映射到RC端存储器地址域 的基地址。将RC端存储器域地址0xC000_1000,转换成EP端AXI地址0x0800_1000 ,最终写入到EP端MEM oRC端存储器域PCIE总线接口EP端PCIe总线域EP端AXI总线地址域EP PCIEBAR2AXlBAR()=Ox0800 0000RC_.4XIBAR2PCIEBAR_0=()xFFFF_(X)00EP_CFG_BARO=()xFFFF_OO()OOxCOOO 100

29、0OxFFFF 1000 r二 > 0x0000 10000x0800 10002.2.2 DMA 操作DMA在EP端,源地址和目的地址为 EP端AXI总线地址0x0600 00000x0600 3000RC端存储器域0x0600 1000读内存0x0600 2000写内存EP端存储器域0x0800 10000x0800 20000x0800 00000x0800 3000读内存读内存指将RC端的内存的数据搬移到EP端MEM o数据流图如下 RC端EP端源地址为0x4000000 , RC端存储器域地址在EP端AXI总线域的映射地址 目标地址为0x0800_2000 , E

30、P端AXI总线域地址EP端AXI总线地址域PCIe总线接口RP端PCIc总线域RP端存储器域RP_CFG_BARO=()xEEEE_O(M)OEP_.4XIBAR2PCEBAR_0=OxEEEE_0000EP_PCEBAR2AXIBARO=OxO6OO_(M)OO0x4000_10000xEEEE_10000x0000_10000x0600_1000写内存写内存将ep端的数据写入rc端的内存。数据流图EP端RC端源地址为0x0800_1000 , EP端AXI总线地址目标地址为0x4000.2000 , RC端存储器域内存地址在 EP端AXI总线地址域的映射地址EP端AXI总线地

31、址域PCIE总线接口RP端PCIE总线域RP端存储器域3 .设计实战本章将搭建一个基于 PCIe x4的EP端硬件系统,并在安装 Windows7的X86电脑上,使 用Win Driver软件完成驱动开发。3.1 EP端硬件系统搭建5.A1IHmCi。面8fi加台旗* Ci.r6T.7F7F5口口ReffBQD 0r:3CU.m?5 SnEUUjfirWOD& CtiFTFF.yFFF5,1mlILLt口6口/口23bR*s.urX。OSK-KODW Q3rN8_”IF5 UI LLI1R«&。企8 口 .旧河-1 Qicaoi tftf3JTT*Ow;OW TOD

32、MH-LG OxfTFP 7mWBS AXI £ILOtflOOt-MGO2却 O«irrFTFTF£_U1HenG。仙珈比炖&4I OxCfiWJM?6a工一山工Reg0E£川JKOO6IX Orr«f)!F7Fs m BWOEOW 二的 0口19 OiH汴:FFfFS-AII CIL口 u5 O-rlTFFrTFFF地址分配.1件* ax* 工1一占0,3 ar:° EL.PUJI E-0 Mt.Jif aii_Ck 14 H*d 11" A“Q匕球 Vijcifj)一三国 MJCII 02IHrd BI好:ci

33、-J3 '> 9: J”Q pAXI Memony Mapped To PCI Express 参数酉己置1 .将 Device/Port Type 配置成功 PCI Express Endpoint device2.将 Lane Width 配置成 x4,将 Link Speed 配置成 5.0GT/S3.配置Vendor ID和Device ID,驱动开发时将根据Vendor ID和Device ID来扫描PCIe设备。£11 Icbwv “Fpod Tr FCX Kisirm <X Kl kMMba 立 tMUAJBlaa. piD'aJUlTm &

34、#171;« 4 ValaMiU B*wavI,. 5E*Ua 8IvniMa n二wirT8 i>rr j*. « n. rvMmA»r«MU 0MmjB*> ®0W ” Ej> «M u NttKCB j”,川卡 JJUKGIeEW2a” T51 g”"lrMI E人 f” oou . xti.r«rr.j3m >rb,所PtX XI _ *! f * ”+“Mi Omi 3yAE«n 3UIIlw -*im tn,Oml 3. J tow4.配置 BARO 的地址空间为 12

35、8K,配置 C_PCIEBAR2AXIBAR_为 0 0x0800.0000UI fnr-wI。 Pl I I tW<FTw Gt l>iiN.9E.E»3:二 GBkE9,L w«rm,,I; & iUTJI心时L* * njMix_bRdut.c! ;.13.。抬“rt一Ult JBIJh uir -n.E*LWWWr ? >* Ef-/ K3 Imu *31 Imf 4 frfl t> Ki* * Ml ,Ml fatt «U 二5U<>«ku> MArm “m«hlMT ”tl«

36、;n *4, »b 4i MAMI M tW 1tM MUr nvmi ct mb mi rh ib Et,-< 岫 %» Urt sr Awr I” ba mm 994 “ 1- 4m«a b, Vxi LiUrvw p-.vbb»4 «i ib abaw4“ 1 U« , _*;«I KS-Kt j , Mn« Ieo". U. .J. I1& >4 Ui BsaLlMtxrrpuzKwur - x- :a/M£-«a» Ui Lr,al«i

37、L. Ck£24XWUiC-一 工 3 必 与t*£ uft invffm4 ui .3 gM. |MC第h IU :mlML. (MHVFM_5.酉己置 C_AXIBAR2PCIEBAR_为 0 OxFFFF_OOOOU v All Oiur,T4 ttl(1. 0> t*njwuu.二 it&a pJTKL, 5 l,.Urcn u3 &u jd”. rm a ten ur km us ku 一 络ifl l* Kh lr«u«i«,38,E。.山:用Ltf« 3nQML . 7*LMm一询1工«T

38、tT.a .叽 H-WH7Il喇力IW J K| H.icli_wr .Mi.rti.Brll.wrf -MkM.lH.fc* 51mli>345 - 9nx.vf r_c i. . , ”UmM* A “luj ” 汽! mmw mragraiQlMIMHiBki f _g 9a.4mcmMB 3. .t* Ibdl Im&AzAll u Mi If心送10 .wt>«113.2 上板调试记录1. BARO的地址空间分配过大当将BarO空间配置成2GB时,WINDOWS7的PC机没有启动操作系统,报错no bootable device,原因应该是BIOS需要给

39、BARO分配2G的地址空间,占用了硬盘的地址空间,导致 无法加载操作系统。2. axi_pcie 的 BAR 空间或 C_AXIBAR2PC1EBARO 设置不正确调试时可以使用windriver工具辅助开发,快速获取 pcie设置的配置寄存器的值以及主机为pcie设备分配的bar空间大小,假设主机为 pcie 设备分配的 bar空间为0XF7D000000XF7D1FFFF,总共128KB(注意x86 处理器系统中存储器域地址和pcie域地址相等,而arm处理器则不一致)。主机为锁定的 dma 的物理地址为 OxOOOOOOOOdb361OOO (pDma->pDma->Page

40、O.pPhysicalAddr ),进行 dma 写内存操作时,源地址为 EP 端 bram 空间的地址,目标地址位置成主机为锁定的dma的物理地址假设EP端为axi_pcie分配的空间为 0x4000_0000Ox7FFF_FFFF, 0xdb361000 无法顺利达到 axi.pcie 的 S_AXI 总线,将 EP端的axi_pcie 的地址空间设置成 0xC000_0000OxFFFF_FFFF时,0xdb361000可以顺利达 至lj axi_pcie 的 S_AXI 总线。 但如果C_AXIBAR2PCIEBAR0设置不正确,数据也无法正常返回 PC端。UIlwMH4 r- PCI

41、(2. D)E Sm tiisMvi r«rta汽r n uu t««r f rea n mi uf: e.u u,皿 , »i.uzy>In wiMt aMl Q W,2“4.W 6 feUMMi JU3 1 K3, T204HWmsn.cu«W1. nw-in TKUtexH I L ,n 丽IK皿由auq_ixr- .sLdiiB.ur -3- «e.«0tWpi(riiMl i yjih MT V >r«4MAXLWADDf0xdb361000C_AXIBAR_0=OxCOOO 0000临时地址

42、0xlb361CXX>最终地址 0x5b361000C.AXIBAR2PCIEBAR_0=0x4000 0000假如EP端的参数配置如下C_AXIBAR_0 = 0xC000_0000C_AXI_HIGHADDR_O = OxFFFF_FFFFC_AXIBAR2PCIEBAR0 = 0x4000_0000axi到pcie地址转换如下,pcie的最终地址为 Ox5b361OOO ,无法返回PC端。为了获取正确 的pcie域 地址,需要 将C.AXIBAR2PCEBAR0的 最高2比特设置成全1 ,如C_AXIBAR2PCIEBAR0=0xC000_0000OxFFFF_OOOO 都是可行的

43、。C_AXI_HIGHADDR_Orx LLLL LLLL二Ux卜卜卜卜二卜卜卜卜3. 调试时发下axi dma每次最大传输长度为原16KB-1,假如超过16KB, dma无法工作。因是 Width of Buffer Length Register 配置成了限。14bits , 16KB-l=0x3FFF 刚好达至lj buffer 的上 将 Width of Butler Length Regis ter 配置成了17bits 后,dma 可以一次传输 64KB 数据。ITT lllrrci irnorv(7,1)斗批 tinZ&lwl j*rtr(UlHK J UrjrfB ;

44、工a;_3三 M Uiiw ry« Lul.iftLLwlh.iA»a-Bt-lAwid "u* eJdhg fll-Eu“N3.3 WINDOWS下驱动开发3.3.1 开发流程WinDriver是Jung。公司提供的一种通用的驱动开发支持软件,它简化了用户的上层驱动开发和应用接口开发,而且易于再封装,实现商业化应用。该软件提供了对PCI Express接口设备 的驱动支持,而且也提供了对DMA实现功能的支持。开发流程及使用的函数如下图所示,使用接口 函数可以分成3大类:WDC库相关、设备相关以及dma相关。打开Win drive r驱动 并初始化WDC库获取PC

45、Ie设备WDC_Drive rOpcnOWDC_PciS?anDe vicesQ W DC_P ciGetDe vic e In fo() WDC_PciDe viceOpen()l.WDC库相关打开Windriver驱动并初始化 WDC库DWORD DLLCALLCONV WDC_DriverOpen(WDC_DRV_OPEN_OPTIONS openOptions,const CHAR *sLicense);关闭Win driver驱动以及WDC库DWORD DLLCALLCONV WDC_DriverClose(void);2 .设备相关扫描 PCI 设备,dwVendorld 为厂商 ED, dwDeviceld 为器件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论