The RTOS Abstraction APIs allow middleware to be written to be RTOS aware, but not need to care about what the actual RTOS is.
The this release of the RTOS Abstraction API includes support for the following:
- APIs for interacting with common RTOS Features including:
- Threads
- Mutexes
- Semaphores
- Timers
- Queues
- Events
- Implementations are provided for
- FreeRTOS
- RTX (CMSIS RTOS)
- ThreadX
FreeRTOS:
- Added compatibility with HAL 3.X API changes
- In vApplicationSleep, enter basic CPU sleep (WFI) if it is not possible to enter tickless (Deep)Sleep.
FreeRTOS: Fix start and stop of timer from within an ISR
Extended full support on CAT5.
Pre-production release for CAT5 only. Only one application thread is supported. The Scheduler API functions are not supported.
- FreeRTOS: vApplicationSleep issue fixed where sleep could not be entered in non-deeplseep idle mode.
- FreeRTOS: On devices that support DeepSleep, allow the application to specify a separate latency value for DeepSleep and normal Sleep, by defining
CY_CFG_PWR_SLEEP_LATENCY
.
- FreeRTOS: On devices that support DeepSleep-RAM, allow the application to specify a separate latency value for DeepSleep-RAM (vs. DeepSleep), by defining
CY_CFG_PWR_DEEPSLEEP_RAM_LATENCY
. - FreeRTOS: Simplify flow for storing and restoring context during entry/exit from DeepSleep-RAM.
FreeRTOS: Improve context switching speed when an ISR unblocks a thread.
Expanded FreeRTOS support for DS RAM
Explicitly include cmsis_compiler.h where required.
- FreeRTOS: When DeepSleep is locked, the default idle loop will attempt to enter Sleep instead.
- FreeRTOS: Add pre-production support for warm-boot after wake from DeepSleep-RAM power state (currently only present on CAT1B devices).
- Removed the explicit in_isr argument from all functions. CPU status registers are used to automatically determine whether a function is executing in an interrupt context.
- Renamed all functions in order to make grouping more clear. The original function names are deprecated.
- Added additional parameter validation for ThreadX
- Added new thread functions: cy_rtos_wait_thread_notification and cy_rtos_set_thread_notification
- Minor documentation updates for clarity
- Fixed a couple bugs in the FreeRTOS port
- Update to work with a wider range of MCUs
- Fixed a race condition in the worker thread
- Fixed possible issue with thread priorities
- Minor documentation updates
- Minor update for documentation & branding
- Fixed possible race condition in cy_rtos_join_thread for FreeRTOS
- Minor documentation updates
- Added utility library for for creating background worker threads: cy_worker_thread.h
- Added support for getting a semaphore's count: cy_rtos_get_count_semaphore()
- Added support for non-recursive mutexes: cy_rtos_init_mutex2()
- Added default implementations for FreeRTOS vApplicationGetIdleTaskMemory, vApplicationGetTimerTaskMemory, and vApplicationSleep
- Added support for ThreadX NOTE: The vApplicationSleep implementation for FreeRTOS depends on the psoc6hal 1.2.0 or later.
- Fixed an issue with the FreeRTOS implementation where it would always allocate memory for the thread stack, even if a pre-allocated buffer was provided.
- Removed usage of assert() and replaced with CY_ASSERT()
- Added a new function to get the ID of the currently running thread.
- A few minor updates to avoid possible warnings depending on compiler.
- Minor documentation updates
- Initial release supporting FreeRTOS & RTX
This version of the RTOS Abstraction API was validated for compatibility with the following Software and Tools:
Software and Tools | Version |
---|---|
ModusToolbox™ Software Environment | 2.4.0 |
GCC Compiler | 10.3.1 |
IAR Compiler | 9.40.2 |
ARM Compiler | 6.16 |
Minimum required ModusToolbox™ Software Environment: v2.0
Use the following links for more information, as needed:
- API Reference Guide
- Cypress Semiconductor, an Infineon Technologies Company
- Infineon GitHub
- ModusToolbox™
© Cypress Semiconductor Corporation (an Infineon company) or an affiliate of Cypress Semiconductor Corporation, 2019-2023.