The project demonstrates how to integrate FreeRTOS modular software libraries with the hardware capabilities of the i.MX RT1060 Arm® Cortex®-M7 MCU and the enhanced security features of the Edgelock® SE050 secure element. The project contains reference implementations that show different IoT application tasks that run concurrently and securely communicate with AWS IoT. The implementation also shows how to perform over-the-air firmware updates that leverage the AWS IoT OTA service and secure bootloader capabilities from MCUBoot. The reference implementation runs on the i.MX RT1060-EVKB evaluation board and OM-SE050ARD secure element kit. For more details on the feature, see the NXP Featured IoT Reference Integration page on FreeRTOS.org.
The folder inside the repository is organized as follows:
|— core/
|- Middleware/
|- NXP/
|- AWS/
|- FreeRTOS/
|- third_party libs
|- examples/
|- evkbmimxrt1060/
|- common/
|- projects/
|- evkbmimxrt1060/
|- README.md
|- LICENSE
The root of the repository contains the following top level folders:
core
contains submodules to NXP's MCUX SDK repository. The repository hosts the MCUXpresso software development package which contains ARM CMSIS core files, board support packages for devices, shared peripheral drivers and components.Middleware
hosts NXP's middleware SDKs such as the Plug and Trust Middleware stack, the FreeRTOS Kernel and modular software libraries, AWS connectivity libraries, and other third party libraries required for the project.examples
hosts the IoT reference sample for the board. The common demo tasks, such as the MQTT Agent and OTA Agent, which are shared across different board examples are placed under thecommon
folder. Theevkbmimxrt1060
folder contains the demo samples for the board.projects
contains MCUXpresso IDE projects for the examples provided. Currently all projects are tested on the MCUXpresso IDE on a Windows platform.
Source code in this repository includes the following demo projects:
- bootloader: an MCUBoot bootloader ported to the i.MX RT1060 MCU. This is the second stage bootloader which performs application image signature verification and encryption. The key pair for MCUBoot signature verification is generated at the time the bootloader is prepared. The MCUBoot private key is stored securely on the customer's premises and the public key for verification is embedded into the bootloader. The first stage bootloader uses an immutable ROM bootloader which is shipped with the i.MX RT1060 MCU. All other application projects are configured to flash the demo to an address known to the bootloader and require the bootloader to be pre-programmed prior to loading the application project. All demos include an over-the-air firmware update running in a background task, concurrently with other demo tasks, using the coreMQTT and coreMQTT-Agent libraries to manage the thread safety for the MQTT connection. See coreMQTT, AWS IoT Over-the-air (OTA), coreMQTT-Agent for details.
- aws_iot_pubsub: a simple publish subscribe example. By default, there're 2 tasks concurrently sending incremental counters to cloud and listening to the data from cloud. These tasks are running concurrently with the over-the-air firmware update background task.
- aws_iot_shadow: a simple shadow demo that updates the device’s powerOn state and runs concurrently with the over-the-air firmware update background task. See AWS IoT Device Shadow for details.
- aws_iot_defender: a basic device defender demo that sends basic metrics about device health and runs concurrently with the over-the-air firmware update task. See AWS IoT Device Defender for details.
- aws_iot_qual_test: a test project set up executing tests against FreeRTOS integration and AWS IoT Core interoperability and best practices. See FreeRTOS Libraries Integration Tests github repository, and Device Advisor for details.
To clone using HTTPS:
git clone https://github.com/FreeRTOS/iot-reference-nxp-rt1060.git --recurse-submodules
Using SSH:
git clone [email protected]:FreeRTOS/iot-reference-nxp-rt1060.git --recurse-submodules
If you have downloaded the repo without using the --recurse-submodules
argument, you should run:
git submodule update --init --recursive
To get started running demos, see the Getting Started Guide.
See CONTRIBUTING for more information.
The example source code under ./examples/
and the libraries under ./Middleware/AWS
and ./Middleware/FreeRTOS
are licensed under the MIT-0 License. See
the LICENSE
file. For all other source code licenses, including core/
and Middleware/NXP
folders, see the source header documentation.