Skip to content
Unverified Commit 0048e5f3 authored by Chuyue Luo's avatar Chuyue Luo Committed by GitHub
Browse files

New modular OTA structure (#101)



* components: Remove ota_for_aws_iot_embedded_sdk

Remove the ota_for_aws_iot_embedded_sdk component, as we will be
replacing it with the new modular OTA.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* applications: Add C Runtime Helpers

Add a crt-helpers/ directory within applicatons/helpers. Within this
directory, add a custom implementation of `strnlen` (based on TF-M's
`tfm_strnlen` implementation). This is required because the Arm Compiler
for Embedded (v6.21) does not support `strnlen`.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* components: Add Jobs-for-AWS-IoT-embedded-sdk component

Add the Jobs-for-AWS-IoT-embedded-sdk repository as a submodule. This
library is used to interact with AWS IoT Jobs (remote operations that
are sent to and executed on devices connected to AWS IoT). It is one of
the two libraries that must be integrated to allow the new modular OTA
to be used - second library (aws-iot-core-mqtt-file-streams-embedded-c)
is integrated in a later commit.

In addition, the required integration CMake files to build the component
are added.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* components: Add patches for Jobs-for-AWS-IoT-embedded-sdk library

Two patches are added for the Jobs-for-AWS-IoT-embedded-sdk library:
- The Jobs library assumes the OTA job is signed using ECDSA. However,
we currently use RSA. Therefore, add a patch to change the check for an
ECDSA signature to a check for an RSA signature.
- The Jobs library contains calls to the `strnlen` function. However,
this function is not supported by the Arm Compiler for Embedded (v6.21).
Therefore, add a patch which replaces these calls with calls to our
custom implementation `app_strnlen`.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* components: Add aws-iot-core-mqtt-file-streams-embedded-c component

Add the aws-iot-core-mqtt-file-streams-embedded-c repository as a
submodule. This library allows files from a stream (an abstraction for
a list of files) to be transferred to an IoT device. It is the second of
the two libraries that must be integrated to allow the new modular OTA
to be used.

In addition, the required integration CMake files to build the component
are added.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* components: Add patch for MQTT File Streams library

The aws-iot-core-mqtt-file-streams-embedded-c library uses the `strnlen`
function, which is not supported by the Arm Compiler for Embedded
(v6.21). Therefore, add a patch which replaces the call to `strnlen`
with a call to our custom implementation `app_strnlen`.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* applications: Add MQTT File Downloader config for keyword detection

THe MQTT File Streams library allows a MQTTFileDownloader_config.h file
to be provided, which defines custom values for build configuration
macros. This commit adds a MQTTFileDownloader_config.h file for the
keyword detection example. This file defines the block size that should
be used when downloading the firmware image.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* components: Add patch for FreeRTOS OTA PAL PSA

Add a patch for FreeRTOS OTA PAL PSA to allow it to work with the new
modular OTA structure. This patch does the following:
- Update header includes to remove headers from the old
ota-for-aws-iot-embedded-sdk library, replace these with headers from
the new Jobs-for-AWS-IoT-embedded-sdk library
- Remove usage of data structures from ota-for-aws-iot-embedded-sdk
library, replace these with data structures from
Jobs-for-AWS-IoT-embedded-sdk library.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* ota: Add OTA orchestrator

Add an OTA orchestrator as a helper within the applications/ directory.
The OTA orchestrator uses functionality from the Jobs and MQTT File
Streaming libraries to enable OTA updates.

In addition, update the keyword detection CMakeLists.txt to allow this
example to use the new modular OTA.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* applications: New modular OTA for speech recognition example

Update speech recognition CMakeLists.txt and add
MQTTFileDownloader_config.h file to allow this example to use the new
modular OTA.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* applications: New modular OTA for object detection example

Update object detection CMakeLists.txt and add
MQTTFileDownloader_config.h file to allow this example to use the new
modular OTA.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

* applications: New modular OTA for FreeRTOS IoT Libraries Tests

Update FreeRTOS IoT Libraries Tests CMakeLists.txt and add
MQTTFileDownloader_config.h file to allow the tests to use the new
modular OTA.

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>

---------

Signed-off-by: default avatarChuyue Luo <Chuyue.Luo@arm.com>
parent 37801123
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment