The steps to create a microcontroller application using RTX5 are:
Cortex-A based microcontrollers are less unified with respect to the interrupt and timer implementations used compared to M-class devices. Thus RTX requires additional components when an A-class device is used, namely CMSIS-Core IRQ Controller (API) and OS Tick (API) implementations.
The default implementations provided along with CMSIS are
For devices not implementing GIC, PTIM nor GTIM please refer to the according device family pack and select the proper implementations.
If you require some of the RTX specific functions in your application code, #include the header file rtx_os.h. This enables low-power and tick-less operation modes.
Every implementation of the CMSIS-RTOS2 API can bring its own additional features. RTX5 adds a couple of functions for the idle more, for error notifications, and special system timer functions. It is also using macros for control block and memory sizes.
If you require some of the RTX specific functions in your application code, include the header file rtx_os.h:
RTX5 interfaces to the Event Recorder to provide event information which helps you to understand and analyze the operation.
Once the target application generates event information, it can be viewed in the µVision debugger using the EventRecorder.
The CMSIS Pack contains a csolution project for building the complete set of RTX5 libraries. This project can also be used as a reference for building the RTX5 libraries using a tool-chain of your choice.
The build process is managed using the following files:
RTX_Library.csolution.yml
: Defines the solution configuration.RTX_Library.cproject.yml
: Specifies the project settings.build.sh
: Script that triggers the library build process.The following table lists the files available in the build output directory, its target architecture with additional attributes and target toolchain.
Library Name | Target Architecture (attributes) | AC6 | GCC | IAR | CLANG |
---|---|---|---|---|---|
RTX_V6M | Arm v6-M | YES | YES | YES | YES |
RTX_V7A | Arm v7-A | YES | YES | YES | NO |
RTX_V7M | Arm v7-M | YES | YES | YES | YES |
RTX_V7MF | Arm v7-M (FP) | YES | YES | YES | YES |
RTX_V8MB | Arm v8M Base Line | YES | YES | YES | YES |
RTX_V8MBN | Arm v8M Base Line (non-secure) | YES | YES | YES | YES |
RTX_V8MM | Arm v8M Main Line | YES | YES | YES | YES |
RTX_V8MMF | Arm v8M Main Line (FP) | YES | YES | YES | YES |
RTX_V8MMFN | Arm v8M Main Line (FP, non-secure) | YES | YES | YES | YES |
RTX_V8MMN | Arm v8M Main Line (non-secure) | YES | YES | YES | YES |
RTX_V81MM | Arm v8.1M Main Line | NO | NO | YES | NO |
RTX_V81MMF | Arm v8.1M Main Line (FP) | NO | NO | YES | NO |
RTX_V81MMFN | Arm v8.1M Main Line (FP, non-secure) | NO | NO | YES | NO |
RTX_V81MMN | Arm v8.1M Main Line (non-secure) | NO | NO | YES | NO |
All RTX5 libraries are built with debug information produced for use by a debugger.
The build process optimizes RTX5 libraries for size, which translates to the following per compiler compiler options:
Compiler | Optimization Option |
---|---|
AC6 | -Oz |
GCC | -Os |
IAR | -Ohz |
CLANG | -Os |