Re: [OPAE] Main Memory Access from FPGA
David Nicuesa <david.nicuesa.aranda at gmail.com> Thu, 07 Feb 2019 17:22:50 +0100
| Newsgroups | dev.linux.lists.opae |
|---|---|
| Message-ID | <CAAnQZJAaDPn+EY=-eTvTqnUpUSYP6iTDpsSanapeL4F55QJFzg@mail.gmail.com> |
--===============8951592328391385024== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello Michael, thanks for the quick response. So, correct me if I'm wrong, MMIO goes into the c2 on RTL, and Reads/Writes are managed through c0 and c1, right? This way I can allocate a buffer through software using fpgaPrepareBuffer = and access that buffer from software as a regular array, and using c0/c1 the AFU is able to work with it and those will be actual main memory accesses, not PCIe transactions. Thank you very much for the help. Regards, David El jue., 7 feb. 2019 a las 16:41, Adler, Michael (<michael.adler(a)intel.co= m>) escribi=C3=B3: > The CCI-P interface differentiates between MMIO (memory mapped I/O) and > main memory read/write requests. MMIO is an FPGA-side address space, main= ly > used for implementing FPGA-side CSRs. Those CSRs are exposed in the > software=E2=80=99s address space but actually result in PCIe transactions= to the > FPGA. > > > > CCI-P=E2=80=99s main memory read/write requests are exactly what you are = asking > for: DMA to host main memory. The primary address space used for those > requests is a =E2=80=9Cphysical=E2=80=9D I/O address space that maps to h= ost physical > addresses. It is also possible to use virtual addresses on the FPGA that > correspond to the software=E2=80=99s virtual address space. For that you = can use > the MPF VTP extension. See section 3 of the tutorial > <https://github.com/OPAE/intel-fpga-bbb/tree/master/samples/tutorial/03_c= cip> > . > > > > -Michael > > > > *From: *OPAE <opae-bounces(a)lists.01.org> on behalf of David Nicuesa < > david.nicuesa.aranda(a)gmail.com> > *Date: *Thursday, February 7, 2019 at 9:53 AM > *To: *"opae(a)lists.01.org" <opae(a)lists.01.org> > *Subject: *[OPAE] Main Memory Access from FPGA > > > > Hi all, > > > > I'm getting started with the examples, specifically with the hello_world > from the intel-fpga-bbb > <https://github.com/OPAE/intel-fpga-bbb/tree/master/samples/tutorial/01_h= ello_world> repository. > Everything works just fine but I was wondering if it is possible for me to > access the Main Memory (Not IO) from the FPGA using the CCI protocol. > > > > I have an rtl to sum two vectors, so my idea was to provide the addresses > for those two vectors from the software application, allocated in General > Purpose Memory. This way, ideally, the FPGA should be able to access those > vectors without having a shared buffer (MMIO). > > > > Is it possible to do this, maybe using some MPF extension? In case this is > not feasible, I should allocate a shared buffer in MMIO space and then > comunicate the vectors through that buffer, right? > > > > Thanks! > --===============8951592328391385024== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+SGVsbG8gTWljaGFlbCw8ZGl2Pjxicj48L2Rpdj48ZGl2PnRoYW5rcyBm b3IgdGhlIHF1aWNrIHJlc3BvbnNlLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U28sIGNvcnJl Y3QgbWUgaWYgSSYjMzk7bSB3cm9uZywgTU1JTyBnb2VzIGludG8gdGhlIGMyIG9uIFJUTCwgYW5k IFJlYWRzL1dyaXRlcyBhcmUgbWFuYWdlZCB0aHJvdWdoIGMwIGFuZCBjMSwgcmlnaHQ/wqA8L2Rp dj48ZGl2PlRoaXMgd2F5IEkgY2FuIGFsbG9jYXRlIGEgYnVmZmVyIHRocm91Z2ggc29mdHdhcmUg dXNpbmfCoDxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoNDEsMTI4LDE4NSk7Zm9udC1mYW1pbHk6TGF0 byxwcm94aW1hLW5vdmEsJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssQXJpYWwsc2Fucy1zZXJp Zjtmb250LXNpemU6MTQuNHB4O2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigy MzEsMjQyLDI1MCkiPsKgPC9zcGFuPjxjb2RlIGNsYXNzPSJnbWFpbC1kZXNjbmFtZSIgc3R5bGU9 ImJveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTpDb25zb2xhcywmcXVvdDtBbmRhbGUg TW9ubyBXVCZxdW90OywmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywmcXVvdDtMdWNpZGEgQ29uc29s ZSZxdW90OywmcXVvdDtMdWNpZGEgU2FucyBUeXBld3JpdGVyJnF1b3Q7LCZxdW90O0RlamFWdSBT YW5zIE1vbm8mcXVvdDssJnF1b3Q7Qml0c3RyZWFtIFZlcmEgU2FucyBNb25vJnF1b3Q7LCZxdW90 O0xpYmVyYXRpb24gTW9ubyZxdW90OywmcXVvdDtOaW1idXMgTW9ubyBMJnF1b3Q7LE1vbmFjbywm cXVvdDtDb3VyaWVyIE5ldyZxdW90OyxDb3VyaWVyLG1vbm9zcGFjZTtmb250LXNpemU6MTQuNHB4 O3doaXRlLXNwYWNlOm5vd3JhcDttYXgtd2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50 O2JvcmRlcjpub25lO3BhZGRpbmc6MHB4O2NvbG9yOnJnYigwLDAsMCk7b3ZlcmZsb3cteDphdXRv O2ZvbnQtd2VpZ2h0OjcwMCI+ZnBnYVByZXBhcmVCdWZmZXI8L2NvZGU+wqBhbmQgYWNjZXNzIHRo YXQgYnVmZmVyIGZyb20gc29mdHdhcmUgYXMgYSByZWd1bGFyIGFycmF5LCBhbmQgdXNpbmcgYzAv YzEgdGhlIEFGVSBpcyBhYmxlIHRvIHdvcmsgd2l0aCBpdCBhbmQgdGhvc2Ugd2lsbCBiZSBhY3R1 YWwgbWFpbiBtZW1vcnkgYWNjZXNzZXMsIG5vdCBQQ0llIHRyYW5zYWN0aW9ucy48L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2PlRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHRoZSBoZWxwLjwvZGl2Pjxk aXY+PGJyPjwvZGl2PjxkaXY+UmVnYXJkcyw8L2Rpdj48ZGl2PkRhdmlkPC9kaXY+PC9kaXY+PGJy PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0 ciI+RWwganVlLiwgNyBmZWIuIDIwMTkgYSBsYXMgMTY6NDEsIEFkbGVyLCBNaWNoYWVsICgmbHQ7 PGEgaHJlZj0ibWFpbHRvOm1pY2hhZWwuYWRsZXJAaW50ZWwuY29tIj5taWNoYWVsLmFkbGVyQGlu dGVsLmNvbTwvYT4mZ3Q7KSBlc2NyaWJpw7M6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJn bWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDox cHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgoKCgo8ZGl2IGxh bmc9IkVOLVVTIj4KPGRpdiBjbGFzcz0iZ21haWwtbV8tMjc1NDc3MDcxNTYxMjAzODE1V29yZFNl Y3Rpb24xIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Okdl b3JnaWEsc2VyaWYiPlRoZSBDQ0ktUCBpbnRlcmZhY2UgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBN TUlPIChtZW1vcnkgbWFwcGVkIEkvTykgYW5kIG1haW4gbWVtb3J5IHJlYWQvd3JpdGUgcmVxdWVz dHMuIE1NSU8gaXMgYW4gRlBHQS1zaWRlIGFkZHJlc3Mgc3BhY2UsIG1haW5seSB1c2VkIGZvciBp bXBsZW1lbnRpbmcgRlBHQS1zaWRlIENTUnMuIFRob3NlIENTUnMKIGFyZSBleHBvc2VkIGluIHRo ZSBzb2Z0d2FyZeKAmXMgYWRkcmVzcyBzcGFjZSBidXQgYWN0dWFsbHkgcmVzdWx0IGluIFBDSWUg dHJhbnNhY3Rpb25zIHRvIHRoZSBGUEdBLjx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWYiPjx1 PjwvdT7CoDx1PjwvdT48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZiI+Q0NJLVDigJlzIG1haW4gbWVtb3J5IHJlYWQv d3JpdGUgcmVxdWVzdHMgYXJlIGV4YWN0bHkgd2hhdCB5b3UgYXJlIGFza2luZyBmb3I6IERNQSB0 byBob3N0IG1haW4gbWVtb3J5LiBUaGUgcHJpbWFyeSBhZGRyZXNzIHNwYWNlIHVzZWQgZm9yIHRo b3NlIHJlcXVlc3RzIGlzIGEg4oCccGh5c2ljYWzigJ0gSS9PIGFkZHJlc3Mgc3BhY2UgdGhhdCBt YXBzCiB0byBob3N0IHBoeXNpY2FsIGFkZHJlc3Nlcy4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1 c2UgdmlydHVhbCBhZGRyZXNzZXMgb24gdGhlIEZQR0EgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBz b2Z0d2FyZeKAmXMgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBGb3IgdGhhdCB5b3UgY2FuIHVzZSB0 aGUgTVBGIFZUUCBleHRlbnNpb24uIFNlZQo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vT1BB RS9pbnRlbC1mcGdhLWJiYi90cmVlL21hc3Rlci9zYW1wbGVzL3R1dG9yaWFsLzAzX2NjaXAiIHRh cmdldD0iX2JsYW5rIj4Kc2VjdGlvbiAzIG9mIHRoZSB0dXRvcmlhbDwvYT4uPHU+PC91Pjx1Pjwv dT48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p bHk6R2VvcmdpYSxzZXJpZiI+PHU+PC91PsKgPHU+PC91Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmIj4tTWljaGFl bDx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWYiPjx1PjwvdT7CoDx1PjwvdT48L3NwYW4+PC9w Pgo8ZGl2IHN0eWxlPSJib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVy LWxlZnQ6bm9uZTtib3JkZXItdG9wOjFwdCBzb2xpZCByZ2IoMTgxLDE5NiwyMjMpO3BhZGRpbmc6 M3B0IDBpbiAwaW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjEycHQ7Y29sb3I6YmxhY2siPkZyb206IDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMnB0O2NvbG9yOmJsYWNrIj5PUEFFICZsdDs8YSBocmVmPSJtYWlsdG86b3BhZS1ib3Vu Y2VzQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPm9wYWUtYm91bmNlc0BsaXN0cy4wMS5v cmc8L2E+Jmd0OyBvbiBiZWhhbGYgb2YgRGF2aWQgTmljdWVzYSAmbHQ7PGEgaHJlZj0ibWFpbHRv OmRhdmlkLm5pY3Vlc2EuYXJhbmRhQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRhdmlkLm5p Y3Vlc2EuYXJhbmRhQGdtYWlsLmNvbTwvYT4mZ3Q7PGJyPgo8Yj5EYXRlOiA8L2I+VGh1cnNkYXks IEZlYnJ1YXJ5IDcsIDIwMTkgYXQgOTo1MyBBTTxicj4KPGI+VG86IDwvYj4mcXVvdDs8YSBocmVm PSJtYWlsdG86b3BhZUBsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5vcGFlQGxpc3RzLjAx Lm9yZzwvYT4mcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpvcGFlQGxpc3RzLjAxLm9yZyIgdGFy Z2V0PSJfYmxhbmsiPm9wYWVAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+CjxiPlN1YmplY3Q6IDwv Yj5bT1BBRV0gTWFpbiBNZW1vcnkgQWNjZXNzIGZyb20gRlBHQTx1PjwvdT48dT48L3U+PC9zcGFu PjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48 L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSBhbGwsIDx1PjwvdT48dT48 L3U+PC9wPgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPgo8 L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SSYjMzk7bSBnZXR0aW5nIHN0YXJ0ZWQg d2l0aCB0aGUgZXhhbXBsZXMsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBoZWxsb193b3JsZCBmcm9t IHRoZcKgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09QQUUvaW50ZWwtZnBnYS1iYmIvdHJl ZS9tYXN0ZXIvc2FtcGxlcy90dXRvcmlhbC8wMV9oZWxsb193b3JsZCIgdGFyZ2V0PSJfYmxhbmsi PmludGVsLWZwZ2EtYmJiPC9hPsKgcmVwb3NpdG9yeS4gRXZlcnl0aGluZyB3b3JrcyBqdXN0IGZp bmUgYnV0CiBJIHdhcyB3b25kZXJpbmcgaWYgaXQgaXMgcG9zc2libGUgZm9yIG1lIHRvIGFjY2Vz cyB0aGUgTWFpbiBNZW1vcnkgKE5vdCBJTykgZnJvbSB0aGUgRlBHQSB1c2luZyB0aGUgQ0NJIHBy b3RvY29sLsKgPHU+PC91Pjx1PjwvdT48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9y bWFsIj48dT48L3U+wqA8dT48L3U+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+SSBoYXZlIGFuIHJ0bCB0byBzdW0gdHdvIHZlY3RvcnMsIHNvIG15IGlkZWEgd2FzIHRvIHBy b3ZpZGUgdGhlIGFkZHJlc3NlcyBmb3IgdGhvc2UgdHdvIHZlY3RvcnMgZnJvbSB0aGUgc29mdHdh cmUgYXBwbGljYXRpb24sIGFsbG9jYXRlZCBpbiBHZW5lcmFsIFB1cnBvc2UgTWVtb3J5LiBUaGlz IHdheSwgaWRlYWxseSwgdGhlIEZQR0Egc2hvdWxkIGJlIGFibGUgdG8gYWNjZXNzIHRob3NlIHZl Y3RvcnMgd2l0aG91dAogaGF2aW5nIGEgc2hhcmVkIGJ1ZmZlciAoTU1JTykuPHU+PC91Pjx1Pjwv dT48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+ PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SXMgaXQgcG9zc2libGUgdG8g ZG8gdGhpcywgbWF5YmUgdXNpbmcgc29tZSBNUEYgZXh0ZW5zaW9uPyBJbiBjYXNlIHRoaXMgaXMg bm90IGZlYXNpYmxlLCBJIHNob3VsZCBhbGxvY2F0ZSBhIHNoYXJlZCBidWZmZXIgaW4gTU1JTyBz cGFjZSBhbmQgdGhlbiBjb211bmljYXRlIHRoZSB2ZWN0b3JzIHRocm91Z2ggdGhhdCBidWZmZXIs IHJpZ2h0Pzx1PjwvdT48dT48L3U+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHU+PC91PsKgPHU+PC91PjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwi PlRoYW5rcyE8dT48L3U+PHU+PC91PjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cgo8 L2Jsb2NrcXVvdGU+PC9kaXY+Cg== --===============8951592328391385024==--