This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to set triggers inside a cpu-cluster?

Hello, I post here a question I have made already, but probably this is the right forum,

since I have not received answer till now.

I need some clues (better if it is a code example) about how to set up triggers in a way that a trace

disable in a core will automatically set the trace disable for all core in a cluster (without invalidating

  the contents in ETB). So far, that's the sequence I have:

for(i=0; i<cpu_to_trace; i++)
     cs_trace_disable(devices.ptm[i]);
if (itm) {
     cs_trace_disable(devices.itm);

}
cs_sink_disable(devices.etb);
if (devices.itm_etb != NULL) {
     cs_sink_disable(devices.itm_etb);

}

(cs_xxx functions are taken from csaccess.c ARM file). This could take too long time

and I'd like to freeze the contents of PTM/ETB quite soon when requested

(and for all cores housed in a cluster).

Thanks in advance for your kind answers.

Best Regards,

Carlo

Parents
  • Hello,

    now I have a draft indication on which procedure I should follow:

    - program ITM CTI to route the TRIGOUT signal from the CTI trigger input to one of the channels (CTI Trigger to Channel Enable Register n, where n is the trigger input TRIGOUT is connected to), let's say channel 0

    - program each ETM CTI to route the TRIGOUT signal from the CTI trigger input to the same channel, channel 0

    - program the ETB CTI to route channel 0 to the trigger output connected to the ETB's TRIGIN input (CTI Channel to Trigger Enable register n, where n is the trigger output TRIGIN is connected to)

    - program the ETB Trigger Counter register to 0

    - program the ETB FFCR to set the StopTrig bit, and probably also the FOnTrig bit to cause the data in the trace infrastructure to be flushed to the ETB before trace capture stops.  I don't think it's necessary to also set the StopFl bit, but there would be no harm in also setting this.

     

    I'm still curious to know how that could be done using CoreSight Access Library and how to insert the stopping trigger on command.

     

    BR/

    Carlo

Reply
  • Hello,

    now I have a draft indication on which procedure I should follow:

    - program ITM CTI to route the TRIGOUT signal from the CTI trigger input to one of the channels (CTI Trigger to Channel Enable Register n, where n is the trigger input TRIGOUT is connected to), let's say channel 0

    - program each ETM CTI to route the TRIGOUT signal from the CTI trigger input to the same channel, channel 0

    - program the ETB CTI to route channel 0 to the trigger output connected to the ETB's TRIGIN input (CTI Channel to Trigger Enable register n, where n is the trigger output TRIGIN is connected to)

    - program the ETB Trigger Counter register to 0

    - program the ETB FFCR to set the StopTrig bit, and probably also the FOnTrig bit to cause the data in the trace infrastructure to be flushed to the ETB before trace capture stops.  I don't think it's necessary to also set the StopFl bit, but there would be no harm in also setting this.

     

    I'm still curious to know how that could be done using CoreSight Access Library and how to insert the stopping trigger on command.

     

    BR/

    Carlo

Children
No data