Profiling on Cortex/BB


I am trying to profile code on ARM using the performance counter registers.

I was able to use the clock count register (CCNT) successfully to obtain the counts, however I am not able to get the event counters to work properly. I always get 0 as the count no matter which event I select. It looks like to use the event counters, the DBGEN (debug enable) or NIDEN (non-invasive debug enable) signal must be set to HIGH (please correct me if this assumption is wrong).

The Cortex-A8 TRM says that DBGEN, NIDEN, SPIDEN, and SPNIDEN input signals are either tied off to some fixed value or controlled by some external device. Is there a way to set these input signals to HIGH on the BeagleBoard?

I polled the DSCR register (debug status and control register) and looking at bits 14-17, it currently shows that all these signals are set to LOW.


Oprofile code in kernel might help configure PCM registers correctly.