NXP S32K support in the OpenBLT bootloader

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.

Continue reading
Posted in OpenBLT | Tagged , | Comments Off on NXP S32K support in the OpenBLT bootloader

Adjusting OpenBLT for your microcontroller system

The OpenBLT bootloader ships with multiple demo programs for readily available and low cost microcontroller boards. These are great for familiarizing yourself with and evaluating the OpenBLT bootloader. But how do you get the OpenBLT bootloader running on your own microcontroller system? The goal of this article is to answer exactly this question.

Continue reading
Posted in OpenBLT | Tagged , , | Comments Off on Adjusting OpenBLT for your microcontroller system

Memory requirements of the OpenBLT add-on modules

When deciding on a bootloader solution, it is important to know how much of your microcontroller’s flash memory needs to be reserved for the bootloader. For the basic OpenBLT bootloader this is fairly easy to determine, as there are many demo programs available. You can simply rebuild a demo bootloader that is configured for a similar microcontroller. To get the bootloader size as small as possible, you could even follow the steps outlined in this blog article.

But what if you want to make use of one of the OpenBLT bootloader add-on modules that Feaser offers? These modules are not open source and only sold in combination with an OpenBLT commercial license. This article aims to answer exactly this question.

Continue reading
Posted in OpenBLT | Tagged , , | Comments Off on Memory requirements of the OpenBLT add-on modules

OpenBLT 1.9.0 release notes

OpenBLT version 1.9.0 was officially released yesterday, after another half year of development work. 14 tickets were processed, which resulted in 24 commits. Feel free to download the new version of the OpenBLT bootloader and give it a try. This release is on track with the standard release cycle. This article describes in more detail what you can expect from the new OpenBLT release.

Continue reading
Posted in OpenBLT | Tagged , | Comments Off on OpenBLT 1.9.0 release notes

Introducing the MicroTBX software toolbox

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:

Continue reading
Posted in MicroTBX | Tagged , | Comments Off on Introducing the MicroTBX software toolbox

OpenBLT 1.8.0 release notes

OpenBLT version 1.8.0 was officially released today, after another half year of development work. 21 tickets were processed, which resulted in 35 commits. Feel free to download the new version of the OpenBLT bootloader and give it a try. This release is on track with the standard release cycle. This article describes in more details what you can expect from the new OpenBLT release.

Continue reading
Posted in OpenBLT | Tagged , | Comments Off on OpenBLT 1.8.0 release notes

Reading OpenBLT’s version number from your firmware

The goal of this blog article is to answer a support question that has been asked by several OpenBLT bootloader users: How can my own firmware read the version of the bootloader? The bootloader defines three macros that combined hold the bootloader version number. These macros are update each time a new version of the bootloader is released. You can find these macros in the “boot.h” header-file:

When you perform a text search for these macros through the bootloader’s sources, you’ll notice that the macros are not actually used. The idea is that they are available for you to use any way you prefer. You could for example customize the bootloader’s internally used communication protocol (XCP) such that the version number is read out by the PC tools MicroBoot and BootCommander. Although you are free to do so, most users prefer to not touch the bootloader’s core code and instead they want to access the bootloader’s version number from their own firmware. This article contains an example on how to do just that.

Continue reading
Posted in OpenBLT | Tagged , | Comments Off on Reading OpenBLT’s version number from your firmware

OpenBLT 1.7.0 release notes

OpenBLT version 1.7.0 was officially released yesterday, after another half year of development work. 37 tickets were processed, which resulted in 136 commits. Feel free to download the new version of the OpenBLT bootloader and give it a try. This release is on track with the standard release cycle. This article describes in more details what you can expect from the new OpenBLT release.

The main focus points for this release were: (1) Enhancing the security features offered by the bootloader. (2) Improving support for firmware updates via TCP/IP. (3) Porting the bootloader to the STM32F7 microcontroller family. (4) Completing the conversion of all STM32 ports and demo programs from the Standard Peripheral Library (SPL) to the Hardware Abstraction Layer (HAL).

Continue reading

Posted in OpenBLT | Tagged , | Comments Off on OpenBLT 1.7.0 release notes

Relationship between Feaser and OpenBLT

The company Feaser and the OpenBLT bootloader project are two separate entities with a co-dependence. The goal of this article is to zoom in on this relationship and to explain why this relationship results in both entities to thrive.

Continue reading

Posted in OpenBLT | Tagged , | Comments Off on Relationship between Feaser and OpenBLT

Security options of the OpenBLT bootloader

As a consequence of the strong rise of smart and internet connected devices, there is an increased demand for embedded system security. As a result, more and more customers ask Feaser about the security options that are available, when the OpenBLT bootloader is incorporated into their microcontroller based product.

Security is needed in an embedded system to prevent unwanted third parties from tampering with the system and from stealing your intellectual property (IP). From the context of a bootloader, security options are meant to prevent unwanted third parties from

  • Making firmware updates on your product.
  • Capturing your firmware data while it is communicated to your product during a firmware update.
  • Reading out your firmware data after it was programmed onto your product.

The OpenBLT bootloader already has several security options build-in that can be easily enabled. Together with readily available add-on modules and a few extra configuration steps, your system can be fully secured. This article describes the different levels of security available in a system with the OpenBLT bootloader.

Continue reading

Posted in OpenBLT | Tagged , , | Comments Off on Security options of the OpenBLT bootloader

ROM footprint for different OpenBLT configurations

In a system that contains a bootloader such as the OpenBLT bootloader, there are essentially two software programs present in read-only memory (ROM): your own firmware and the bootloader. Even though a bootloader is typically only integrated towards the end of the software development project, it is important to know up-front how much of the internal flash memory should be reserved for the bootloader. Otherwise you might end up in a situation where you realize too late that the microcontroller you selected does not have enough flash memory.

This goal of this article is to give you an indication of how much ROM the OpenBLT bootloader needs, for different configurations of firmware update media.

Continue reading

Posted in OpenBLT | Tagged , | Comments Off on ROM footprint for different OpenBLT configurations

Data exchange between OpenBLT and your firmware

Several OpenBLT bootloader users asked, if it is possible two exchange data between the bootloader and their firmware. Even though the bootloader and your firmware are two completely separate programs in flash memory, which never execute at the same time, such a data exchange is definitely possible. This article presents a free-to-use software module that makes parameter exchange possible, by means of a shared section in RAM.

This data exchange is especially useful in a situation where you want to change the configuration and behavior of the bootloader in a way that was not yet known at the time that the bootloader was programmed into flash memory. For example to change the CAN identifiers the bootloader uses during a firmware update, based on a node-address that was dynamically assigned in your user program. Another example is to pass the IP-address on to the bootloader, which was assigned in your user program via DHCP.

Continue reading

Posted in OpenBLT | Tagged , , | Comments Off on Data exchange between OpenBLT and your firmware

LibOpenBLT Python bindings tutorial

This tutorial video contains a live Python coding session that demonstrates the creation of a custom firmware update tool in less than 30 minutes. To test the newly created firmware update tool, an ST Nucleo-F091RC board is used, but you can use any board that is supported by the OpenBLT bootloader. The Nucleo-F091RC board runs the demo programs that are available in the OpenBLT download package.

Continue reading

Posted in OpenBLT | Tagged , , , , | Comments Off on LibOpenBLT Python bindings tutorial

OpenBLT 1.6.0 release notes

OpenBLT version 1.6.0 was officially released yesterday, after another half year of development work. 42 tickets were processed, which resulted in 140 commits. Feel free to download the new version of the OpenBLT bootloader and give it a try. This release is on track with the standard release cycle. This article describes in more details what you can expect from the new OpenBLT release.

Continue reading

Posted in OpenBLT | Tagged , | Comments Off on OpenBLT 1.6.0 release notes

Firmware updates in a network with multiple nodes

Internally, the OpenBLT bootloader is based on the XCP communication protocol. XCP is a point-to-point protocol for establishing a connection between a host PC and a microcontroller. Now consider a system with multiple nodes, where each node consists of a microcontroller running the OpenBLT bootloader. Can you still perform a firmware update on each individual node? The short answer is: Yes, you can. This article explains how to configure the bootloader for this purpose.

Continue reading

Posted in OpenBLT | Tagged , , , , | Comments Off on Firmware updates in a network with multiple nodes

Reducing the bootloader’s ROM footprint

The recommended way to get started with the OpenBLT bootloader is to first find a demo program, which is based on a microcontroller similar to the one in your system. Once you have gotten familiar with your selected demo bootloader, you can port it to your own system. The demo bootloader most likely supports more functionality than needed. This article explains how to scale down the bootloader configuration, with the goal of reducing the bootloader’s ROM footprint.

The example described in this article, references the Olimex STM32-P103 demo programs. These programs are configured for building with the GNU ARM Embedded toolchain and a Makefile. They were taken from OpenBLT version 1.5.0. The configuration of the default demo bootloader supports quite a bit: Firmware updates via UART, CAN and SD-card, resulting in a ROM footprint of about 20 kb. This article demonstrate how to reduce the ROM footprint of this demo bootloader from 20 kb to 4 kb.

Continue reading

Posted in OpenBLT | Tagged , , | Comments Off on Reducing the bootloader’s ROM footprint

Introducing MicroBoot version 2

MicroBoot is the graphical user interface application for initiating and monitoring the firmware update procedure. It is part of the OpenBLT bootloader package and forms the counter-part to the BootCommander application, which is console based.

The latest stable OpenBLT bootloader (version 1.5.0) contains a version of MicroBoot that works fine, but it only works under Microsoft Windows and it not yet based on the powerful OpenBLT host library (LibOpenBLT). The newly developed MicroBoot version 2 sets out to correct these two shortcomings. It uses LibOpenBLT under the hood and it is developed as a cross-platform application that runs under both Microsoft Windows and GNU/Linux operating systems.

Continue reading

Posted in OpenBLT | Tagged , , , | Comments Off on Introducing MicroBoot version 2

Cross-platform IDE selection for MicroBoot 2.0

The OpenBLT host library (LibOpenBLT), developed in 2017, adds interesting functionality to the OpenBLT bootloader project. It makes it possible for all users to quickly and easily develop their own firmware update tool, in the programming language of their liking. OpenBLT itself already ships with two firmware updates tools: MicroBoot for those that prefer a graphical user interface and BootCommander for those that prefer working from the command line.

Under the hood, BootCommander is already based on LibOpenBLT, but MicroBoot not yet. Another restriction of MicroBoot is that it’s not cross-platform and currently only runs under Windows. One of the planned efforts for this year is therefore to develop a version 2.0 of MicroBoot, such that it is cross-platform and builds upon LibOpenBLT.

A question that I mulled over for the past several months is: In what cross-platform integrated development environment (IDE) should MicroBoot 2.0 be developed? Personally, I am quite programming language and IDE agnostic; I’ll happily use whatever tools seem best for the task at hand.

While pondering the IDE selection question, I found the following potential candidates:

Eventually I settled on the Lazarus IDE. Initially, this might not strike you as the most obvious choice. However, using some tools borrowed from total quality management, it turns out this is the right IDE for the job. The goal of this article is to explain how and why I reached this conclusion.

Continue reading

Posted in OpenBLT | Tagged , , | Comments Off on Cross-platform IDE selection for MicroBoot 2.0

Update on OpenBLT development efforts

After the OpenBLT version 1.5.0 release last month, development efforts for the next version were started right away. With the goal of having a transparent development process, this article provides an update on the ongoing development tasks. For those new to the OpenBLT project have a look at the recently published OpenBLT introduction video:

Continue reading

Posted in OpenBLT | Tagged , , , | Comments Off on Update on OpenBLT development efforts

OpenBLT 1.5.0 release notes

After half a year of development work, OpenBLT version 1.5.0 was officially released yesterday. Feel free to download the new version of the OpenBLT bootloader and take it for a spin yourself. This release is on track with the standard release cycle.

The main focus has been on getting the relatively new OpenBLT host library (LibOpenBLT) feature complete. This includes the BootCommander command-line program as well, since this one is build on top of LibOpenBLT.

Additionally, the support of the IAR, Keil and Atollic development environments was expanded, the SVN repository at SourceForge is now mirrored daily to a GIT repository at GitHub, and the Feaser website was localized to German.

This article describes in more detail what you can expect from the new OpenBLT release.

Continue reading

Posted in OpenBLT | Tagged , | Comments Off on OpenBLT 1.5.0 release notes