15 #include <adi_cyclecount.h> 17 #include <adi_processor.h> 18 #include <rtos_map/adi_rtos_map.h> 72 #pragma diag_suppress=Pm143,Pm073,Pm023 81 #define ADI_CYCLECOUNT_TOTAL_ID_SZ (ADI_CYCLECOUNT_ID_COUNT + ADI_CYCLECOUNT_NUMBER_USER_DEFINED_APIS) 109 static volatile uint32_t nNumSystickInterrupts = 0u;
111 #if ADI_CYCLECOUNT_ENABLED == 1u 122 nNumSystickInterrupts++;
164 ADI_INT_STATUS_ALLOC();
165 ADI_ENTER_CRITICAL_REGION();
170 ADI_EXIT_CRITICAL_REGION();
197 cycle_count_stack_ndx++;
200 cycle_count_stack[cycle_count_stack_ndx].adjusted_cycle_count = 0u;
231 if( cycle_count_stack_ndx > 0 )
238 cycle_count_stack[cycle_count_stack_ndx].starting_cycle_count -
239 cycle_count_stack[cycle_count_stack_ndx].adjusted_cycle_count;
243 cycle_count_stack[cycle_count_stack_ndx-1].adjusted_cycle_count += elapsedTime;
247 cycle_count_stack_ndx--;
305 adi_cyclecounting_identifiers[adi_cyclecounting_identifiers_index] = EntityName;
306 *pid = adi_cyclecounting_identifiers_index;
307 adi_cyclecounting_identifiers_index++;
344 adi_cyclecount_t startCycleCount = cycle_count_stack[cycle_count_stack_ndx].starting_cycle_count;
345 adi_cyclecount_t adjustCycles = cycle_count_stack[cycle_count_stack_ndx].adjusted_cycle_count;
346 adjustCycles += startCycleCount;
353 if(adjustedValue > cycleCounts[
id].max_cycles_adjusted ){
356 if(adjustedValue < cycleCounts[
id].min_cycles_adjusted){
366 if(unadjustedCycleCount > cycleCounts[
id].max_cycles_unadjusted ){
369 if(unadjustedCycleCount < cycleCounts[
id].min_cycles_unadjusted){
393 DEBUG_MESSAGE(
" Cycle Count Report\n");
394 DEBUG_MESSAGE(
" Adjusted Cycle Counts Unadjusted Cycles Counts No. Samples\n");
395 DEBUG_MESSAGE(
" _____________________________ ____________________________ ___________\n");
396 DEBUG_MESSAGE(
"ISR/API Minimum Maximum Average Minimum Maximum Average\n");
400 if( cycleCounts[i].sample_count )
404 "%15s %10llu %10llu %10llu %10llu %10llu %10llu %10lu\n",
405 adi_cyclecounting_identifiers[i],
406 cycleCounts[i].min_cycles_adjusted,
407 cycleCounts[i].max_cycles_adjusted,
408 cycleCounts[i].average_cycles_adjusted/cycleCounts[i].sample_count,
409 cycleCounts[i].min_cycles_unadjusted,
410 cycleCounts[i].max_cycles_unadjusted,
411 cycleCounts[i].average_cycles_unadjusted/cycleCounts[i].sample_count,
412 cycleCounts[i].sample_count
#define ADI_CYCLECOUNT_STACK_SIZE
ADI_CYCLECOUNT_RESULT adi_cyclecount_store(uint32_t id)
Store Cycle Count.
adi_cyclecount_t adjusted_cycle_count
adi_cyclecount_t average_cycles_unadjusted
#define ADI_CYCLECOUNT_SYSTICKS
#define ADI_CYCLECOUNT_ID_COUNT
#define ADI_CYCLECOUNT_INITIAL_STACK_INDEX
void adi_cyclecount_report(void)
Generate a cycle count report.
uint64_t adi_cyclecount_t
adi_cyclecount_t starting_cycle_count
void SysTick_Handler(void)
#define ADI_CYCLECOUNT_TOTAL_ID_SZ
adi_cyclecount_t average_cycles_adjusted
adi_cyclecount_t adi_cyclecount_get(void)
Read the current number of cycle counts.
ADI_CYCLECOUNT_RESULT adi_cyclecount_start(void)
API to be called to start a new cycle counting context.
adi_cyclecount_t max_cycles_adjusted
ADI_CYCLECOUNT_RESULT adi_cyclecount_addEntity(const char *EntityName, uint32_t *pid)
Add an ISR/API to the cycle counting list.
adi_cyclecount_t max_cycles_unadjusted
ADI_CYCLECOUNT_RESULT adi_cyclecount_stop(void)
Cycle Count Stop.
void adi_cyclecount_init(void)
API to be called to initialize the cycle counting framework.
adi_cyclecount_t min_cycles_adjusted
adi_cyclecount_t min_cycles_unadjusted