1. 20 Jan, 2023 1 commit
  2. 19 Jan, 2023 2 commits
  3. 16 Jan, 2023 4 commits
  4. 12 Jan, 2023 1 commit
  5. 11 Jan, 2023 1 commit
  6. 04 Jan, 2023 2 commits
  7. 20 Dec, 2022 3 commits
  8. 08 Dec, 2022 2 commits
  9. 29 Nov, 2022 1 commit
    • Diego Russo's avatar
      mlia: Update MLIA to 0.5.0 · 93c8c958
      Diego Russo authored
      MLIA 0.5.0 has the following updates:
      * change the way backends are installed providing a different
        CLI entry point: mlia-backend
      * update the generic inference runner to be compatible with the new
        version of Corstone-310 available on AVH
      Signed-off-by: Diego Russo's avatarDiego Russo <diego.russo@arm.com>
  10. 25 Nov, 2022 2 commits
    • Lingkai Dong's avatar
      ml: Update support for ml-embedded-evaluation-kit · 1082a2c1
      Lingkai Dong authored and Vincent Coubard's avatar Vincent Coubard committed
      The Open IoT SDK has updated ml-embedded-evaluation-kit to a newer
      version that
      * fetches the standalone CMSIS-DSP submodule rather than as part of
      * requires each example to include `BufAttributes.hpp` which defines
      attributes of the tensor activation buffer
      * does not build the timing adapter library for Corstone-310 which has
      no timing adapters.
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
    • Lingkai Dong's avatar
      rtos: Fix "Failed to send blink_event message to ui_msg_queue" · 1c5e69ec
      Lingkai Dong authored
      In each of the keyword and speech examples, a blink task sets a timer to
      post blink events to a queue at a regular time interval, and the blink
      task itself processes the queue in a loop. A few other tasks (i.e. ML,
      DSP, cloud) run at the same or higher priorities, blocking the blink
      task. The queue, not getting processed promptly, gets exhausted quickly
      so the timer is unable to post further events into the queue.
      The user observable effects of the issue are:
      * LED not blinking
      * a huge number of "Failed to send blink_event message to ui_msg_queue"
      messages printed to the serial terminal
      To fix the issue, make the blink task the highest in priority, so it
      doesn't get blocked.
      Because the blink task has the highest priority, there is no need for
      * the blink timer (with overhead of ISR) and blink events (with overhead
      of queue) - use `osDelay()`
      * time slicing (with the overhead of contantly switching between equal-
      priority threads)
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
  11. 23 Nov, 2022 2 commits
  12. 21 Nov, 2022 3 commits
    • Lingkai Dong's avatar
      speech: Fix test failure due to unpredictable order of DSP and ML · 371b291a
      Lingkai Dong authored
      The test script `test_ml.py` expects "ML interface initialised" before
      "Init speex", but the actual order is not guaranteed for the following
      The DSP thread has a lower priority than the ML thread, but both are
      blocked waiting for start signals from message queues. In the case of
      running only ML without cloud, the demo posts the DSP start signal
      before the ML start signal, which is the opposite order to the thread
      priorities. This sometimes causes RTX and ThreadX (but not FreeRTOS) to
      unblock the DSP thread first, causing the two texts to be printed in a
      different order from what `test_ml.py` expects.
      Fix this by posting the start signals of ML and DSP in the same order
      as their thread priorities.
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
    • Lingkai Dong's avatar
      blinky: Fix tfm_ns_interface_init failure with ThreadX · 1d04f71d
      Lingkai Dong authored
      The function `tfm_ns_interface_init()` creates a mutex to ensure only
      one thread calls TF-M APIs at a time, but ThreadX mutexes are only
      available when the kernel has been initialized. Fix the issue by moving
      `tfm_ns_interface_init()` after kernel initialization.
      The CI missed this issue, because the `test-application` pipeline which
      runs examples (including blinky) without cloud credentials only covered
      AWS as endpoint, and ThreadX is not enabled with AWS. Add the missing
      matrix in order to cover blinky with ThreadX.
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
    • Lingkai Dong's avatar
  13. 16 Nov, 2022 3 commits
    • Lingkai Dong's avatar
      cmake: Fix linking of wrong RTOS · 60c8aae4
      Lingkai Dong authored
      Fix the issue that cmsis-rtx accidentally gets linked when threadx-cdi-
      port is the intended RTOS implementation.
      Linking of RTOS implementation should not be based on the existence of
      cmake targets for `freertos-kernel`, `cmsis-rtx` and `threadx-cdi-port`.
      All of them depend on listing `cmsis-5` in `IOTSDK_FETCH_LIST` to get
      `cmsis-core` and `cmsis-rtos-api`, but the side effect is the `cmsis-5`
      repo also adds `cmsis-rtx`, causing a mixture of symbols from
      `cmsis-rtx` and `threadx-cdi-port` to get linked. One visible error is
      that when building `threadx-cdi-port`, `osKernelInitialize` from
      `cmsis-rtx` gets picked up instead of the one from `threadx-cdi-port`,
      causing ThreadX kernel initialization to be skipped. This results in,
      among other problems, NULL pointer dereference of ThreadX internal
      variables when trying to use the kernel timer.
      Fix this by directly checking `${RTOS}` which is passed by the build
      script based on the user's choice of RTOS.
      The fix uncovers another issue that no allocation wrapper
      (`pvPortMalloc`) has been defined for ThreadX. To fix this, rename the
      existing `malloc`-based wrapper from `cmsis-rtx-freertos-alloc-wrapper`
      to `heap-alloc-wrapper` and link it when using either ThreadX or RTX.
      The FreeRTOS port from AWS code already has `pvPortMalloc` and thus does
      not need our own wrapper.
      Similarly, `lwip-cmsis-sys` from the Open IoT SDK accidentally links
      `cmsis-rtx` for the same reason, so we also update the SDK to a version
      that has this issue fixed.
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
    • Lingkai Dong's avatar
      rtos: Limit testing of ThreadX to Azure and FreeRTOS to AWS · e70b6f21
      Lingkai Dong authored
      While the build script does not prevent the user from using any
      combinations of RTOS and cloud endpoint, it is uncommon to mix RTOSes
      and cloud clients from different providers, for example Microsoft's
      ThreadX kernel with Amazon's AWS client. Therefore we only need to
      ensure the following combinations have been tested
      * FreeRTOS with AWS
      * ThreadX with Azure
      * RTX, as the reference implementation of CMSIS-RTOS, with both cloud
      Switch the default RTOS, when the user invokes the build script without
      specifying the RTOS to use, to RTX which has been tested with both cloud
      clients. Update the CI script and documentation accordingly.
      Also fix the inaccurate notion that the keyword and speech examples run
      on CMSIS-RTOS2, FreeRTOS and ThreadX, because CMSIS-RTOS2 is the common
      API implemented by RTX, FreeRTOS and ThreadX which are the available
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
    • Lingkai Dong's avatar
      docs: Remove incorrect description of RTOS in blinky · f8cef162
      Lingkai Dong authored
      The blinky examples uses the generic CMSIS-RTOS API which is implemented
      by all of RTX, FreeRTOS with wrapper and ThreadX with wrapper.
      Signed-off-by: Lingkai Dong's avatarLingkai Dong <lingkai.dong@arm.com>
  14. 04 Nov, 2022 3 commits
  15. 02 Nov, 2022 1 commit
    • Martin Kojtal's avatar
      gitlab-ci: Enable submodule fetching · 1c5a888d
      Martin Kojtal authored
      developer-tools project is used by many pipelines (scripts,
      By including baseline sdk Gitlab template, we enable submodule
      If there is a pipeline that wish not to have submodule fetching
      enabled, just overwrite the variable for specific pipeline and
      set it to None.
      Signed-off-by: Martin Kojtal's avatarMartin Kojtal <martin.kojtal@arm.com>
  16. 27 Oct, 2022 2 commits
  17. 26 Oct, 2022 5 commits
  18. 25 Oct, 2022 1 commit
  19. 24 Oct, 2022 1 commit