19 #include <adi_cyclecount.h> 21 #include <adi_processor.h> 22 #include <rtos_map/adi_rtos_map.h> 76 #pragma diag_suppress=Pm143,Pm073,Pm023 85 #define ADI_CYCLECOUNT_TOTAL_ID_SZ (ADI_CYCLECOUNT_ID_COUNT + ADI_CYCLECOUNT_NUMBER_USER_DEFINED_APIS) 113 static volatile uint32_t nNumSystickInterrupts = 0u;
115 #if ADI_CYCLECOUNT_ENABLED == 1u 126 nNumSystickInterrupts++;
168 ADI_INT_STATUS_ALLOC();
169 ADI_ENTER_CRITICAL_REGION();
174 ADI_EXIT_CRITICAL_REGION();
201 cycle_count_stack_ndx++;
204 cycle_count_stack[cycle_count_stack_ndx].adjusted_cycle_count = 0u;
235 if( cycle_count_stack_ndx > 0 )
242 cycle_count_stack[cycle_count_stack_ndx].starting_cycle_count -
243 cycle_count_stack[cycle_count_stack_ndx].adjusted_cycle_count;
247 cycle_count_stack[cycle_count_stack_ndx-1].adjusted_cycle_count += elapsedTime;
251 cycle_count_stack_ndx--;
309 adi_cyclecounting_identifiers[adi_cyclecounting_identifiers_index] = EntityName;
310 *pid = adi_cyclecounting_identifiers_index;
311 adi_cyclecounting_identifiers_index++;
348 adi_cyclecount_t startCycleCount = cycle_count_stack[cycle_count_stack_ndx].starting_cycle_count;
349 adi_cyclecount_t adjustCycles = cycle_count_stack[cycle_count_stack_ndx].adjusted_cycle_count;
350 adjustCycles += startCycleCount;
357 if(adjustedValue > cycleCounts[
id].max_cycles_adjusted ){
360 if(adjustedValue < cycleCounts[
id].min_cycles_adjusted){
370 if(unadjustedCycleCount > cycleCounts[
id].max_cycles_unadjusted ){
373 if(unadjustedCycleCount < cycleCounts[
id].min_cycles_unadjusted){
397 DEBUG_MESSAGE(
" Cycle Count Report\n");
398 DEBUG_MESSAGE(
" Adjusted Cycle Counts Unadjusted Cycles Counts No. Samples\n");
399 DEBUG_MESSAGE(
" _____________________________ ____________________________ ___________\n");
400 DEBUG_MESSAGE(
"ISR/API Minimum Maximum Average Minimum Maximum Average\n");
404 if( cycleCounts[i].sample_count )
408 "%15s %10llu %10llu %10llu %10llu %10llu %10llu %10lu\n",
409 adi_cyclecounting_identifiers[i],
410 cycleCounts[i].min_cycles_adjusted,
411 cycleCounts[i].max_cycles_adjusted,
412 cycleCounts[i].average_cycles_adjusted/cycleCounts[i].sample_count,
413 cycleCounts[i].min_cycles_unadjusted,
414 cycleCounts[i].max_cycles_unadjusted,
415 cycleCounts[i].average_cycles_unadjusted/cycleCounts[i].sample_count,
416 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