Skip to content
  1. Jul 23, 2025
  2. Jul 15, 2025
  3. Jul 07, 2025
  4. Jun 19, 2025
    • Ahmed Ismail's avatar
      Add GitHub DCO-check workflow and fix TF-M URLs (#115) · aba9de92
      Ahmed Ismail authored
      
      
      * github-ci: Add DCO sign-off enforcement workflow
      
      Introduce a `dco-check` job in
      `.github/workflows/ci.yml`
      that runs on pull request events. The job loops over
      every commit in `origin/main..HEAD` and fails immediately
      if any commit lacks a properly formatted
      
          Signed-off-by: <Name> <email>
      
      footer, ensuring full compliance with our Developer
      Certificate of Origin (DCO) policy.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * docs: Redirect TF-M links to Read the Docs URLs
      
      Trusted Firmware-M has moved its public documentation
      from `tf-m-user-guide.trustedfirmware.org/` to
      `trustedfirmware-m.readthedocs.io`. Hence, switching to
      the new domain.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * docs: Add the missing development environment requirements
      
      Some of the newly added dependencies are missing in the
      development environment requirements document. Hence, adding
      these new dependencies.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      ---------
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      aba9de92
  5. Jun 06, 2025
  6. May 01, 2025
    • Ahmed Ismail's avatar
      Update security libraries and FreeRTOS-Kernel (#112) · 54ba27d9
      Ahmed Ismail authored
      
      
      * freertos-kernel: Bump to v11.2.0 release
      
      extern "C" is added to FreeRTOSConfig.h header
      as previously in FreeRTOS-Kernel v11.1.0, the
      extern "C" was added in the FreeRTOS.h header
      before including FreeRTOSConfig.h header thus,
      the configuration file implicitly had the
      extern "C". However, the extern "C" in FreeRTOS.h
      has been moved to be after the headers inclusion.
      Hence, explicitly adding extern "C" that is needed
      by CPP files to FreeRTOSConfig.h
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * mbedtls: Bump to v3.6.3 release
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * tf-m: Bump to v2.2.0 release
      
      This commit includes the following changes:
      
      - Install the needed python packages by TF-M v2.2.0
      in the Docker image used by the development environment
      and in GitHub workflow.
      
      - Remove the ARMClang toolchain MVE patch as it's
      part of TF-M v2.2.0 release.
      
      - Add MPS4 dummy ROTPK provisioning patch because of
      the defect mentioned in the patch file description field.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * docs: Fix expected output for applications
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * devcontainer: Add some fixes and updates
      
      This commit adds the following:
      
      * Add the needed python packages for the
      GDB debugger to work.
      
      * Update the GUI option to match the one
      in `tools/scripts/run.sh`.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      ---------
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      54ba27d9
  7. Apr 07, 2025
  8. Apr 03, 2025
  9. Mar 20, 2025
  10. Feb 24, 2025
  11. Feb 02, 2025
    • Ahmed Ismail's avatar
      Add OTA Orchestrator fixes (#107) · 2c16a189
      Ahmed Ismail authored
      
      
      * ota-orchestrator: Add multiple enhancements and fixes
      
      * Do not suspend OTA agent after successful update.
      
      * vOtaNotActiveHook() should be called whenever there
      are no OTA jobs available.
      
      * Use LogDebug and LogError instead of LogInfo to
      follow the previous ota-for-embedded-iot-sdk library
      implementation (avoiding new issues).
      
      Signed-off-by: Devaraj Ranganna's avatarDevaraj Ranganna <devaraj.ranganna@arm.com>
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * mqtt-agent: Increase MQTT Agent keep alive interval
      
      The `MQTT_AGENT_KEEP_ALIVE_INTERVAL_SECONDS` is increased
      to 100 as in case of using SOFTWARE inference with speech
      recognition application the connection is dropped before
      the ML Inference is done as the software inference is generally
      much slower compared to the Ethos NPU. This connection drop
      cause the ML inference to have wrong results as the task
      is interrupted. Hence, increasing the keep alive interval
      to avoid the connection drop.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * github-upload-artifact: Upgrade the deprecated version
      
      actions/upload-artifact v3 is now deprecated and cannot
      be used anymore. Hence, updating to v4.
      
      `strategy.job-index` is post-fixed to the artifact
      name to overcome the known issue of upload-artifact v4
      not allowing multiple artifacts with the same name on
      the workflow run.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      ---------
      
      Signed-off-by: Devaraj Ranganna's avatarDevaraj Ranganna <devaraj.ranganna@arm.com>
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      Co-authored-by: Devaraj Ranganna's avatarDevaraj Ranganna <devaraj.ranganna@arm.com>
      2c16a189
  12. Jan 29, 2025
    • Ahmed Ismail's avatar
      Add ML Model component OTA update on keyword-detection application (#106) · 09fb523e
      Ahmed Ismail authored
      
      
      * sign-tfm-image: Refactor the CMake Module
      
      The `SignTfmImage.cmake` module is refactored to
      to accept an input binary name and an input signing
      layout file.
      
      These modifications are going to be used to sign the
      non_secure and the ML Model images separately which
      is essential to add the ML Model component OTA update
      feature.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * fvp-options: Remove `--fast` option
      
      `--fast` FVP NPU option is removed as it's not
      completely supported by all platforms.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * cs-300: Extract the ML model to a separate binary
      
      Eventually, we want the MCUBoot (and the rest of TF-M) to handle the ML
      model in the same way as other components. To achieve that, the ML model
      component will be kept in flash during boot, for the MCUBoot to validate
      the image, and perform the swap operation if needed.
      
      Since the Ethos NPU doesn't have access to flash, the model will be
      copied back to DDR at runtime. This is why the model is still kept in
      the DDR memory region in the linker script.
      
      Patches for the trusted_firmware-m component:
      - Add support for the third image for cs-300 platform.
      - Configure the signing layout for the ML model, and reuse the NS key.
      - Add a modified flash map for the cs-300, for the MCUBoot to handle the
      third image. This is based on the default flash layout used before.
      
      Signed-off-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * cs-310: Extract the ML model to a separate binary
      
      Eventually, we want the MCUBoot (and the rest of TF-M) to handle the ML
      model in the same way as other components. To achieve that, the ML model
      component will be kept in flash during boot, for the MCUBoot to validate
      the image, and perform the swap operation if needed.
      
      Since the Ethos NPU doesn't have access to flash, the model will be
      copied back to DDR at runtime. This is why the model is still kept in
      the DDR memory region in the linker script.
      
      Patches for the trusted_firmware-m component:
      - Add support for the third image for cs-310 platform.
      - Configure the signing layout for the ML model, and reuse the NS key.
      - Add a modified flash map for the cs-310, for the MCUBoot to handle the
      third image. This is based on the default flash layout used before.
      
      Signed-off-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      Signed-off-by: default avatardefault avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * mps4: Extract the ML model to a separate binary
      
      Eventually, we want the MCUBoot (and the rest of TF-M) to handle the ML
      model in the same way as other components. To achieve that, the ML model
      component will be kept in flash during boot, for the MCUBoot to validate
      the image, and perform the swap operation if needed.
      
      Since the Ethos NPU doesn't have access to flash, the model will be
      copied back to DDR at runtime. This is why the model is still kept in
      the DDR memory region in the linker script.
      
      Patches for the trusted_firmware-m component:
      - Add support for the third image for mps4 platforms.
      - Configure the signing layout for the ML model, and reuse the NS key.
      - Add a modified flash map for the mps4 platforms, for the MCUBoot to
      handle the third image. This is based on the default flash layout
      used before.
      
      These changes applies to both:
      * Corstone-315 Platform.
      * Corstone-320 Platform.
      
      Signed-off-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * keyword: Extract the ML model as a TF-M component
      
      keyword-detection example:
      - Configure the MCUBoot to work with 3 components instead of 2.
      - Configure the MCUBoot to use a non-default flash map.
      - Set the ML model image version.
      - Sign the ML model image using the same key as the NS image.
      - Generate an update signature for the ML model image.
      - At the ML task init, add a new step, where the ML model is copied from
      flash to DDR.
      - Update the merge images CMake function in TF-M integration
      layer to handle the third component (the ML model image).
      - Update the extract_sections_from_axf CMake function.
      
      Patches for the freertos_ota_pal_psa component:
      - Add the ML model file path.
      - Stop using a global variable to store the NS image version.
      - Fix the GetImageVersionPSA to return the version to an output param
      for any given component (rather than update the global var).
      
      Patches for the ml_embedded_evaluation_kit component:
      - Override EthosU55 NPU default IRQ handler to avoid modifying the
      vector table in run-time which alter the non-secure image result in
      MCUBoot validation failure.
      
      Additions for the OTA Orchestrator:
      - Stop using a global variable to store the NS image version.
      - Replace all the uses of the appFirmwareVersion global var with the
      appropriate call to the new image version getter.
      
      Signed-off-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * ml-update-demo: Update from a faulty model to a working one
      
      Add a modified tflite file that produces no inference results
      at runtime. This file can be used to build an application that
      is fully functional, but the ML inference is unsuccessful in
      detecting any keyword. Applying an OTA ML model update in this
      state is very visible since the updated model does work as
      expected (detects keywords from audio samples).
      
      Signed-off-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * freertos-integration-tests: Remove OTA update dependencies
      
      Since we don't run OTA tests as part of the intgeration tests
      anymore, we don't need to sign the update binary and there
      is no need to upload the update binary to AWS.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      * ci: Add keyword-detection ML Model update nightly test
      
      Add a new nightly test to verify the ML model OTA update,
      this is done for Keyword-Detection application compiled with
      GNU toolchain only as this is the currently supported combination.
      This nightly test runs on all the Corstone platforms.
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      
      ---------
      
      Signed-off-by: default avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      Signed-off-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      Signed-off-by: default avatardefault avatarAhmed Ismail <Ahmed.Ismail@arm.com>
      Co-authored-by: Filip Jagodzinski's avatarFilip Jagodzinski <filip.jagodzinski@arm.com>
      09fb523e
  13. Jan 28, 2025
  14. Jan 13, 2025
  15. Jan 06, 2025
  16. Dec 21, 2024
  17. Dec 05, 2024
    • Chuyue Luo's avatar
      New modular OTA structure (#101) · 0048e5f3
      Chuyue Luo authored
      
      
      * 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>
      0048e5f3
  18. Nov 25, 2024
Loading