The Embedded Experts

Release notes for embOS-Ultra and embOS-Ultra-MPU V5.20.0

Version 5.20.0 [07. Mar 2025]

New Features

  1. Multi Object Wait.
    New API functions OS_MULTIOBJ_Wait, OS_MULTIOBJ_WaitBlocked() and OS_MULTIOBJ_WaitTimed().
  2. New API functions OS_TASK_Delay_ns() and OS_TASK_DelayUntil_ns().
  3. New API function OS_TIME_Get_ns()
  4. New API functions OS_TIMER_Create_ns(), OS_TIMER_CreateEx_ns(), OS_TIMER_GetPeriod_ns(), OS_TIMER_GetRemainingPeriod_ns(), OS_TIMER_SetPeriod_ns().
  5. New API function OS_QUEUE_HasFreeSpace().

Improvements

  1. OS_MPU_AddRegion() now allows to add MPU memory regions for a running unprivileged task.
  2. In rare circumstances a software timer could expire while it was being stopped by a call to OS_TIMER_Stop(), which prevented the execution of its callback. Subsequent calls to OS_TIMER_Start() would not restart the software timer (since that API function intentionally has no effect on timers that have expired).
    The improved implementation now allows to restart the software timer using OS_TIMER_Start() as long as its callback was not executed.

Version 5.18.1 [14. Aug 2024]

Program corrections

  1. OS_EVENT_SetMask() does not make tasks ready for execution which are behind a task in the wait list for which the event object mask does not match.
    The problem existed since embOS-Ultra version 5.18.0.
  2. In debug builds of embOS-Ultra, the API functions OS_EVENT_CreateEx(), OS_QUEUE_Create() and OS_WD_Add() could be interrupted during critical operations, possibly resulting in corruption of related embOS internal structures. Non-debug builds of embOS are not affected.
    The problem existed since embOS-Ultra version 5.18.0.
  3. In debug builds of embOS-Ultra, the API functions OS_TIMER_Restart() and OS_TIMER_Start() could be interrupted during critical operations, possibly resulting in corruption of related embOS internal structures. Non-debug builds of embOS are not affected.
    The problem existed since embOS-Ultra version 5.16.0.

Version 5.18.0 [10. Jan 2023]

New Features

  1. New API functions OS_DEBUG_GetError() and OS_TASK_GetStatus() added.
  2. New API function OS_MPU_CallDeviceDriverEx() added.

Improvements

  1. It is no longer mandatory to call OS_MPU_SetAllowedObjects() from an unprivileged task.
  2. MPU handling for Armv8-M improved. The MPU variables can now be stored in one specific memory section.
  3. OS_MPU_EnableEx() was renamed to OS_MPU_Init(). OS_MPU_Enable() is obsolete but mapped to OS_MPU_Init(&OS_MPU_DEFAULT_APILIST).
  4. OS_MPU_CallDeviceDriver() can now also be used from main(), embOS interrupt and embOS software timer.
  5. OS_EVENT_GetMask() may now also be called from an embOS interrupt and software timer.
  6. embOS applications can now be built with the latest C++ standard C++20 (ISO/IEC 14882:2020).

Version 5.16.0 [14. Apr 2022]

New Features

  1. New API function OS_MAILBOX_IsInUse() added.

Improvements

  1. MPU handling for Cortex-M33 improved.
  2. OS_TASKEVENT_GetTimed() and OS_TASKEVENT_GetSingleTimed() check now if the task event was signaled within the actual timeout and behave with it like all other API functions with a timeout argument. The previous implementation checked only after the calling task was activated again whether the task event was signaled. This could cause wrong results when the calling task were not executed at once due to a higher priority task.

Program corrections

  1. embOS API trace (used e.g. for SystemView) was disabled in OS_LIBMODE_SP by mistake.
    The problem existed since embOS-Ultra version 5.14.0 and is fixed with version 5.16.0.

Version 5.14.0 [14. Oct 2021]

New Features

  1. Initial version.