Percentage use of the CPU

alainm3 wrote on Sunday, July 20, 2014:

Is there a reference implementation of an indicator of CPU used/free time in % ?

Motivation:I had a test thread without any call to vTaskDelay() by mistake, because of that all lower priority task were never executed. It could prove a valuable debug tool to check is the Idle task is executing as much as is expected.

Alternative: I could maybe set a bit while entering the Idle task and reseting it on exit, how would I do that?

rtel wrote on Sunday, July 20, 2014:

I think there are several things you can do.

  1. Add in an idle hook function that keeps a cycle count for how many times the idle task loops around, then have a high priority ‘watchdog task’ (referred to as a ‘check’ task in all the official demos) that monitors how the cycle counters of each task to ensure they are cycling as expected.

  2. Use the run-time-stats feature, which is generic up to the point of the time source which is necessarily application specific (not just port specific).

  3. Use the traceTASK_SWITCHED_IN() or traceTASK_SWITCHED_OUT trace macros to count how many times the idle task gets switched in/out. You can use xTaskGetIdleTaskHandle() to find the handle of the idle task.

  4. Use FreeRTOS+Trace to visualise exactly how your application is running.

Richard Barry.