10-19-2017 08:00 AM
Configuration is: Vivado 2017.2, AXI Timer (2.0)
I've got a simple Microblaze system set up with the Interrupt controller, some GPIO and the AXI Timer/Counter module. I've used all the default settings, as far as I know, and Vivado has mapped the Timer/Counter to address 0x41C0_0000 as it tells me in the Address Editor pane.
What I can see is that I'm unable to read/write the control registers successfully. I've just tried using XSCT and while can modify the GPIO tristate control reg, for example, trying to update the TCSR0 at 0x41C0_0000 doesn't work.
How do I go about debugging this further?
10-23-2017 02:26 AM
Take a look to your HDF file within SDK and ensure that the exported design actually is the same as in Vivado. You are using 2017.2 release also which has a known issue re-exporting HDF files, so be sure that you are not facing it!
10-23-2017 02:44 AM
@ibaie, thanks for that. I took a look at the HDF and it seems to be correct. Whenever I've updated it so far, I get a popup within the SDK stating that it is out of date and it then rebuilds things. Do you still think that I should apply the patches in that AR?
10-23-2017 02:48 AM
@kravi, what do you mean by check the clocks and reset? Check that they're hooked up in the BD or something else? I've looked at the RTL top level and the clock/reset use the same nets as the working GPIO block.
10-23-2017 02:49 AM
The popup message is expected, just is warning you that an update of the HDF has been received. If it's not a big issue you can just delete the workspace and export the HDF file again to ensure you are not facing the HDF issue :)
Then test accessing to the IP through XSDB and check if you can read/write the AXI timer.
BTW: What does mean that read/write does not work? is the system hanging? just reading alwasy same values...
10-23-2017 02:53 AM
@ibaie, sure, will try that now.
The component has a register file and I'm failing to write/read any registers. Writing any non-zero value to the control register results in a read back of zero. I started looking at this after the timer interrupt wasn't firing in my example code.
10-23-2017 03:39 AM
10-23-2017 05:20 AM
@ibaie, yay! It works.
So I manged to get myself in a twist by deleting the design resource which is what I thought you were requesting. This corrupted the application project I was using so I had to recreate a new one and copy my sources.
The result is that I can now write and read the Timer registers. I'll try and debug the interrupts further now.
As a side note, how are you supposed to delete the HDF without corrupting your project/workspace?
10-23-2017 06:05 AM
Glad to hear that it worked at the end :)
You don't have to delete the HDF by itself as that is going to corrupt the workspace as you noticed. The AR#69489 will be updated soon with a manual workaround so you can refer to that.
Basically you can open the hw design from XSCT to force updating the content of your hardware project.