Lightweight Processes

Separately built, lightweight application modules for professional developers

PX5 MODULES technology enables dynamic and in-place execution of separately compiled and linked C application code. An application module can be built in a position-independent manner (code and data) or linked to fixed addresses in the firmware memory. It can be loaded dynamically during run-time or be permanently resident in the firmware image. Loading a module dynamically can also be part of a broader partial update strategy. An application module has at least one thread (more can be created dynamically). A module can be thought of as an extremely lightweight process.

Since each application module has its own distinct memory space, PX5 MODULES technology can isolate the module during execution so that it can only access its memory area. Any access outside of its memory area will generate a fault. PX5 MODULES leverages the processor's MPU or MMU to provide this protection. It also offers time-domain protection by enforcing a maximum priority for application module threads.

PX5 MODULES is simple to use. It implements the same industry-standard POSIX pthread API found in PX5 RTOS. Typical applications—linked with the RTOS code—directly call the API implementation. In the context of a MODULE, there is a separate implementation of the API that uses a trap instruction to request to the Module Manager (which resides with the RTOS source code). Module Manager also provides APIs for dynamically loading and unloading modules.

Dynamic execution of separately compiled C application code, simple integration and robust memory isolation.

Components of PX5 MODULES

Mouse over for component details
  • Separately built images
  • Dynamic Loading (Partial Update)
  • In-place execution support
  • Position independent (code/data)
  • Absolute address support
  • Memory protection (MPU/MMU)
  • Same API as PX5 RTOS
  • Application API extension support
  • Cortex-M/R/A, RX, RISC-V
  • IAR, GCC, Arm tools
  • Full source code
  • No royalties
  • Professional Support


PX5 MODULES technology is written in C (and some assembly language). Application API calls from a module require a system trap to enter the Module Manager. From there, the request is processed. Control returns to the calling application module thread when the processing is complete. This processing is optimized for maximum efficiency.


Like the RTOS, the PX5 MODULES technology is highly focused on size. Module Manager requires less than 3KB of flash and less than 512 bytes of RAM for minimal usage. The minimal size of the module support (per module) is less than 512 bytes of flash and 2KB of RAM. Defining the default RTOS APIs available to application modules is easy.


The Module Manager comprises one source file, px5_module_manager.c. This file can be easily added to any project. The only additional requirement is to set up the project’s include path so that px5_module_manager.h can be located during compilation. At this point, the Module Manager is ready for operation—no complicated projects and linker control file changes are necessary.

Each PX5 MODULES requires only the px5_module.c and px5_module_description.s source files and the application code. The include file px5_module.h must also be available in the path.

Module Manager Sample Code:

#include <pthread.h>
#include  <px5_module_manager.h>

unsigned char     memory[1024];

int   main()
    /* Start PX5 RTOS.  */
    px5_pthread_start(1, memory, sizeof(memory));

    /* Initialize the Module Manager.  */

    /* Create a module. The code for the module is already loaded at
       0x8000000 and RAM at 0x64000000.  */
    px5_module_manager_create(0, NULL, 0, 16, 31, 
	(void *) 0x8000000, 0x4000, (void *) 0x64000000, 0x400, NULL, 0);


MODULE sample code:

#include  <px5_module.h>

/* This is the module's entry function (thread).  */
void *  module_entry(void *  argument_area,  u_long  argument_size)
    /* Application processing goes here!  */

/* This is the exit function of the module, which is called before the module is terminated.  */
void  module_exit(void)
    /* Application processing goes here!  */


PX5 MODULES is a unique lightweight process not available with many embedded RTOS-class solutions. With it, applications can isolate less tested software components and perform partial system updates.

Full Source Code

PX5 MODULES is delivered with complete source code that is easy to understand. The implementation code associated with the Module Manager is named accordingly and is contained in the px5_module_manager.c file. All the PX5 MODULES infrastructure code is located in the file px5_module.

Processor Support

PX5 MODULES is written completely in ANSI C, which makes it highly portable to any processor architecture with C compiler support, including all popular Arm architectures (Cortex-A/R/M) and RISC-V architectures.

Tool Support

PX5 MODULES supports the most popular embedded development tools, including IAR, Arm, and GCC.

Royalty Free

PX5 MODULES is offered royalty-free, with simple and easy-to-understand licensing terms.


Professional Support

The embedded software experts on the PX5 support team are always ready to help and promise quick action on every support request. We are here to help!



To take advantage of the advanced PX5 NET in your next embedded IoT design, please contact us about licensing options today!

Please also reach out to us if you have any questions about the PX5 NET and how it might benefit your development.




User Guide


Please Sign in

You need to Log In first before you can download User Guide.

Log In

Please Sign in

You need to Log In first before you can download White paper.

Log In

NET News Sign Up

Message Sent

Thank you for subscribing!
You’ll get company news and helpful tips, upcoming events, and more.

Your Feedback


Please answer 5 quick questions to help us better meet your needs!

What do you like about the PX5 RTOS?

What do you dislike about the PX5 RTOS?

What would you like to see the PX5 RTOS?

What do you like about our website?

How can we improve our website?

Survey Completed

Thank you

We sincerely appreciate your valuable input and the time you’ve taken to complete a survey.