




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PCI Express總線基礎(chǔ)及 FPGA設(shè)計實戰(zhàn)1. PCI Express 基礎(chǔ)PCIe總線是基于PCI總線發(fā)展起來的,很多基本概念都來自于PCI總線,有必要在介紹 PCIe之前了解PCI總線。1.1 PCI基礎(chǔ)pci總線作為處理器系統(tǒng)的局部總線,其主要目的是為了連接外部設(shè)備,而不是作為處 理器系統(tǒng)的系統(tǒng)總線連接Cache和主存儲器。PCI總線作為系統(tǒng)總線的延伸,其設(shè)計考慮了許多與處理器相關(guān)的內(nèi)容,孤立的研究PCI總線并不可取,因此需要將PCI作為存儲器系統(tǒng)的一個 部分來研究。1.1.1 幾個重要概念1) PCI總線空間與處理器空間隔離PCI設(shè)備具有獨立的地址空間,即PCI總線地址空間,該
2、空間與存儲器地址空間通過HOST主 橋隔離。處理器需要通過HOST主橋才能訪問PCI設(shè)備,而PCI設(shè)備需要通過HOST主橋 才能方位主存儲器。要注意區(qū)分存儲器地址空間和 PCI總線地址。在一個處理器系統(tǒng)中,存儲器域、PCI總線域與HOST主橋的關(guān)系如下圖。國2-1存儲器域與PCI總線域的劃分圖中的處理器系統(tǒng)由一個 CPU、一個DRAM控制器和兩個 HOST主橋組成。在這個處理 器系統(tǒng)中,包含 CPU域、DRAM域、存儲器域和PCI總線域地址空間。其中 HOST主橋x和 HOST主橋y分別管理PCI總線x域與PCI總線y域。CPU訪問PCI設(shè)備,必須通過 HOST主 橋進行地址轉(zhuǎn)換,而PCI設(shè)備
3、訪問存儲器設(shè)備,也需要HOST主橋進行地址轉(zhuǎn)換。HOST主橋的一個重要作用就是將存儲器訪問的存儲器地址轉(zhuǎn)換成PCI總線地址。CPU域地址空間是指CPU所能直接訪問的地址空間集合。DRAM域地址空間是指 DRAM控制器所能訪問的地址空間集合,又稱為主主存儲器域。存儲器域是CPU域和DRAM域的集合。存儲器域包括CPU內(nèi)部的通用寄存器、存儲器映射尋址的寄存器、主存儲器空間和外部設(shè)備空間。在Intel的x86處理系統(tǒng)中,外部設(shè)備空間與PCI總線域地址空間等效。因為在X86處理器系統(tǒng)中,使用PCI總線同一管理全部外部設(shè) 備。值得注意的是,存儲器域的外部設(shè)備空間,在PCI總線域中還有一個地址映射。當處理
4、器訪問PCI設(shè)備時,首先訪問的是這個設(shè)備在存儲器域上的PCI設(shè)備空間,之后 HOST主橋?qū)⑦@個存儲器域的PCI總線地址轉(zhuǎn)換成PCI總線域的物理地址,然后通過PCI總線事務(wù)訪問PCI 總線域的地址空間。2)可擴展性PCI總線具有很強的擴展性。在PCI總線中,HOST主橋可以直接推出一條 PCI總線,這條總線也是該HOST主橋管理的第一條 PCI總線,該總線還可以通過PCI橋擴展一系列PCI總線,并以HOST主橋作為根節(jié)點,形成1棵PCI總線樹。這些PCI總線都可以連接 PCI設(shè)備,但是一棵PCI設(shè)備樹上,最多只能掛接256個PCI設(shè)備(包括PCI橋)o3)動態(tài)配置機制PCI設(shè)備使用的地址可以根據(jù)
5、需要由系統(tǒng)軟件動態(tài)分配。PCI總線使用這種方式合理地解決設(shè)備間的地址沖突,從而實現(xiàn)了 “即插即用”功能。每一個PCI設(shè)備都有獨立的配置空間,在配置空間中包含該設(shè)備在PCI總線中使用的基地址即 BAR地址,從而保證每一個 PCI設(shè)備使用的物理地址并不相同。PCI橋的配置空間中包含有其下 PCI子樹所能使用的地址范圍。X86系統(tǒng)的工作流程是:主板上的 BIOS程序會掃描PCI/PCIE設(shè)備,讀取其BAR空間的 大小,動態(tài)地為PCI/PCIE設(shè)備分配地址空間。在調(diào)試過中發(fā)現(xiàn),假如將BAR空間設(shè)置成 2G, x86系統(tǒng)會報no bootable device的錯誤,原因應(yīng)該是BIOS給PCIE設(shè)備分配
6、了 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 ; EISA總線的最高主頻 為8.33MHz,位寬為32,其峰值帶寬為 33MB/S ;而MCA總線的最高主頻為10MHz
7、,最高 位寬為32,其峰值帶寬為40MB/S o PCI總線提供的峰值帶寬遠高于這些總線。_IT PCI-MjiK,帶寬與負載之®)的關(guān)系(MR/.出裁康力一PCIM j i""' -266i-a tMHPC1-XC_ 266個橢修133533_2個桶槽2661個輔幅53321311個捕M5)共享總線機制PCI設(shè)備通過仲裁獲得PCI總線的使用權(quán)后,才能進行數(shù)據(jù)傳送,在PCI總線上進行數(shù)據(jù)傳送,并不需要處理器進行干預(yù)。PCI總線仲裁器不在PCI總線規(guī)范定義的范圍內(nèi),也不一定是HOST主橋和PCI橋的一部分,雖然絕大多數(shù)HOST主橋和PCI橋都包含PCI總線仲
8、裁 器,但是在某些處理器系統(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 ( Message S
9、ignal Interrupt )機制,該機制使用存儲器寫總 線事務(wù)傳遞中斷請求,并可以使用x86處理器FSB (Front Side Bus)總線提供的InterruptMessage總線事務(wù),從而提高了 PCI設(shè)備的中斷請求效率。1.1.2 PCI總線的組成結(jié)構(gòu)。處理器內(nèi)部戶小前端總線|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總線的處理器系統(tǒng)圖中與PCI總線相關(guān)的模塊包括:HOST主橋、PCI總線、PCI橋和PCI設(shè)備。PCI總線是由HOST主橋和PCI橋推出,HOST主橋與主存儲器控制器在同一級總線上,因此PCI設(shè)備可以方便通過HOST主橋訪問存儲器,即進行 DMA操作。在一些簡單的處理器系統(tǒng)中,可能 不包含PCI橋,此時所有PCI設(shè)備都是連接再 HOST主橋上推出的PCI總線上。在一些處理 器系統(tǒng)中有可能有多個 HOST主橋,如圖1-1所示處理器系統(tǒng)中含有 HOST主橋x和HOST 主橋y。X86處理器的HOST主橋X86處理器使用南北橋結(jié)構(gòu)連接
11、CPU和PCI設(shè)備。其中北橋連接快速設(shè)備,如顯卡和內(nèi)存條,并推出PCI總線,HOST主橋包含在北橋中。而南橋連接慢速設(shè)備。圖2-6通6處理器的南北橋結(jié)構(gòu)1.2 PCIE總線概述PCI總線使用并行總線結(jié)構(gòu),在同一條總線上的所有外部設(shè)備共享總線帶寬,而PCle總線使用高速查分總線,采用端對端的連接方式,因此在每一條PCle鏈路中只能連接兩個設(shè)備。這使得PCle與PCI總線采用的拓撲結(jié)構(gòu)有所不同。PCle總線除了在連接方式上與 PCI總線不同之外,還使用一些在網(wǎng)絡(luò)通信中使用的技術(shù),如支持多種數(shù)據(jù)路由方式,基于多通路的數(shù)據(jù)傳遞方式,和基于報文的數(shù)據(jù)傳送方式,并充分考慮在數(shù)據(jù)傳送中出現(xiàn)的服務(wù)質(zhì)量 QoS
12、 (Quality of Service )問題。1.2.1 基于PCle的系統(tǒng)結(jié)構(gòu)前期的Intel主板中會集成單獨的南北橋芯片,北橋負責連接速度較快的CPU、主存儲器以及顯卡等元件,南橋負責連接速度較慢的設(shè)備,包括硬盤、 USB、網(wǎng)卡等。只要CPU讀 取主存儲器,還需要北橋的支持,也就是CPU與主存儲器的交流,會占用北橋的帶寬。因此新一代的Intel主板架構(gòu),大多將北橋存儲控制器整合到CPU封裝中,CPU直接與主存儲器交互,速度較快。txIGIares PC3 E 中 C 3J 3茶區(qū),基于PCIe總線的Intel處理器架構(gòu)主存儲器的速度SDRAM/DDR型號數(shù)據(jù)位寬內(nèi)部時鐘頻率速度帶寬SD
13、RAMPC 10064100100800MBytes/secSDRAMPC133641331331064MBytes/secDDRDDR-266641332662.1GBytes/secDDRDDR-400642004003.2GBytes/secDDRDDR2-900642008006.4GBytes/secDDRDDR3-160064200160012.8GBytes/secPCIe總線帶寬規(guī)格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端到端的數(shù)據(jù)傳遞PCI總線不同,PCIe總線采用端到端的連接方式,在一條PCIe鏈路的兩端只能各連接一個 設(shè)備,這兩個設(shè)備互為數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端。發(fā)送端Data I.inker I接收灌
15、ysical layer ”“a'inker layerElectricalLogical、PC怙總線鐮路”in圖4-1 PCTe總線的物理鏈路在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,即 xl、x2、x4、
16、x8、xl6、x32 寬度的 PCIe 鏈路。表4-1 PCIe總線娓苑與總畿獨率如策碼的關(guān)系pc%總撥現(xiàn)熬配"箱率1.也Lnr的穌值帶宣/(GT/.)場風方式L252.S2.3-r-K/lOb班用a/iob Min遺照的總桎制隼物雉分信號校胺遂斷-0-和PCIe總線物理鏈路間的數(shù)據(jù)傳送使用基于時鐘的同步傳送機制,但是在物理鏈路上并沒有時鐘線,PCIE總線的接收端含有時鐘恢復(fù)模塊CDR ( Clock Data Recovery) , CDR將從接收報文中提取接收時鐘,從而進行同步數(shù)據(jù)傳遞,PCIe設(shè)備進行鏈路訓(xùn)練時將完成時鐘的提取工作。1.2.3 PCIe總線的層次結(jié)構(gòu)PCIe總線
17、采用串行連接方式,并使用數(shù)據(jù)包(Packet)進行數(shù)據(jù)傳輸。在PCIe總線中,數(shù)據(jù) 報文在接收和發(fā)送過程中,需要通過多個層次,包括事務(wù)層、數(shù)據(jù)鏈路層和物理層。Pt Ie Device BW,加 4>evice AIM、ice ( urcDevwc CoreTninMCtion liyerData Link LayerDaW Link LayerTraunction liycr圖4-4 PCI Ekpe 總線的層次組成結(jié)構(gòu)PCIe總線的層次組成結(jié)構(gòu)與網(wǎng)絡(luò)中的層次結(jié)構(gòu)有類似之處,但PCIe總線的各個層次都是用硬件邏 輯實現(xiàn)的。在PCIe體系結(jié)構(gòu)中,根據(jù)報文首先在設(shè)備的核心層(Device C
18、ore)中產(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ù)可以通過Switch等設(shè)備傳送到其他PCIe設(shè)備或者RC設(shè)備。RC設(shè)備也可以使用這些總線事 務(wù)訪問PCIe設(shè)備。事務(wù)層接收來自PCIe設(shè)備核心層的數(shù)據(jù),并將其封裝成 TLP ( Transaction Layer Packet) 后,發(fā)向數(shù)據(jù)鏈路
19、層。此外事務(wù)層還可以從數(shù)據(jù)鏈路層中接收數(shù)據(jù)報文,然后轉(zhuǎn)發(fā)至PCIe設(shè)備的核心層。2 .數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層保證來自發(fā)送端事務(wù)層的報文可以可靠、完整地發(fā)送到接收端的數(shù)據(jù)鏈路層。來自事務(wù)層的報文在通過數(shù)據(jù)鏈路層時,被添加 Sequence Number前綴和CRC后綴。數(shù)據(jù) 鏈路層使用ACK/NAK協(xié)議保證報文的可靠傳遞。PCIe總線的數(shù)據(jù)鏈路層還定義了多DLLP ( Data Link Layer Packet) , DLLP產(chǎn)生于數(shù)據(jù)鏈種路層,終止與數(shù)據(jù)鏈路層。3 .物理層物理層是PCIe的最底層,將PCIe設(shè)備連接再一起。PCIe總線的物理電氣特性決定了PCIe鏈路只能使用端到端的連接方式。
20、PCIe總線的物理層為 PCIe設(shè)備間的數(shù)據(jù)通信提供傳送介質(zhì),為數(shù)據(jù)提供可靠的物理環(huán)境。1.2.3 PCIe體系結(jié)構(gòu)的組成結(jié)構(gòu)PCIe總線作為處理器系統(tǒng)的局部總線,其作用于PCI總線類似,主要目的是為了連接處理器系統(tǒng)中的外部設(shè)備。在大多數(shù)處理器系統(tǒng)中,都使用 RCSwitch和PCIe-to-PCI橋這些基 本模塊連接PCIe和PCI設(shè)備。在PCIe總線中,基于PCIe總線的設(shè)備,也成為EP ( Endpoint )?;赑CIe總線的通用處理器系統(tǒng)如下圖圖4-9基于POe總線的通用處理器系統(tǒng)圖中所示的結(jié)構(gòu)將 PCIe總線端口、存儲器控制器等一系列與外部設(shè)備有關(guān)的接口都集 成在一起,并統(tǒng)稱為
21、RCo RC具有一個或者多個 PCIe端口,可以連接各類 PCIe設(shè)備。PCIe 設(shè)備包括(網(wǎng)卡、顯卡等設(shè)備)、Switch和PCIe橋。PCIe總線采取端到端的連接方式,每一個PCIe端口只能連接一個EP,當然PCIe端口也可以連接Switch進行鏈路擴展。通過 Switch擴展出的PCIe鏈路可以繼續(xù)掛接 EP或者其它S witch o2 .基于FPGA的PCIe總線分析2.1 硬件系統(tǒng)設(shè)計本章將采用xilinx的FPGA芯片搭建一個 RC端和EP端的硬件平臺,用于仿真學(xué)習 PCIe 總線相關(guān)的知識包括DMA操作、地址映射等,以及xilinx的AXI Memoy Mapped TO PCI
22、 Express、 AXIDMA等IP使用。2.1.1 RC端系統(tǒng)設(shè)計RC 端硬件系統(tǒng)由 MicroBlaze 處理器、RC (采用 xilinx 的 AXIMcmony Mapped To PCI Express配置成RC模式)、內(nèi)存(采用內(nèi)置BRAM塊)、常用外設(shè)包括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端系統(tǒng)設(shè)計EP 端硬件系統(tǒng)由 Micro Blaze 處理器、EP (采用 xilinx 的 AXI Memony Mapped To PCI Express 配置成EP模式)、DMA以及內(nèi)置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屯區(qū)OilUWW25例.OxlPJJJFJF-2DC,U_TiOOBiX療產(chǎn)前丁廣有以岷OJBMi32XwOiWOGJTJFhOMojns3ZX*OiOWOJFTF&電QiiWO lfyFiwq mo255OxlFT? ITTFpc把地址空間 mem地址空間axi_pcie_barOaxi_mem_00x4000_0000-0x4000_FFFFOxO8OO_OOOO-OxO8OO_FFFF2.2 讀寫數(shù)據(jù)分析2.2.1 讀寫MEM數(shù)據(jù)操作地址為RC端BAR空間存儲器域地址+偏移量例如,往EP
28、端偏移量為0x1000的MEM寫數(shù)據(jù),RC端寫地址為 0xC000_000+0xl0000xC000_000為RC端axi_pcie_barO基地址,即EP端PCIe域基地址映射到RC端存儲器地址域 的基地址。將RC端存儲器域地址0xC000_1000,轉(zhuǎn)換成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讀內(nèi)存0x0600 2000寫內(nèi)存EP端存儲器域0x0800 10000x0800 20000x0800 00000x0800 3000讀內(nèi)存讀內(nèi)存指將RC端的內(nèi)存的數(shù)據(jù)搬移到EP端MEM o數(shù)據(jù)流圖如下 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寫內(nèi)存寫內(nèi)存將ep端的數(shù)據(jù)寫入rc端的內(nèi)存。數(shù)據(jù)流圖EP端RC端源地址為0x0800_1000 , EP端AXI總線地址目標地址為0x4000.2000 , RC端存儲器域內(nèi)存地址在 EP端AXI總線地址域的映射地址EP端AXI總線地
31、址域PCIE總線接口RP端PCIE總線域RP端存儲器域3 .設(shè)計實戰(zhàn)本章將搭建一個基于 PCIe x4的EP端硬件系統(tǒng),并在安裝 Windows7的X86電腦上,使 用Win Driver軟件完成驅(qū)動開發(fā)。3.1 EP端硬件系統(tǒng)搭建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 參數(shù)酉己置1 .將 Device/Port Type 配置成功 PCI Express Endpoint device2.將 Lane Width 配置成 x4,將 Link Speed 配置成 5.0GT/S3.配置Vendor ID和Device ID,驅(qū)動開發(fā)時將根據(jù)Vendor ID和Device ID來掃描PCIe設(shè)備。£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 一 絡(luò)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 “l(fā)uj ” 汽! mmw mragraiQlMIMHiBki f _g 9a.4mcmMB 3. .t* Ibdl Im&AzAll u Mi If心送10 .wt>«113.2 上板調(diào)試記錄1. BARO的地址空間分配過大當將BarO空間配置成2GB時,WINDOWS7的PC機沒有啟動操作系統(tǒng),報錯no bootable device,原因應(yīng)該是BIOS需要給
39、BARO分配2G的地址空間,占用了硬盤的地址空間,導(dǎo)致 無法加載操作系統(tǒng)。2. axi_pcie 的 BAR 空間或 C_AXIBAR2PC1EBARO 設(shè)置不正確調(diào)試時可以使用windriver工具輔助開發(fā),快速獲取 pcie設(shè)置的配置寄存器的值以及主機為pcie設(shè)備分配的bar空間大小,假設(shè)主機為 pcie 設(shè)備分配的 bar空間為0XF7D000000XF7D1FFFF,總共128KB(注意x86 處理器系統(tǒng)中存儲器域地址和pcie域地址相等,而arm處理器則不一致)。主機為鎖定的 dma 的物理地址為 OxOOOOOOOOdb361OOO (pDma->pDma->Page
40、O.pPhysicalAddr ),進行 dma 寫內(nèi)存操作時,源地址為 EP 端 bram 空間的地址,目標地址位置成主機為鎖定的dma的物理地址假設(shè)EP端為axi_pcie分配的空間為 0x4000_0000Ox7FFF_FFFF, 0xdb361000 無法順利達到 axi.pcie 的 S_AXI 總線,將 EP端的axi_pcie 的地址空間設(shè)置成 0xC000_0000OxFFFF_FFFF時,0xdb361000可以順利達 至lj axi_pcie 的 S_AXI 總線。 但如果C_AXIBAR2PCIEBAR0設(shè)置不正確,數(shù)據(jù)也無法正常返回 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端的參數(shù)配置如下C_AXIBAR_0 = 0xC000_0000C_AXI_HIGHADDR_O = OxFFFF_FFFFC_AXIBAR2PCIEBAR0 = 0x4000_0000axi到pcie地址轉(zhuǎn)換如下,pcie的最終地址為 Ox5b361OOO ,無法返回PC端。為了獲取正確 的pcie域 地址,需要 將C.AXIBAR2PCEBAR0的 最高2比特設(shè)置成全1 ,如C_AXIBAR2PCIEBAR0=0xC000_0000OxFFFF_OOOO 都是可行的
43、。C_AXI_HIGHADDR_Orx LLLL LLLL二Ux卜卜卜卜二卜卜卜卜3. 調(diào)試時發(fā)下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 數(shù)據(jù)。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下驅(qū)動開發(fā)3.3.1 開發(fā)流程WinDriver是Jung。公司提供的一種通用的驅(qū)動開發(fā)支持軟件,它簡化了用戶的上層驅(qū)動開發(fā)和應(yīng)用接口開發(fā),而且易于再封裝,實現(xiàn)商業(yè)化應(yīng)用。該軟件提供了對PCI Express接口設(shè)備 的驅(qū)動支持,而且也提供了對DMA實現(xiàn)功能的支持。開發(fā)流程及使用的函數(shù)如下圖所示,使用接口 函數(shù)可以分成3大類:WDC庫相關(guān)、設(shè)備相關(guān)以及dma相關(guān)。打開Win drive r驅(qū)動 并初始化WDC庫獲取PC
45、Ie設(shè)備WDC_Drive rOpcnOWDC_PciS?anDe vicesQ W DC_P ciGetDe vic e In fo() WDC_PciDe viceOpen()l.WDC庫相關(guān)打開Windriver驅(qū)動并初始化 WDC庫DWORD DLLCALLCONV WDC_DriverOpen(WDC_DRV_OPEN_OPTIONS openOptions,const CHAR *sLicense);關(guān)閉Win driver驅(qū)動以及WDC庫DWORD DLLCALLCONV WDC_DriverClose(void);2 .設(shè)備相關(guān)掃描 PCI 設(shè)備,dwVendorld 為廠商 ED, dwDeviceld 為器件
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江國企招聘2025金華蘭溪市順通港航建設(shè)開發(fā)有限公司招聘10人筆試參考題庫附帶答案詳解
- 2025重慶軌道集團招聘130人筆試參考題庫附帶答案詳解
- 2025甘肅人力資源服務(wù)股份有限公司招聘3人筆試參考題庫附帶答案詳解
- 2025河北保定市雄安交通投資有限公司招聘6人筆試參考題庫附帶答案詳解
- 2025中廣國際有限公司高校畢業(yè)生招聘2人筆試參考題庫附帶答案詳解
- 協(xié)議書還是合同
- 未簽勞動合同終止協(xié)議書
- 店鋪共享協(xié)議書合同
- 服裝聯(lián)營合同協(xié)議書模板
- 街區(qū)綠化合同協(xié)議書
- SURPAC軟件地質(zhì)建模操作步驟
- 常見天線以及調(diào)整方法及規(guī)范
- 115個低風險組病種目錄
- 中考英語《數(shù)詞》復(fù)習課件(共16張PPT)
- 水磨鉆挖孔施工方案.
- 個人房屋裝修合同模板
- 96拖拉機撥叉的數(shù)控編程加工設(shè)計
- UPS電子商務(wù)物流案例分析ppt課件
- 數(shù)學(xué)趣味小故事(課堂PPT)
- 井架現(xiàn)場施工方法
- 2017普通高中地理課程標準
評論
0/150
提交評論