11-28-2018 01:58 AM - edited 11-29-2018 10:56 AM
I have a PYNQ board running Linux booted from an SD. The PL is configured to use an AXI GPIO to communicate with the LEDs (a simple hardware system). I have also inserted the ILA for hardware debugging. I am using Vivado and SDK 2017.1
I have verified the PL functionality running an standalone application and debugging it using cross-triggering in SDK in both directions (PL to PS and PS to PL). Everything works fine.
The problem comes when I try to cross-trigger in a Linux environment. I can certainly use the hardware manager to run the ILA core and capture data when a condition is met. Even though, this condition should trigger a signal (trigger in to the PS) and stop the processors. I cannot get to achieve this. The SDK system debugger doesn't have support for cross-triggering when debugging Linux applications through the tcf-agent. Moreover, when debugging a Linux application through SDK and a breakpoint is reached, it doesn't cross-trigger the ILA.
I imagine this two problems come from not enabling the cross-trigger as in a standalone application through the system debugger, but I can't get to find where I should enable this in the Linux environment to function in a similar way as an standalone application (cross-triggering in both directions). Maybe in the FSBL?
Another problem arises when debugging a Linux application through the system debugger in SDK. Some breakpoints are skipped. I have noticed that if the breakpoints are closer together they function correctly, but the more separate they are the more probability to be skipped.
I am more concerned about the first two problems (cross-triggering from PS-PL and PL-PS). Does anyone know anything about this?
Thank you all in advance.
11-28-2018 03:16 AM
12-17-2018 02:48 PM
Have you checked the document Embedded Processor Hardware Design - UG940. There are several configurations that need to be made in SDK and Vivado to enable this Fabric to PS cross-triggering.
In the document above, Lab 2 explains the whole configuration process. Please go through the whole Lab2 tutorial, as it shows the check-boxes that need to be checked to enable it, and also shows the ILA settings that need to be configured.
On page 63, it finally shows the Fabric to PS in action.
Please let us know if you have any question.
12-17-2018 03:33 PM
Yes, I already followed that tutorial, which targets cross-triggering in standalone applications. Everything worked fine
The problem comes when trying to cross-trigger from a Linux application running in the ARM processors to the PL. As you can see in the tutorial you mention, when setting the system debugger in the SDK, some configuration is done to set up the cross-triggering (probably to control the CoreSight signals adequately).
When debugging a Linux application you cannot set this configuration in the SDK, probably because a driver is needed in the Linux Kernel of the device (Zynq) to use the CTI (Cross Trigger Interface) of CoreSight (as well as setting the correct options in the device tree).
I have not found any tutorial or explanation in the way to set up cross-triggering from Linux to PL (not from standalone), but found there is no actual driver to control the CTI.
I don't know if there is other possible solutions to achieve this, as it is necessary for me to do it from a Linux OS.