INDUSTRIAL GRADE
PX5 MODULES

Separately built, lightweight application modules for professional developers

The PX5 MODULE technology enables dynamic or 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 MODULE 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 MODULE 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 MODULE is SIMPLE to use. It implements the same industry-standard POSIX pthread API found in the PX5 RTOS. Typical applications—linked with the PX5 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 PX5 MODULE Manager (which resides with the PX5 RTOS source code). The PX5 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.

PX5 MODULES Diagram

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 PX5 RTOS API
  • Application API Extension Support
  • Arm Cortex-M/R/A & RISC-V
  • IAR, GCC, Arm tools
  • Full Source & No Royalties
  • Professional Support

FAST & EFFICIENT

PX5 MODULE technology is written in C (and some assembly language). Application API calls from a module require a system trap to enter the PX5 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.

Small

Like PX5 RTOS, the PX5 MODULE technology is highly focused on size. The PX5 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 PX5 RTOS APIs available to application modules is easy.

Simple

The PX5 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 PX5 MODULE Manager is ready for operation—no complicated projects and linker control file changes are necessary.

Each PX5 MODULE 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 PX5 MODULE Manager.  */
    px5_module_manager_initialize();

    /* 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);

    while(1)
    {
        sched_yield();
    }
}
		    

MODULE sample code:

#define PX5_MODULE_SOURCE
#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!  */
    while(1)
    {
        sched_yield();
    }
}

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

ADVANCED

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

Full Source Code

PX5 MODULE 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 MODULE infrastructure code is located in the file px5_module.

Processor Support

PX5 MODULE 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 MODULE supports the most popular embedded development tools, including IAR, Arm, and GCC.

Royalty Free

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

Licensing

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!

Support

Licensing

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.

Licensing

Downloads

 

User Guide

Download

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

Matters!

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.