
AVIX is an RTOS for Microchip 16-bit (PIC24/30/33) and 32-bit (PIC32) microcontroller families.
AVIX fully exploits the capabilities of those controllers making it not only the fastest RTOS in its class but also enabling a number of capabilities not found in any other RTOS.
AVIX makes you feel more secure about the timing and responsiveness of your application than is possible with any other RTOS. This is accomplished by the fact that AVIX never disables interrupts while still allowing your interrupt handlers to use many system functions to communicate with your application threads. Interrupt latency equals that of the underlying hardware without AVIX adding a single cycle to it. Also, because of its hybrid architecture, AVIX interrupt handlers are shorter and thus faster increasing your applications responsiveness even more.
AVIX preserves a huge amount of RAM by offering a dedicated interrupt stack. Instead of each interrupt using the stack of the currently active thread, with AVIX all interrupt handlers use the same system wide stack. With AVIX-32, an average application can preserve up to 10KB of RAM which is over 30% of the total amount of RAM available on an average controller.
Besides these features which are not found in this combination in any other RTOS, AVIX offers all you might expect from a professional RTOS like mutexes, semaphores, event flags, message queues, pipes, memory pools and timers.
Finally AVIX proves to be one of the fastest RTOSes on the open source benchmark 'ThreadMetric'.
AVIX really does help in solving the problems you encounter during development of your embedded system.
The Product
AVIX comes in two ports, AVIX-16 for PIC24F, PIC24H, dsPIC30F and dsPIC33F controllers and AVIX-32 for PIC32 controllers.
Each port is sold as a separate product and each port can be obtained in three different retail distributions. These different distributions exist so you as a customer can buy the cheapest possible distribution to suit your needs.
The types of distribution differ in their configurability options and the maximum number of kernel objects that can be created as specified in the table below.
More information about the capabilities can be found below - see "Background on Distribution Capabilities". Make sure to read this before deciding for a specific type of distribution.
AVIX is distributed as a binary library, offering a number of configurable parameters where the parameters that are configurable depend on the type of distribution.
AVIX comes with a viewer plug in for the MPLAB development environment, offering detailed insight in the status and resource usage of your AVIX based application.
Distribution Capabilities
For each type of distribution, the available data memory present in the applied controller may limit the amount of kernel objects that can be created, regardless the figures specified in above table. The figures presented for the Basic and Standard distribution are maximum values given enough data memory is present. In case data memory gets exhausted before reaching the specified figure no more kernel objects can be created notwithstanding the figure specified above. For the Extended distribution, the amount of data memory is the only limiting factor.
To successfully run AVIX-16, the minimum amount of RAM a controller should have is 2KB.
To successfully run AVIX-32, the minimum amount of RAM a controller should have is 4KB.
When using AVIX-16 with a 33FJ256GP710 controller with a maximum of 31 priorities, a system stack of 300 bytes, a message body size of 8 bytes and using no heap, the following maximum values apply: ~135 threads with a 150 byte stack, or ~1650 event groups or ~1650 semaphores or ~1480 mutexes or ~930 timers or ~570 pipes with a 10 byte buffer or ~190 memory pools with 10 memory blocks of 10 bytes each.
When using AVIX-32 with a 32MX360F512L controller with a maximum of 31 priorities, a system stack of 800 bytes, a message body size of 8 bytes and using no heap, the following maximum values apply: ~113 threads with a 150 byte stack, or ~950 event groups or ~950 semaphores or ~840 mutexes or ~580 timers or ~380 pipes with a 10 byte buffer or ~135 memory pools with 10 memory blocks of 10 bytes each.
No rights can be derived from these figures.
These figures are based on AVIX version 3.1 and are meant to give an impression of its capabilities.
These figures may change with future versions of AVIX.
