OpenBLT 1.12.0 release notes

The OpenBLT 1.12.0 release was made earlier today, after another half year of development work. 18 tickets were processed, which resulted in 45 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.

Roadmap overview of the OpenBLT version 1.12.0 release. It shows that the release is on time and that 18 tickets were processed.

“Shiny new things and some spring cleaning” describes this new OpenBLT stable release the best. A few highlights:

  • LibOpenBLT now features C# bindings, for those that plan on developing their own firmware update tool in C#.
  • A new port for the ST STM32L5 microcontroller family was developed, including Nucleo-L552ZE demo programs.
  • New demo programs for the popular Nucleo-F429ZI board were developed, replacing the Olimex STM32-E407 demo programs.
  • Demo programs for the Keil MDK IDE were added for all supported ST STM32 boards.

C# bindings for LibOpenBLT

LibOpenBLT is a shared library. So a DLL-file under Microsoft Windows and a SO-file under GNU/Linux. It is what both MicroBoot and BootCommander use under the hood. MicroBoot and BootCommander themselves are really just simple user interfaces. A graphical one and a command-line one, respectively. All the interesting stuff for communicating with the bootloader on the microcontroller and parsing firmware files is offered by functionality embedded in the LibOpenBLT library:

Overview of LibOpenBLT that shows that it's a library upon which MicroBoot and BootCommander are built. Also that you can use LibOpenBLT as a foundation to develop your own firmware update tool.

With the help of the LibOpenBLT library, you can quickly and easily develop your own firmware update tool. One that better integrates with your existing tooling and branding. Accessing the functions inside LibOpenBLT is relatively simple when you develop your firmware update tool in C/C++. You can look at the source code of BootCommander for an example. However, most developers prefer to use a different programming language for developing their own firmware update tool. To access the LibOpenBLT functions in a different programming language, bindings are needed. LibOpenBLT already included bindings for the Object Pascal (Delphi/Lazarus) and Python programming languages.

However, I received quite a few requests for C# as well. I was hesitant at first to develop this, because honestly, I never coded anything in C# before. I wasn’t sure how much effort would be involved. After familiarizing myself with C#, I got the hang of it relatively quickly to the point that I was able to develop the bindings for C#. These C# bindings are included in the new OpenBLT 1.12.0 release. Refer to this tutorial for getting started with developing your own LibOpenBLT based firmware update tool in C#.

Support for Visual Studio 2019

The majority of the included PC tools (the BootCommander program, the LibOpenBLT DLL and the seed/key DLL) can be built with Microsoft Visual Studio. I was still using Visual Studio 2013 on my development system. It was about time to update this to Visual Studio 2019. After a few minor tweaks to the CMake configuration files, this is now fully working.

Visual Studio 2019 by default uses a 64-bit compiler, which theoretically works for the PC tools. However, LibOpenBLT depends on a few third party 32-bit DLLs for which no 64-bit counterparts are (yet) available. Therefore, it is important to invoke cmake with the -A Win32 flag to make sure the 32-bit compiler is used:

  • cmake -A Win32 ..

The PC tools still depended on a few external Microsoft related DLLs, such as ucrtbased.dll and vcruntime140d.dll. Not a major issue, but it bothered me. I figured out that you can statically link the needed functionality, by correctly configuring the CMAKE_MSVC_RUNTIME_LIBRARY variable in the CMake configuration files. This essentially changes the -MDd compiler flag (multi-threaded dynamically-linked runtime library) to -MTd (multi-threaded statically-linked runtime library). So now it’s even easier to distribute the PC tools. You basically just need the MicroBoot or BootCommander executable and the LibOpenBLT DLL.

Newly supported ports and development boards

This release of the OpenBLT bootloader supports the following new microcontroller family:

Additionally, OpenBLT now features demo programs for the following development boards.

Extended support for Keil MDK

Over the years, the demand for demo programs supporting the Keil MDK for ARM IDE increased. To accommodate this, I decided on creating demo programs specifically for the Keil MDK for all STM32 boards, currently supported by the OpenBLT bootloader. You can find links to the getting started documentation in the following table on the Wiki:

Table with an overview of all STM32 demo programs. It highlights that Keil MDK is now supported for all ST demo program in the version 1.12.0 release of the OpenBLT bootloader.

Some spring cleaning

The OpenBLT bootloader project is turning 10 years old later this year. With each OpenBLT release new features and functionality are added, which all needs to be maintained. It was about time that I took a closer look at what parts can actually go, to lower the maintenance effort and shrink the actual size of the OpenBLT bootloader package ZIP-file. I decided on the following removals in this OpenBLT version 1.12.0 release:

  • The Atollic TrueStudio demo programs were removed. ST replaced the Atollic TrueStudio IDE with their STM32CubeIDE. The STM32CubeIDE is fully supported by all STM32 OpenBLT demo programs, so there is no need to keep the Atollic TrueStudio demo programs around.
  • The Rowley CrossWorks demo programs were removed. Rowley CrossWorks is a wonderful cross-platform IDE for ARM microcontrollers. Unfortunately, demand for demo programs supporting Rowley CrossWorks declined over the years.
  • The demo program debug binaries were removed. For each demo program, I included both the S-record and the debug binary. So the ELF, OUT, AFX file, depending on your IDE of choice. My idea was that it would be quicker to get started with the demo programs, because you wouldn’t even have to first build the demos. However, each debug binary was somewhere around 0.5MB in size and that starts to add up. It unnecessarily inflated the size of the ZIP-file of the bootloader package. So I decided on deleting all debug binaries, but keep the (smaller) S-records.

After this spring cleaning, the ZIP-file of the OpenBLT version 1.12.0 release is now 137MB in size, compared to 175MB of the previous release.

Overall state of the OpenBLT bootloader project

As I mentioned in the previous release notes, I expected a downturn in sales of OpenBLT commercial licenses due to the Covid-19 pandemic. Luckily I was completely wrong. It’s business as usual for Feaser, with a steady and healthy increase of OpenBLT related revenues. This means that Feaser can keep on sponsoring the OpenBLT project. Refer to this article for more information about the co-dependent relationship between Feaser and the OpenBLT bootloader project. Work on the next release has already started. Enjoy version 1.12.0 of OpenBLT and happy bootloading!

This entry was posted in OpenBLT and tagged , . Bookmark the permalink.