AVIX makes use of the controllers power management functionality easier than ever before.
AVIX offers the possibility to detect when it can be beneficial to activate one of the controllers power modes to reduce energy consumption. Here too, AVIX goes a step further than most competing products. Do most competing products allow you to write a function yourself to set a reduced power mode and hook this function to the RTOS, AVIX has got this functionality built into its core. All you need to do is call a function with the desired power mode and AVIX takes care of all the details. Second AVIX offers a solution to a problem not many vendors will tell you about. After selecting a reduced power mode and activating this mode, an interrupt can occur and when processing this interrupt, it can well be the selected reduced power mode may not be activated anymore. Unfortunately you are out of luck, the reduced power mode will be activated potentially bringing the application in an undesired state. Not so with AVIX. When the above situation occurs and in this interrupt a function is called to select a different power mode, it is this last mode that will be selected and not the initial one which proved to be incorrect.
How does AVIX assist in reducing the Energy Consumption of your system?
AVIX offers advanced functionality to assist in reducing the energy consumption of your embedded system. Reduction of energy consumption is a must for battery powered equipment but the ease with which this mechanism can be used makes it just as usable for embedded systems which are powered by a regular power supply.
The ability to reduce energy consumption is a feature of the applied micro controller. These features are commonly known as IDLE or SLEEP mode. However desirable using these modes is, the problem often is that it is very hard to detect when the application is in such a state that these modes can be applied. AVIX has a mechanism that comes to the rescue. Applications based on AVIX consist of a number of threads. But AVIX also has a thread itself, called the idle thread. This idle thread has the lowest priority of all threads in the application so when it is active, no application thread needs to be serviced. Therefore it is safe to assume that when the idle thread is active, one of the energy saving modes offered by the micro controller can be applied and this is exactly what AVIX is capable of doing.
This on its own is nothing special, some competing RTOSes also offer an idle thread making it possible to deploy the micro controllers power management capabilities. What does make the AVIX implementation special are two things:
AVIX has the code to program the controller’s power mode built in making it easier than with any competing product to be deployed. In contradiction to competing RTOSes, usage of the micro controller’s power management capabilities is built right into AVIX making it very easy to deploy. For basic power management, one single function call is all that is needed to reduce your systems energy consumption. Competing RTOSes force you to write the code to deploy the micro controllers power management capabilities yourself since they provide nothing more than a hook allowing an application specific function to be called when the idle thread is active. This approach leaves the often cumbersome programming of the desired power mode to the application.
AVIX solves a race condition related to idle thread based power management leading to a 100% correct behavior, something no competing product offers. The AVIX implementation is not hurt by a serious race condition present in most competing products. When one of the power reduction modes is selected, it can happen that just before this mode is effectuated an interrupt occurs as a result of which it is no longer valid to activate the selected power mode. With most competing implementations you are out of luck. The interrupt has no way to prevent that the power mode is entered and your application will enter an invalid power mode. With AVIX, you are fully in control and even when an interrupt occurs the very instruction before actually effectuating the power mode, this interrupt is capable of selecting an alternative power mode. As a result, with the AVIX implementation your are fully in control and no unexpected behavior will occur.
What different possibilities does AVIX offer?
To reach the highest possible level of energy saving a dedicated approach specific to your embedded system is required. Embedded in the design of your system are those components that, in case they are shut down, have a positive effect on energy saving. Shutting those components down is the responsibility of the application code. AVIX offers functions to:
Select the desired energy saving mode in case the idle thread is running.
Inform the application the selected power mode is about to be activated.
This interface can be used by your application to obtain the highest possible energy saving. It does however require application specific code and detailed knowledge of the micro controllers power saving features.
When not implementing a sophisticated energy saving algorithm, the basic functionality offered by AVIX allows to select a desired energy saving mode with a single function call. Every time the idle thread is active, AVIX will effectuate the selected mode until this mode is left again on the first interrupt that occurs. This basic approach already allows a substantial amount of energy saving without constructing a custom application specific mechanism as described above.
The amount of energy saving depends on the structure and behavior of the application and the applied micro controller and is not a property of AVIX or functions offered by AVIX. AVIX facilitates the application to use capabilities offered by the applied micro controller but is not able to influence the amount of energy saving realized.
Even when setting the highest possible energy saving mode, the result can be zero in case the application is structured such that the idle thread is never active.