10-22-2019 09:36 AM - edited 10-22-2019 09:59 AM
I have a custom AXI4 Lite peripheral on a Zynq 7010 on a Microzed board. It's connected via an AXI interconnect (1 slave/11 master) interface. This peripheral is connected on the M11 port and I have other AXI4 Lite IPs that work just fine.
I'm trying to do a read from a register on the IP from the PS and it hangs any time I do a read: in Xilinx SDK, the debugger disconnects with "APB AP transaction error, DAP status f0000021" or it just sits on that line of code and does nothing. Using MRD in the XSCT console at that address returns "Memory read error at 0x43C60000. Timeout waiting for the Instruction Complete bit" and it hangs. What's interesting is that writes to that address work just fine, it's just reads that cause it to crash.
I've attached an ILA to the AXI signals and it looks completely normal, except `RREADY` is not being deasserted by the AXI subsystem:
Here's the code that I'm running to do the write and read:
uint32_t* base = (uint32_t *)0x43c60000; // address given to it via the Address Editor *base = 0x1; // works just fine xil_printf("reg0 = %x\n", *base); // causes PS to hang
10-22-2019 09:57 AM
The transaction in the ILA clip looks appropriate. The problem is likely in the PS configuration.
Please post your block diagram and memory address map.
10-22-2019 10:31 AM
Would you like to share your code? It might be that the bug takes place before the trace. It should be possible to figure that out from your code.
You should also be aware that there are bugs in the IP Packager's example/demo AXI-lite core.
10-22-2019 12:19 PM
Did you use the Xilinx template to create your AXI slave IP?
Can you expand the S_AXI port on your IP, and make sure you don't have any signals that might make Vivado think it's a regular AXI, instead of an AXI-Lite--like ID signals?
Can you also instrument the M_AXI_GP0 interface of the PS, so we can see transactions simultaneously on that interface (interconnect slave side) and M10_AXI?