Hi,
I am fairly new to JTag Debugging and for our companies project, we are currently using it to debug one of our systems.
In this regard, the system uses an IMX6Q7 CPU (Cortex A9) with 4 cores running baremetal. The scenario is to attach to a running system (with a JLink Ultra+) not to interrupt the system as a whole.
So far, I was successful in attaching with Ozone to different cores by using a JLinkScript file setting the CORESIGHT_CoreBaseAddr variable in the InitTarget() function, if I want to debug anything but core #0.
However this works only with one core and while I can open multiple Ozones and even attach to the various cores (3 work simultaneously so far), they all halt independently.
I know that there is no native support for setting up Coresight ECT/CTM/CTI, however I do have the addresses of the for Cross Trigger Interfaces (CTI) the CPU is providing. According to the manual, the interfaces allow the configuration of the matrix (CTM) to halt and restart Cores simultaniously on trigger events (somehow).
The internet is rather empty when it comes to a description how this is exactly set up. I do know that the Interfaces need to be unlocked with an ACCESS word, which can be found on the website of ARM or in a Linux Kernel reference. However beyond that I don't know anything. It would be good to know if anybody has knowledge or experience to clear up the questions about...
Thanks to anyone who can help.
I am fairly new to JTag Debugging and for our companies project, we are currently using it to debug one of our systems.
In this regard, the system uses an IMX6Q7 CPU (Cortex A9) with 4 cores running baremetal. The scenario is to attach to a running system (with a JLink Ultra+) not to interrupt the system as a whole.
So far, I was successful in attaching with Ozone to different cores by using a JLinkScript file setting the CORESIGHT_CoreBaseAddr variable in the InitTarget() function, if I want to debug anything but core #0.
However this works only with one core and while I can open multiple Ozones and even attach to the various cores (3 work simultaneously so far), they all halt independently.
I know that there is no native support for setting up Coresight ECT/CTM/CTI, however I do have the addresses of the for Cross Trigger Interfaces (CTI) the CPU is providing. According to the manual, the interfaces allow the configuration of the matrix (CTM) to halt and restart Cores simultaniously on trigger events (somehow).
The internet is rather empty when it comes to a description how this is exactly set up. I do know that the Interfaces need to be unlocked with an ACCESS word, which can be found on the website of ARM or in a Linux Kernel reference. However beyond that I don't know anything. It would be good to know if anybody has knowledge or experience to clear up the questions about...
- ...what and which registers I need to write to of each CTI to achieve my goal or connecting trigger events
- ...how trigger events map to something like a breakpoint in Ozone (or are they just the same)
- ...how to put this into the JScriptFile, since I have no clue which function to use to write those values
Thanks to anyone who can help.