Over the past year requests started to trickle in for being able to run the OpenBLT bootloader on S32K11 and S32K14 microcontrollers. As a reaction to these requests, support for the entire NXP S32K microcontroller range was developed in the OpenBLT bootloader. The goal of this article is to describe in more detail how this support was realized and to point you in the right direction in case you want to start evaluating this bootloader solution for your NXP S32K based product. It is targeted towards those who are involved with developing hardware based on a NXP S32K microcontroller and looking for a flexible, reliable and readily available solution for performing firmware updates.
The NXP S32K microcontrollers are targeted at automotive and industrial applications. It is a microcontroller portfolio that can scale with your product over time. You could get started with the S32K11x series that is based on an ARM Cortex-M0+ core running at speeds up to 48 MHz. When more memory or performance is needed, you can switch to a different microcontroller derivative in the same portfolio, all the way up to the S32K14x series that is based on an ARM Cortex-M4F with hardware floating point support and running at speeds up to 112 MHz. Even the complementary S32 SDK software drivers are compatible between all S32K derivatives.
To help you get started, demo programs were created for two different low-cost evaluation boards: the NXP S32K118 EVB and the NXP S32K144 EVB. The demo programs can be built with either the S32 Design Studio IDE or the IAR Embedded Workbench. The demo programs support firmware updates via both RS232 and CAN.
Support for the NXP S32K is currently available in the SourceForge SVN trunk and the GitHub GIT master branch. It will be included in the next stable release of OpenBLT, which is planned for early July 2020. In the meantime you can checkout / clone the development version of OpenBLT from SVN or GIT to access the new NXP S32K support.
The S32 Design Studio bundles the Processor Expert tool. Processor Expert enables you to quickly and conveniently configure the microcontroller and automatically generate code for the peripheral initialization. When creating the S32K OpenBLT demo programs, it was decided to not use Processor Expert. The reason for this is that those who selected the IAR Embedded Workbench as their development tool do not have access to the Processor Expert.
The S32K11 is based on an ARM Cortex-M0+ and the S32K14 is based on an ARM Cortex-M4F. For this reason they are considered as two separate microcontroller families in OpenBLT and a port was developed for each one individually. Here is an illustration of where you can find the S32K11 and S32K14 ports in the OpenBLT source tree:
When developing the ports for the S32K microcontrollers, there was a choice to make for how to develop the flash, RS232 and CAN drivers. The S32 SDK peripheral drivers could be leveraged or the drivers could be developed from scratch by directly accessing the peripheral registers. Even though more development effort was involved, the latter option was chosen for the following reasons:
- It results in a smaller ROM footprint for the bootloader.
- No maintenance is required when new versions of the S32 SDK peripheral drivers are released.
While developing support for the S32K microcontrollers, the port template and demo program templates were used as a foundation. These templates were recently added to the OpenBLT bootloader. In case you want to create your own demo programs or ports, feel free to use these yourself. More information about these templates are available in this blog article.
Enjoy using the OpenBLT bootloader in your S32K based product and feel free to contact Feaser for additional information or to request a quote for the commercial license.