The Internet of Things on AWS – Official Blog

Announcing Amazon FreeRTOS 201906.00 Major

Amazon FreeRTOS 201906.00 Major is now generally available. Amazon FreeRTOS extends the FreeRTOS kernel with individual software libraries, making it faster and easier to securely connect microcontroller-based IoT devices to the cloud.

This major release provides significant improvements to several underlying libraries, as well as an update to overall Amazon FreeRTOS versioning:

  • General availability of Bluetooth Low Energy support
  • MQTT library v2.0.0
  • Amazon FreeRTOS folder structure changes
  • CMake
  • Improvements to other existing libraries
  • Additional features
  • Update to release numbering

General availability of Bluetooth Low Energy support

We moved Amazon FreeRTOS Bluetooth Low Energy libraries and companion Android/iOS SDKs out of beta. They are now part of the Amazon FreeRTOS GitHub master repository.

The general availability of Bluetooth Low Energy support in Amazon FreeRTOS includes the following updates:

  • MQTT library: These updates provide increased flexibility and functionality, including the use of MQTT over both Bluetooth Low Energy and TCP/IP. For more information, see the MQTT Library v2.0.0 section later in this post.
  • Over-the-air (OTA) updates: Use the existing OTA update functionality in AWS IoT Device Management to monitor, manage, and update firmware on your Bluetooth Low Energy devices through an authenticated Android/iOS proxy device.
  • AWS IoT Device Tester integration: Run AWS IoT Device Tester to verify your Amazon FreeRTOS ports that support Bluetooth Low Energy. We also added separate tests to verify Wi-Fi provisioning over Bluetooth Low Energy.
  • Amazon FreeRTOS console: You can select the Bluetooth Low Energy library and download the board-specific source code from the Amazon FreeRTOS console.

MQTT library v2.0.0

We made the MQTT library transport independent using an abstraction layer. We also enabled all Amazon FreeRTOS features (such as OTA, AWS IoT Device Defender, and Device Shadows) to work on both Bluetooth Low Energy and TCP/IP. Updates include:

  • The ability to open one socket and re-use it across all Amazon FreeRTOS libraries.
  • MQTT features such as Last Will and Testament, QoS1 with fully implemented retry logic, and persistent sessions.
  • Support for a non-blocking programming model in the MQTT library with a per-operation user-provided callback.
  • The ability to allocate memory dynamically or from statically allocated memory pools.

Amazon FreeRTOS folder structure changes

We updated the folder structure of the Amazon FreeRTOS source code repository in GitHub. It now separates AWS partner-supplied code (such as drivers, ports, and tools) and core Amazon FreeRTOS components (such as the kernel, libraries, and tests) into separate directories. This creates a cleaner separation between AWS and non-AWS code to simplify distribution and maintenance.

If you migrate from a previous version, you must update your build scripts based on these changes. For more information, Porting Amazon FreeRTOS to Your Device contains additional details on this process.

CMake

Amazon FreeRTOS now supports a CMake-based build system. We provide CMake files for core Amazon FreeRTOS components (such as the kernel and libraries). This supports a standard build environment for supported boards.

Amazon FreeRTOS still supports IDE projects.

Improvements to other existing libraries

We modified the Device Shadows v2.0.0 and AWS IoT Device Defender v2.0.0 libraries to use the updated MQTT programming model.

Additional features

We introduce support for task pools in this release. Task pools enable you to configure your application’s tasks and optimize the trade-off between performance and the memory footprint.

Update to release numbering

With this release, we replaced semantic versioning with date-based versioning, so Amazon FreeRTOS 1.4.8 updates to Amazon FreeRTOS 201906.00.

This date-based versioning follows the format YYYYMM.NN:

  • Y represents the year (2019).
  • M represents the month (June).
  • N represents the release order within the designated month (00 being the first release in June).

For example, a possible second release in June 2019 would be 201906.01.

Each Amazon FreeRTOS library still retains its semantic versioning. In semantic versioning, the version number itself (X.Y.Z) indicates if the release is a major, minor, or point release.This can create situations where semantic versioning indicates a major release based on changes that don’t affect an individual application. By moving semantic versioning down to the individual library, individual customers can assess the scope and impact of a new release on their application. This release includes major version changes to multiple libraries including MQTT and Device Shadows.

How this release affects you

This update may affect your existing applications and device qualifications.

To allow your build scripts to use the updated libraries, you must update any existing applications based on previous versions of Amazon FreeRTOS. You can choose to use the new APIs for the updated libraries listed earlier. Or, you can use the included compatibility layer for applications that cannot be updated to use the modified APIs. You can find detailed information about migrating your application to the new release here.

All previously qualified reference boards remain qualified with this release. New qualifications also qualify on the new baseline. For more information, see AWS Device Qualification Program.

Conclusion

This post reviewed the updated features and release numbering standard for Amazon FreeRTOS 201906.00. You can learn more about using Amazon FreeRTOS Bluetooth Low Energy here and performing OTA updates using Bluetooth Low Energy here.