About three years ago, I publicly released MicroTBX for the first time. MicroTBX is a free embedded software library, packed with functionality commonly needed in embedded software applications. Over time, I kept on working on MicroTBX to the point that it is now ready for the official version 1.0.0 release. This article describes the release notes of MicroTBX version 1.0.0.
What is it
The name MicroTBX stands for: Microcontroller ToolBoX. The base MicroTBX component consists of the following building blocks:
- 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.
- Linked Lists – For dynamically sized lists of data items.
- Random Numbers – For generating random numbers.
- Checksums – For calculating data checksums.
- Cryptography – For data encryption and decryption.
Where to get it
For those that want to dive in right-away, you can download MicroTBX release version 1.0.0 from here:
Alternatively, you can clone it directly from the MicroTBX GitHub repository. Note that its layout is such that you can conveniently add it as a Git submodule to your own Git repository.
How to get started
You can find instructions on integrating MicroTBX in your own firmware, in the online user manual:
The online user manual features a detailed API reference as well:
You can find demo applications in a separate GitHub repository:
Who is it for
Every firmware project can benefit from MicroTBX. As such, MicroTBX is for all embedded software engineers. Firmware should use assertions for error checking and every firmware uses interrupts, resulting in shared resources that need access protection with critical sections. MicroTBX offers modules for this functionality. With the help of the memory pool and linked list modules, you can quickly build things such as run-time configurable dynamic arrays and FIFO buffers. Using the checksum and cryptography modules, you can easily build secure data storage solutions.
Where can it be used
MicroTBX currently supports all ARM Cortex-M based microcontrollers. So anyone developing firmware for one of those microcontrollers (ST STM32, Infineon XMC, NXP S32K, etc.) can reap the benefits of MicroTBX. Note that you can easily port MicroTBX to other microcontroller families.
Compared to the previous release (version 0.9.5) the API remained unchanged. The main focus was on testing for increased quality. MicroTBX boasts high MISRA compliance. Exceptions were needed for only two advisory rules. Additionally, I added unit tests for all API functions using the Unity framework. All unit tests run automatically upon pushing a commit to the Git repository. They run on a GNU/Linux instance and for this reason, I added a GNU/Linux port to MicroTBX. In case you are curious, you can find the framework for building the unit test application here.
A typical use case of MicroTBX is that you add it as a Git submodule to your own Git repository. As such you don’t really need all the demo applications cluttering up your project. For this reason, I moved the demo applications to a separate Git repository. Additional demo applications were added as well. Besides helping you get started, these serve as integration tests. Continuous integration was used to automatically perform a build of the demo applications.
Note that the Git repository with demo applications itself, includes MicroTBX as a Git submodule. As such, you can use it as a reference to see how you would add MicroTBX as a Git submodule to your own Git repository.
In a nutshell, the high MISRA compliance combined with fully automated unit testing, makes MicroTBX production-ready and can even be considered for safety critical applications.