Modern embedded applications need to be optimized in different areas of their application. Specifically, with battery-driven or energy-harvesting devices, the power domain is the prime target for such optimization. Energy consumption must be reduced as far as possible. To find the energy leaks within an application, software computation plays its own role. Each compute requires a different amount of energy. The goal for the developer is to find those spots within his application, that consume the most and might be optimized for current consumption.
The above image displays the power management performed with an embOS sample application that toggles two LEDs. The first one is toggled every 200ms (5 Hz), whereas the second one is toggled every 200ms (20Hz). The Ozone Power Graph nicely shows the changing target current when an LED is toggled. In the timeline at the beginning both LEDs are off, then both are switched on. After 50ms one LED is switched off. The same LED is toggled every 50ms two more times, before the other LED is switched off.
With POWER Profiling, we can even see the 1ms SysTick interrupt, as it requires slightly more power than the idle system.
When we zoom in even further, we can also identify when a task executed and turned an LED on.