cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
hyleung
Adventurer
Adventurer
10,276 Views
Registered: ‎07-30-2013

XAPP1171 with two PCIe BARs

Jump to solution

Hi,

 

I modified from the xapp1171 and created one more PCIe BAR for reading the DDR3 without using DMA (for debugging purpose).  I can read the DDR3 contant by DMA but can't read the it in non-DMA way.  It returns all 0xff.  I'm wondering if anybody run into this situation and anyway to fix it.

 

Thanks

0 Kudos
1 Solution

Accepted Solutions
hyleung
Adventurer
Adventurer
19,071 Views
Registered: ‎07-30-2013

I finally understand why the reading from the DDR3 failed after creating PCIe BAR1 for it.  What we need to do as a second step is to map DDR3 to axi_pcie_1 so that the host can access to it via pcie.  Below detailed the two steps in creating a PCIe BAR:

 

1. Re-customize the axi_pcie_1 block with Bar1 checked; size and axi-pcie bar translation (in my case the starting address of the DDR3).

 Adding PCIe BAR1

 

2. In the Address Editor, map ddr3_mem to axi_pcie_1.

 

Map the DDR3 to PCIe Block

 

Hope that help anybody in creating PCIe BARs in xapp1171.

 

 

View solution in original post

Tags (1)
0 Kudos
6 Replies
hyleung
Adventurer
Adventurer
10,235 Views
Registered: ‎07-30-2013

I generated xapp1171 with 2013.3 does not have problem with two PCIe bars.  I can view and change the DDR content by the RWEverthing utility.  I would like to have it fixed so that I am not stuck with this version of vivado.  I am wondering if anybody know to fix it in 2014.2?

 

Thanks

 

0 Kudos
mahengjie
Observer
Observer
10,216 Views
Registered: ‎01-15-2008
Hi Hyleung,
Interesting work. Question: you mentioned that you could read DDR3 in DMA. Did you do that DMA read with RWEverthing ? Thx
0 Kudos
hyleung
Adventurer
Adventurer
10,207 Views
Registered: ‎07-30-2013

Hi mahengjie,

 

No, I am not doing DMA read with RWEverthing.  I just read and write to individual location in the DDR3 memory.

 

Thanks

0 Kudos
hyleung
Adventurer
Adventurer
19,072 Views
Registered: ‎07-30-2013

I finally understand why the reading from the DDR3 failed after creating PCIe BAR1 for it.  What we need to do as a second step is to map DDR3 to axi_pcie_1 so that the host can access to it via pcie.  Below detailed the two steps in creating a PCIe BAR:

 

1. Re-customize the axi_pcie_1 block with Bar1 checked; size and axi-pcie bar translation (in my case the starting address of the DDR3).

 Adding PCIe BAR1

 

2. In the Address Editor, map ddr3_mem to axi_pcie_1.

 

Map the DDR3 to PCIe Block

 

Hope that help anybody in creating PCIe BARs in xapp1171.

 

 

View solution in original post

Tags (1)
0 Kudos
mahengjie
Observer
Observer
10,201 Views
Registered: ‎01-15-2008
then, what are you using on the host side to do the DMA R, or W, or both from the PCIe EP ?
0 Kudos
hyleung
Adventurer
Adventurer
10,195 Views
Registered: ‎07-30-2013

Hi mahengjie,

 

I have the same question before.  The xapp1171 is only half of the solution.  The driver on the host to perform DMA is not provided so we develop our own Windows driver to perform the DMA read and write.

 

We are using Visual Studio 2013 for developing Windows KMDF device driver.  A good reference for driver development is "Developing Drivers with the Windows Driver Foundation" by Penny Orwick & Guy Smith.

 

Hope that helps.  Good luck!

0 Kudos