Hi Christoph!
Thanks for your answer. And just to clarify: i am using your reconos memory
controller implementation. :-)
- I checked the splitting of burst transactions and they look fine, so this
seems not to be the issue.
- The caching issues also seem to relate to the page table, although they do
occur less frequent.
- Regarding the ARCACHE amd ARUSER signals: This seems currently to be the
problem. I have trouble verifying that they have the correct value at the ACP
port. Due to the protocol conversion (AXI4 to AXI3) and bus width adaptation
the exact wiring is intransparent to me. I tried to make additional direct
connections between M_AXI_ARUSER and S_AXI_ARUSER but i'm not sure if Vivado
wires it accordingly.
Additionally, the signals that Vivado shows me in the block design view differ
from the ones i get via ILA. In the Block Design View the ACP port has
ARUSER[4:0] signals, but in the ILA i can't find them at all. Thus, i can't
check their actual values. This is really strange...
Thanks again for your answer, now i know i'm searching at the right places.
Kind regards,
Sebastian
On 29.03.2017 12:10, Christoph Rüthing wrote:
> Hi Sebastian,
>
> when developing the current master controller for the ACP of the Zynq I also
> struggled some caching issues and I have some ideas/suggestions you could
> investigate:
>
> * The bus transactions themselves look okay in my opinion. Originally,
> ReconOS
eventually splits up big requests into smaller ones of 64 words
> (32bit) and I am not sure how these are translated by you to bus
> transactions for the ACP (maybe these 64 word request (256 byte) are,
> again, split up into smaller ones).
> * When I encountered caching issues earlier, I also had them for the page
> tables, but I believe you have checked the addresses requested on the bus,
> since you already posted some issues with the address translation.?
> * The ACP has special signals to select between different modes of cache
> coherency for a request via the _ARCACHE and ARUSER signals. At least in
> XPS, these signals were not connected automatically (needed to add them
> manually to mpd, don't know what Vivado is doing). Unfortunately, they are
> rather undocumented in the Zynq TRM provided by Xilinx, but there is some
> documentation from ARM.
> o Zynq TRM states in section 3.5.1 that at least _ARUSER[0] and
> _ARCACHE[1] needs to be set to one.
> o
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0246h/ch02s03s01.html
> provides descriptions for _ARCACHE signals.
> o
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0407i/CIAGAAJH.html provides
> descriptions for _ARUSER signals.
> * I see in the trace, that you already use the _ARCACHE (0x3) signals, but
> --
> You received this message because you are subscribed to the Google Groups
> "ReconOS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
reconos+u...@googlegroups.com
> <mailto:
reconos+u...@googlegroups.com>.
> For more options, visit
https://groups.google.com/d/optout.