PCIe總線基礎(chǔ)及FPGA設(shè)計實戰(zhàn)_第1頁
PCIe總線基礎(chǔ)及FPGA設(shè)計實戰(zhàn)_第2頁
PCIe總線基礎(chǔ)及FPGA設(shè)計實戰(zhàn)_第3頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、PCI Express總線根底及FPGA設(shè)計實戰(zhàn)1. PCI Express基 礎(chǔ)PCIe總線是基于PCI總線開展起來的,很多根本概念都來自于PCI總線,有必要在介紹PCIe之前了解PCI總線。PCI根底pci總線作為處理器系統(tǒng)的局部總線,其主要目的是為了連接外部設(shè)備,而不是作為處 理器系統(tǒng)的系統(tǒng)總線連接 Cache和主存儲器。PCI總線作為系統(tǒng)總線的延伸,其設(shè)計考慮了 許多與處理器相關(guān)的內(nèi)容,孤立的研究PCI總線并不可取,因此需要將 PCI作為存儲器系統(tǒng)的一個局部來研究。幾個重要概念1) PCI總線空間與處理器空間隔離PCI設(shè)備具有獨立的地址空間, 即PCI總線地址空間,該空間與存儲器地址空

2、間通過HOST主橋隔離。處理器需要通過HOST主橋才能訪問PCI設(shè)備,而PCI設(shè)備需要通過HOST主橋才能方位主存儲器。PCI總要注意區(qū)分存儲器地址空間和PCI總線地址。在一個處理器系統(tǒng)中,存儲器域、線域與HOST主橋的關(guān)系如下列圖。療fit證城DH.AMPCI設(shè)計IPCI邊彌II |Ki十一mn城 、CPU DRAM1控制誥K I g畑 I- I卩門總蛛y城圖中的處理器系統(tǒng)由一個 CPU器系統(tǒng)中,包含 CPU域、DRAM域、存儲器域與PCI總線域的劃分一個DRAM控制器和兩個HOST主橋組成。在這個處理 存儲器域和 PCI總線域地址空間。其中 HOST主橋x和HOST主橋y分別管理PCI總線

3、x域與PCI總線y域。CPU訪問PCI設(shè)備,必須通過 HOST主橋進行地址轉(zhuǎn)換,而PCI設(shè)備訪問存儲器設(shè)備,也需要HOST主橋進行地址轉(zhuǎn)換。HOST主橋的一個重要作用就是將存儲器訪問的存儲器地址轉(zhuǎn)換成PCI總線地址。CPU域地址空間是指CPU所能直接訪問的地址空間集合。DRAM域地址空間是指 DRAM控制器所能訪問的地址空間集合,又稱為主主存儲器域。存儲器域是CPU域和DRAM域的集合。存儲器域包括 CPU內(nèi)部的通用存放器、存儲器 映射尋址的存放器、主存儲器空間和外部設(shè)備空間。在In tel的x86處理系統(tǒng)中,外部設(shè)備空間與PCI總線域地址空間等效。因為在 x86處理器系統(tǒng)中,使用 PCI總線

4、同一管理全部外 部設(shè)備。值得注意的是,存儲器域的外部設(shè)備空間,在PCI總線域中還有一個地址映射。當處理器訪問PCI設(shè)備時,首先訪問的是這個設(shè)備在存儲器域上的PCI設(shè)備空間,之后 HOST主橋?qū)⑦@個存儲器域的 PCI總線地址轉(zhuǎn)換成 PCI總線域的物理地址,然后通過PCI總線事務(wù)訪問PCI總線域的地址空間。2可擴展性包括PCI橋。PCI總線具有很強的擴展性。在 PCI總線中,HOST主橋可以直接推出一條 PCI總線,這 條總線也是該HOST主橋管理的第一條 PCI總線,該總線還可以通過 PCI橋擴展一系列PCI 總線,并以HOST主橋作為根節(jié)點,形成 1棵PCI總線樹。這些 PCI總線都可以連接

5、PCI設(shè) 備,但是一棵PCI設(shè)備樹上,最多只能掛接 256個PCI設(shè)備PCI總線使用這種方式合理地PCI設(shè)備都有獨立的配置空 BAR地址,從而保證每一個 PCI 'PCI子樹所能使用的地址范3動態(tài)配置機制PCI設(shè)備使用的地址可以根據(jù)需要由系統(tǒng)軟件動態(tài)分配。 解決設(shè)備間的地址沖突,從而實現(xiàn)了 “即插即用功能。每一個 間,在配置空間中包含該設(shè)備在PCI總線中使用的基地址即設(shè)備使用的物理地址并不相同。PCI橋的配置空間中包含有其下圍。x86系統(tǒng)的工作流程是:主板上的 BIOS程序會掃描PCI/PCIE設(shè)備,讀取其 BAR空間的 大小,動態(tài)地為PCI/PCIE設(shè)備分配地址空間。在調(diào)試過中發(fā)現(xiàn),

6、假設(shè)將BAR空間設(shè)置成2G, x86系統(tǒng)會報no bootable device的錯誤,原因應(yīng)該是 BIOS給PCIE設(shè)備分配了 2G的地址空 間,暫用了硬盤的地址空間,導(dǎo)致無法加載操作系統(tǒng)。4總線帶寬PCI總線與之前的局部總線相比,極大提高了數(shù)據(jù)傳送帶寬,32位/33MHz的PCI總線可以提供132MB/S的峰值帶寬,而64位/66MHz的PCI總線可以提供的峰值帶寬為532MB/S。雖然PCI總線所能提供的峰值帶寬遠不能和PCIe總線相比,但是與之前的局部總線 ISA EISA和MCA總線相比,仍然具有極大的優(yōu)勢。ISA總線的最高主頻為 8MHz,位寬為16,其峰值帶寬為16MB/S ;

7、EISA總線的最高主頻 為,位寬為32,其峰值帶寬為33MB/S ;而MCA總線的最高主頻為10MHz,最高位寬為32, 其峰值帶寬為40MB/S。PCI總線提供的峰值帶寬遠高于這些總線。P思紅贛覃帚畫與如贈之閻妁姜JK總竣類煨飲戟龍力PC1 *33*-5PCI X-巴 一" 2M-一 一1 _2個楠能 1 Ttrtw5332UI1牛插摘 i05共享總線機制PCI設(shè)備通過仲裁獲得 PCI總線的使用權(quán)后,才能進行數(shù)據(jù)傳送,在PCI總線上進行數(shù)據(jù)傳送,并不需要處理器進行干預(yù)。PCI總線仲裁器不在 PCI總線標準定義的范圍內(nèi),也不一定是HOST主橋和PCI橋的一局部,雖然絕大多數(shù) HOST

8、主橋和PCI橋都包含PCI總線仲裁 器,但是在某些處理器系統(tǒng)設(shè)計中也可以使用獨立的PCI總線仲裁器。PCI設(shè)備使用共享總線方式進行數(shù)據(jù)傳遞,在同一條總線上,所有PCI設(shè)備共享同一總線帶寬,這將極大地影響PCI總線的利用率。這種機制顯然不如 PCIe總線采用的交換結(jié)構(gòu)。6) 中斷機制PCI總線上的設(shè)備可以通過四根中斷請求信號INTAD#向處理器提交中斷請求。與ISA總線上的設(shè)備不同,PCI總線上的設(shè)備可以共享這些中斷請求信號,不同的PCI設(shè)備可以將這些中斷請求信號線與后,與中斷控制器的中斷請求引腳連接。PCI設(shè)備的配置空間記錄了該設(shè)備使用這四根中斷請求信號的信息。PCI總線還進一步提出了 MSI

9、( Message Signal Interrupt)機制,該機制使用存儲器寫總 線事務(wù)傳遞中斷請求,并可以使用 x86處理器FSB (Fro nt Side Bus)總線提供的In terrupt Message總線事務(wù),從而提高了 PCI設(shè)備的中斷請求效率。PCI總線的組成結(jié)構(gòu)。圖(-1 AEF PC1總線的處理器系統(tǒng)圖中與PCI總線相關(guān)的模塊包括:HOST主橋、PCI總線、PCI橋和PCI設(shè)備。PCI總線是由HOST主橋和PCI橋推出,HOST主橋與主存儲器控制器在同一級總線上,因此PCI設(shè)備可以方便通過HOST主橋訪問存儲器,即進行 DMA操作。在一些簡單的處理器系統(tǒng)中,可能 不包含P

10、CI橋,此時所有PCI設(shè)備都是連接再HOST主橋上推出的PCI總線上。在一些處理 器系統(tǒng)中有可能有多個 HOST主橋,如圖1-1所示處理器系統(tǒng)中含有 HOST主橋x和HOST 主橋y。X86處理器的HOST主橋X86處理器使用南北橋結(jié)構(gòu)連接CPU和PCI設(shè)備。其中北橋連接快速設(shè)備,如顯卡和內(nèi)存條,并推出PCI總線,HOST主橋包含在北橋中。而南橋連接慢速設(shè)備。圖2-6湍&處理器的南北橋結(jié)構(gòu)PCIE總線概述PCI總線使用并行總線結(jié)構(gòu),在同一條總線上的所有外部設(shè)備共享總線帶寬,而PCIe總線使用高速查分總線,采用端對端的連接方式,因此在每一條PCIe鏈路中只能連接兩個設(shè)備。這使得 PCIe

11、與PCI總線采用的拓撲結(jié)構(gòu)有所不同。PCIe總線除了在連接方式上與 PCI總線不同之外,還使用一些在網(wǎng)絡(luò)通信中使用的技術(shù),如支持多種數(shù)據(jù)路由方式,基于多通路的數(shù)據(jù)傳遞方式,和基于報文的數(shù)據(jù)傳送方式,并充分考慮在數(shù)據(jù)傳送中出現(xiàn)的效勞質(zhì)量 QoS( Quality of Service )問題?;赑CIe的系統(tǒng)結(jié)構(gòu)前期的In tel主板中會集成單獨的南北橋芯片,北橋負責連接速度較快的CPU、主存儲器以及顯卡等元件,南橋負責連接速度較慢的設(shè)備,包括硬盤、USB網(wǎng)卡等。只要 CPU讀取主存儲器,還需要北橋的支持,也就是CPU與主存儲器的交流,會占用北橋的帶寬。因此新一代的In tel主板架構(gòu),大多將

12、北橋存儲控制器整合到CPU封裝中,CPU直接與主存儲器交互,速度較快。主存儲器的速度SDRAM/DDR型號數(shù)據(jù)位寬內(nèi)部時鐘頻率速度帶寬SDRAMPC10064100100800MBytes/secSDRAMPC133641331331064MBytes/secDDRDDR-26664133266secDDRDDR-40064200400secDDRDDR2-90064200800secDDRDDR3-1600642001600secPCIe總線帶寬規(guī)格1x帶寬16x帶寬250Mbytes/sec4GBytes/sec500Mbytes/sec8GBytes/sec1GBytes/sec16GB

13、ytes/sec2GBytes/sec32GBytes/secSATA總線帶寬版本帶寬150Mbytes/sec300Mbytes/sec600Mbytes/secUSB總線帶寬版本帶寬sec60Mbytes/sec500Mbytes/sec1000Mbytes/sec端到端的數(shù)據(jù)傳遞PCI總線不同,PCIe總線采用端到端的連接方式,在一條PCIe鏈路的兩端只能各連接 個設(shè)備,這兩個設(shè)備互為數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端。笈送禺按收濟TX RXLojpglTX ; RXJ_L匚f' TX : RXEletiricalrx ; rxt i/PCk總線鏈路口1F=Fta餡 l inker layn

14、 Physical Uyer 皿倔 Lin (aycr圖4-1?;偩€的物理鏈路在PCIe總線的物理鏈路的一個數(shù)據(jù)通路( Lane)中,有兩組查分信號,共4根信號線。其中發(fā)送端的TX部件與接收端的 RX部件使用一組差分信號連接,該鏈路也被稱為發(fā)送端的 發(fā)送鏈路,也是接收端的接收鏈路;而發(fā)送端的RX部件與接收端 TX部件使用另一組查分信號連接,該鏈路也被稱為發(fā)送端的接收鏈路,也是接收端的發(fā)送鏈路。一個PCIe鏈路可以由多個數(shù)據(jù)通路Lane組成,目前PCIe鏈路可以支持1、2、4、8、16 和 32Lane,即 x1、x2、x4、x8、x16、x32 寬度的 PCIe鏈路。視4-1 PCfe總線屈

15、范耳總拔鎖軍和第碼的關(guān)黑PCIe爲織氓柜妁硏方式JJ. U丸、|15:S_#/10b妨別1048H理卑同總鏡欄呻持星井牯寸疫加摟悅0和-r世踐僮覽腫的槪莘PCIe總線物理鏈路間的數(shù)據(jù)傳送使用基于時鐘的同步傳送機制,但是在物理鏈路上并沒有時鐘線,PCIE總線的接收端含有時鐘恢復(fù)模塊CDR (Clock Data Recovery),CDR將從接收報文中提取接收時鐘,從而進行同步數(shù)據(jù)傳遞,PCIe設(shè)備進行鏈路訓練時將完成時鐘的提取工作。PCIe總線的層次結(jié)構(gòu)PCIe總線采用串行連接方式,并使用數(shù)據(jù)包(Packet)進行數(shù)據(jù)傳輸。在 PCIe總線中,數(shù)據(jù)報文在接收和發(fā)送過程中,需要通過多個層次,包括

16、事務(wù)層、數(shù)據(jù)鏈路層和物理層。圖4-4 PCI Eprw總線的層次組成結(jié)構(gòu)PCIe總線的層次組成結(jié)構(gòu)與網(wǎng)絡(luò)中的層次結(jié)構(gòu)有類似之處,但PCIe總線的各個層次都是用硬件邏輯實現(xiàn)的。在PCIe體系結(jié)構(gòu)中,根據(jù)報文首先在設(shè)備的核心層( Device Core)中產(chǎn)生,然后再經(jīng)過該設(shè)備的事務(wù)層(Transaction Layer)、數(shù)據(jù)鏈路層(Data Link Layer)和物理層(Physical Layer),最終發(fā)送出去。而接收端的數(shù)據(jù)也需要經(jīng)過物理層、數(shù)據(jù)鏈路層和事 務(wù)層,最終到達核心層。1. 事務(wù)層事務(wù)層定義了 PCIe總線使用總線事務(wù),其中多數(shù)總線事務(wù)與PCI總線兼容。這些總線事務(wù)可以通過S

17、witch等設(shè)備傳送到其他 PCIe設(shè)備或者RC設(shè)備。RC設(shè)備也可以使用這些總 線事務(wù)訪問PCIe設(shè)備。事務(wù)層接收來自PCIe設(shè)備核心層的數(shù)據(jù),并將其封裝成 TLP ( Transaction Layer Packet) 后,發(fā)向數(shù)據(jù)鏈路層。此外事務(wù)層還可以從數(shù)據(jù)鏈路層中接收數(shù)據(jù)報文,然后轉(zhuǎn)發(fā)至PCIe設(shè)備的核心層。2. 數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層保證來自發(fā)送端事務(wù)層的報文可以可靠、完整地發(fā)送到接收端的數(shù)據(jù)鏈路層。來自事務(wù)層的報文在通過數(shù)據(jù)鏈路層時,被添加Sequenee Number前綴和CRC后綴。數(shù)據(jù)鏈路層使用ACK/NAK協(xié)議保證報文的可靠傳遞。PCIe總線的數(shù)據(jù)鏈路層還定義了多種DLLP(

18、 Data Link Layer Packet),DLLP產(chǎn)生于數(shù)據(jù)鏈路層,終止與數(shù)據(jù)鏈路層。3. 物理層物理層是PCIe的最底層,將PCIe設(shè)備連接再一起。PCIe總線的物理電氣特性決定了PCIe鏈路只能使用端到端的連接方式。PCIe總線的物理層為 PCIe設(shè)備間的數(shù)據(jù)通信提供傳送介質(zhì),為數(shù)據(jù)提供可靠的物理環(huán)境。PCIe體系結(jié)構(gòu)的組成結(jié)構(gòu)PCIe總線作為處理器系統(tǒng)的局部總線,其作用于PCI總線類似,主要目的是為了連接處理器系統(tǒng)中的外部設(shè)備。在大多數(shù)處理器系統(tǒng)中,都使用RC Switch和PCIe-to-PCI橋這些基本模塊連接PCIe和PCI設(shè)備。在PCIe總線中,基于PCIe總線的設(shè)備,也

19、成為EP( Endpoint )?;赑CIe總線的通用處理器系統(tǒng)如下列圖EPEP圖4-9基rPCk總線的通用處理器系統(tǒng)圖中所示的結(jié)構(gòu)將 PCIe總線端口、存儲器控制器等一系列與外部設(shè)備有關(guān)的接口都集 成在一起,并統(tǒng)稱為 RCo RC具有一個或者多個 PCIe端口,可以連接各類 PCIe設(shè)備。PCIe 設(shè)備包括(網(wǎng)卡、顯卡等設(shè)備)、Switch和PCIe橋。PCIe總線采取端到端的連接方式,每一個PCIe端口只能連接一個 EP,當然PCIe端口也可以連接Switch進行鏈路擴展。通過 Switch擴展出的PCIe鏈路可以繼續(xù)掛接 EP或者其它Switch o2. 基于FPGA的PCIe總線分析

20、硬件系統(tǒng)設(shè)計本章將采用xilinx的FPGA芯片搭建一個 RC端和EP端的硬件平臺,用于仿真學習 PCIe 總線相關(guān)的知識包括 DMA操作、地址映射等,以及xilinx的AXI Memoy Mapped TO PCI Express、 AXI DMA等IP使用。RC端系統(tǒng)設(shè)計RC端硬件系統(tǒng)由 MicroBlaze 處理器、R采用 xilinx 的 AXI Memony Mapped To PCI Express 配置成RC模式、內(nèi)存采用內(nèi)置 BRAM塊、常用外設(shè)包括 GPIO串口。地址分配pcie地址空間axi_pcie_barO0xC000_00000xC000_FFFFmem地址空間 ax

21、i_mem_00x0600_00000x0600_FFFFBcvfl64K,!T0«0§QQ_FT?r亍叵 izi_Epia_!0GnassOx;IG匚少泌&-LKTFOm:4JOD_?IFT Zl.lA.t c _0a_ajjBefi石遼VOKU2CJI5TjmOiKKCJOM*OmCMCJIFT5_AM_CILCIS。疥 DOC.IM®»加WFT打wi JMTtlit恥岸昏之rl - sicrz'bl-izfljDBaJLfe. 02 HdkLrKE IlIe . AG) U 1 _t 1tjl_'MX.伽做幷皿二加皿芍JUT

22、OSiWu_l»M翳JC¥"E.inXjO肌DM垢口 JM岡觸Xwowustjm口 ai ijcie-jOSAITE和0噸刃匚_K衛(wèi)64KTOaCOQDJIJr:azi_pcie_:OSJUJ1LCILO0m5MC_COM0=<53i?_?i5t2 fSKi_a*rllrte_OSJX1RteOjti«C_CO:C向*0?ti:4C_!T?F*,n hi託理e_Q_l-;fa|_ristwrWdlnbIrin.5EJBWtr0浦CW_t祝。1.彌V-T IS luirvTitn 4;斥ni rTzllojA OJ-eral fi m orTy1 l

23、 Lnliferun.皿EVanDie&MCJOMLZSK耳Ok&ZGIT'TEP端系統(tǒng)設(shè)計EP端硬件系統(tǒng)由 MicroBlaze 處理器、E采用 xilinx 的 AXI Memony Mapped To PCI Express 配置成EP模式、DMA以及內(nèi)置BRAM塊。LL*.!地址分配u errljO"SC5_f «3 t_QSS_AIL Klipcj ifc.Qsjarju » «£xi cna 01 1 £ HL_LirE KaeJ L 民eL_d*l iee £“孕'td- y &

24、#171;11_血屯.Ll M吒S_JkI:u*_Q"«3 t_ClcruIL FiflcdH 1 idirtfg 處護*代JAJL中包li£3 3tJ二 Cl t - ii -i 2.- > aii _anfl.jDo- J sci jpci e_O_ 甘 W_AIZ . Jb_ I>4-3OiOKOjMOO32X*OiOBOTTTFsLOOOMWJ255WOilfFJ HJF可旺OzaznojiyF:iOKO-MMi32X»X:如HFWLEKgMOQ2腳-eiLFn JJJF7i2ri70_ljiX!a ax iIT 1_OD;JS _A

25、i£F£3M * OiOBOOJrTJT3a. * oioaoojTir64SQi£O0 H?fWOW MWpcie地址空間mem地址空間axi_pcie_barOaxi_mem_0Ox4OOO_OOOOOx4OOO_FFFF0x0800_00000x0800_FFFF讀寫數(shù)據(jù)分析讀寫MEM數(shù)據(jù)操作地址為RC端BAR空間存儲器域地址+偏移量例如,往 EP端偏移量為 0x1000的MEM寫數(shù)據(jù),RC端寫地址為0xC000_000+0x1000 0xC000_000為RC端axi_pcie_bar0基地址,即EP端PCIe域基地址映射到 RC端存儲器地址 域的基地址。

26、將RC端存儲器域地址 0xC000_1000,轉(zhuǎn)換成 EP端AXI地址0x0800_1000,最終寫入到 EP 端 MEM。RC端存儲器域PCI總線接口EP端 pcie總線域EP端 AXI總線地址域RC_AXIBAR2PCIEBAR_0=0xFFFF_0000EP_CFG_BAR0=0xFFFF_0000EP_PCIEBAR2AXIBAR0=0x0800_00000xC000 1000QxFFFF 10000x0000_1000| 二 0x0800_1000DMA操作DMA在EP端,源地址和目的地址為 EP端AXI總線地址0x0800_00000x0800_10000x0800_20000x0

27、800 3000讀內(nèi)存讀內(nèi)存指將RC端的內(nèi)存的數(shù)據(jù)搬移到 EP端MEM。數(shù)據(jù)流圖如下RC端EP端源地址為0x4000_1000, RC端存儲器域地址在 EP端AXI總線域的映射地址 目標地址為0x0800_2000, EP端AXI總線域地址EP_AXIBAR2PCIEBAR_0=0xEEEE_0000RP_CFG_BARO=OxEEEE_OOOOEP_PCIEBAR2AXIBAR0=0x0600_00000x4000_10000xEEEE_10000x0000_1000A 0x0600_1000寫內(nèi)存寫內(nèi)存將EP端的數(shù)據(jù)寫入RC端的內(nèi)存。數(shù)據(jù)流圖EP端RC端源地址為0x0800_1000 ,

28、EP端AXI總線地址目標地址為0x4000_2000,RC端存儲器域內(nèi)存地址在EP端AXI總線地址域的映射地址EP端 AX總線地址域PCIE總線接口RP端 PCIE總線域RR端存儲器域EP_AXIBAR2PCIEBAR_0=0xEEEE_0000RP_CFG_BAR0=0xEEEE_0000EP_PCIEBAR2AXIBAR0=0x0600_00000x4000_20000xEEEE_20000x0000_2000A 0x0600_20003. 設(shè)計實戰(zhàn)本章將搭建一個基于 PCIe x4的EP端硬件系統(tǒng),并在安裝 Windows7的x86電腦上,使 用Win Driver軟件完成驅(qū)動開發(fā)。EP

29、端硬件系統(tǒng)搭建地址分配I # sul i _ dr i j_0S'HS2 比k ts : IG* *Ti->rsnMei:rl_3< itr : jici # j,ati e_0- H D-3t9i_52MI Q2hi t£ : aii-blm-t Ltla U-Uiciv.CIO M L JEi-ijJJ Q jeU_D二心 N_lJI 口3 addree: hila 怔' azIrl J«s siL_ino_D* bi u ri t J1 SlJ|kEi4 QEMSJJIJTRs.m3DEAST'LUJjociaoi.ixiouME豳

30、2S6IR 寸Hr fiiVlTTF DfSOI FFTF OiFFFFJFFF ziifr_jpjFOffZfiOC.OkIODL.DCOO_dcodHdnDVw.SX._IKOD沁0801色暹¥打庇打WLGVOxTIFP JPFFCTLDOm:1ODCiK師256H*OxITJTJTFF$_UL_LLIi OTT S AIL CILHntJ* UHF0r:aDkM0D沌 OOl_TFTFBUDEGr UrflfF JHFCILOOvIODC DijOD弼HV OilTTF TFTFAXI Memony Mapped To PCI Express 參數(shù)配置1. 將 Device/P

31、ort Type 配置成功 PCI Express Endpoint device2. 將Lane Width配置成x4,將Link Speed配置成slit le-H*rjrTs Ml EEr«ii (2. t)產(chǎn)話札密鼻HlWA.niLi.gaft zlmWi»T*T!UH腫聞黑£ 二I Tifl aTtp1 _HW* EJIHJElJwH Te-:-r ndthlnilv ihHE |fi_W_TClT_m JfiMKES liKCIKEI >emMM3. 配置Ven dor ID和Device ID,驅(qū)動開發(fā)時將根據(jù) Ven dor ID和Devic

32、e ID來掃描 PCIe 設(shè)備。4.配置 BAR0的地址空間為 128K,配置 C_PCIEBAR2AXIBAR_為 0x0800_00001'iP-niRSh- iti-» IP忙分治“ 靶31站呻 KE3 tl K±t lldfr 也芯dJ切Ih'i* Ub-Hit>h4 WhFf 糊和和!* INI»I I4*i I*+ 貝f 祁>lHfIF >i 首4| » Tw pHpcb ri ixir«i» if ass ia g *>:» wvrjrh>v 11.C-. ?c i

33、Ki«nim <iiHr'Hil lii J II-I ri-M ia "il>libb 1 li-i BrMFb'Hi! h V-i, FfFnMM III "blh«iA-auwa mJ ikv BiaaAn JCZ CX Kv kip* m'i ur iJud KjaraaLi m -Ln' pa £> HlvnaJ lv:F«r.SLaJIU EU IV .星啊41 INL_ Sa 甲MEXlKI:門列亡iWLtJH W0-HKL_ aElJ:-3Xt >K!»

34、5«aiVi.5.配置 C AXIBAR2PCIEBAR 為 0xFFFF 0000i IE* Lki'J-bui_rtB_iackt_DUIlitft _ It1 hmI b-l.L Van=-r V-adib 上Ttiwyi'iwi-* a tpjrl,c L<_J_P上板調(diào)試記錄1. BARO的地址空間分配過大當將BarO空間配置成2GB時,WINDOWS7的PC機沒有啟動操作系統(tǒng), 報錯no bootable device,原因應(yīng)該是 BIOS需要給BAR0分配2G的地址空間,占用了硬盤的地址空間,導(dǎo)致 無法加載操作系統(tǒng)。2. axi_pcie 的 BA

35、R空間或 C_AXIBAR2PCIEBAR0 設(shè)置不正確調(diào)試時可以使用 win driver工具輔助開發(fā),快速獲取pcie設(shè)置的配置存放器的值以及主機為 pcie設(shè)備分配的bar空間大小,假設(shè)主機為 pcie設(shè)備分配的bar空間為0xF7D000000xF7D1FFFF總共128KB(注意x86處理器系統(tǒng)中存儲器域地址和pcie域地址相等,而arm處理器那么不一致)。主機為 鎖定的 dma 的物理地址為 0x00000000db361000 (pDma->pDma->Page0.pPhysicalAddr ),進行 dma 寫內(nèi)存操作時,源地址為EP 端 bram空間的地址,目標地

36、址位置成主機為鎖定的dma的物理地址,假設(shè)EP端為axi_pcie 分配的空間為 0x4000_00000x7FFF_FFFF, 0xdb361000 無法順利到達 axi_pcie 的 S_AXI 總線,將 EP端的axi_pcie 的地址空間設(shè)置成 0xC000_00000xFFFF_FFFF時,0xdb361000可以順利達 到 axi_pcie 的 S_AXI 總線。但如果C_AXIBAR2PCIEBAR設(shè)置不正確,數(shù)據(jù)也無法正常返回PC端。假設(shè)EP端的參數(shù)配置如下C_AXIBAR_O = OxCOOO_OOOOC_AXI_HIGHADDR_O = OxFFFF_FFFFC_AXIBA

37、R2PCIEBAR0 = Ox4OOO_OOOOaxi到pcie地址轉(zhuǎn)換如下,pcie的最終地址為 0x5b361000,無法返回PC端。為了獲取正 確的pcie 域地址,需要將 C_AXIBAR2PCIEBAR0的最高2比特設(shè) 置成全1,如 C_AXIBAR2PCIEBAR0=0xC000_0000 OxFFFF_OOOO 都是可行的。3調(diào)試時發(fā)下 axi dma每次最大傳輸長度為 原因是 Width of Buffer Length Register 配置成了 限。將 Width of Buffer Length Register 配置成了16KB-1,假設(shè)超過 16KB, dma無法工作

38、。14bits,16KB-仁0x3FFF剛好到達 buffer 的上17bits后,dma可以一次傳輸64KB數(shù)據(jù)。AIT DI reel 肝wy Access (T. j J*対;5£Il*L勺Mm二 EP Ltceriaa/(i n«KL pirlflWINDOWS下驅(qū)動開發(fā)開發(fā)流程Win Driver是Ju ngo公司提供的一種通用的驅(qū)動開發(fā)支持軟件,它簡化了用戶的上層驅(qū) 動開發(fā)和應(yīng)用接口開發(fā),而且易于再封裝,實現(xiàn)商業(yè)化應(yīng)用。該軟件提供了對PCI Express接口設(shè)備的驅(qū)動支持,而且也提供了對DMA實現(xiàn)功能的支持。開發(fā)流程及使用的函數(shù)如下圖所示,使用接口函數(shù)可以分成

39、3大類:WDC庫相關(guān)、設(shè)備相關(guān)以及 dma相關(guān)。翻開Win driver驅(qū)動并初始化WD庫WDC_DriverOpe n()WDC_PciS WDCJPciGe WDC_PciDIanDevices() tDeviceInfo() eviceOpen()WDC_DMACWDC_DMWDC Wr;ontigBufLock() ABufUnlock() teAddr32()1rWDC_PciDeviceClose()1TWDC_DriverClose()庫相關(guān)翻開Win driver驅(qū)動并初始化 WDC庫DWORD DLLCALLCONV WDC_DriverOpe n(WDC_DRV_OPEN_OPTIONS ope nOptio ns,co nst CHAR *sLice nse);關(guān)閉Win driver驅(qū)動以及WDC庫DWORD DLLCALLCONV WDC_DriverClose(void);2設(shè)備相關(guān)掃描PC設(shè)備,dwVendorld為廠商ID, dwDeviceld為器件ID, pPciScanResul為掃描到的PCI 設(shè)備。WDC_PciSca nDevices(DWORD dwVe ndorld, DWORD dwDeviceld,WDC_PCI_SCAN_RESULT *pPciSca nResult);返回設(shè)備信息。DWORD DLLCAL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論