Over the past 16 years, Feaser has been involved with a large number of embedded software projects for its customers. From the experience gained, it became clear that almost every firmware is in need of some common functionality. For example: critical sections, dynamic memory management and assertions. Almost every customer had their own implementation for this, which led to the idea to develop this functionality as a generic library. Hence, the MicroTBX project was born.
MicroTBX stands for Microcontroller ToolBoX and it is an embedded software library made up of software components commonly needed in firmware. MicroTBX is open source and released under the permissive MIT license, meaning that is it free to use for every embedded software developer and it can be integrated into closed sourced projects. At this point, the following software components are included:
|Assertions||For checking situations that should never happen.|
|Critical Sections||For mutual exclusive access to shared resources.|
|Heap||For static memory pre-allocation on the heap.|
|Memory Pools||For pool based dynamic memory allocation on the heap.|
|Random Numbers||For generating random numbers.|
|Checksums||For calculating data checksums.|
|Cryptography||For data encryption and decryption.|
Ideally MicroTBX is integrated at the early stages of firmware development. Once integrated into your firmware project, the functions offered by MicroTBX become available to all other parts of your firmware, such as the actual application, the operating system and the hardware abstraction layer. The following illustration further clarifies where MicroTBX fits into your firmware’s architecture:
MicroTBX is written in the C programming language (C99) and developed with quality and MISRA compliance in mind, making it an option even for safety-critical embedded software programs. Special care was given to making the code threadsafe, which means it is safe to call MicroTBX functions in a multithreaded environment, for example when your embedded software program is built upon a pre-emptive RTOS.
All microcontrollers based on an ARM Cortex-M core are currently supported, for example: ST STM32, Infineon XMC, and NXP S32K. There is little effort involved with porting MicroTBX to different microcontroller families.
Development of MicroTBX takes place at GitHub: https://github.com/feaser/microtbx. Contributions are welcome and encouraged. Feel free to submit issue reports and pull requests.
To get started, download the latest stable release from the MicroTBX project on GitHub: https://github.com/feaser/microtbx/releases. Next, follow the integration steps described on the first page of the online user manual, which is located at: https://feaser.github.io/microtbx/.