CMSIS-RTOS2
Version 2.1.2
Real-Time Operating System: API and RTX Reference Implementation
|
RTX5 functions. More...
Functions | |
uint32_t | osRtxErrorNotify (uint32_t code, void *object_id) |
OS Error Callback function. More... | |
void | osRtxIdleThread (void *argument) |
OS Idle Thread. More... | |
uint32_t osRtxErrorNotify | ( | uint32_t | code, |
void * | object_id | ||
) |
Some system error conditions can be detected during runtime. If the RTX kernel detects a runtime error, it calls the runtime error function osRtxErrorNotify for an object specified by parameter object_id.
The parameter code passes the actual error code to this function:
Error Code | Description |
---|---|
osRtxErrorStackUnderflow | Stack overflow detected for thread (thread_id=object_id) |
osRtxErrorISRQueueOverflow | ISR Queue overflow detected when inserting object (object_id) |
osRtxErrorTimerQueueOverflow | User Timer Callback Queue overflow detected for timer (timer_id=object_id) |
osRtxErrorClibSpace | Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM |
osRtxErrorClibMutex | Standard C/C++ library mutex initialization failed |
The function osRtxErrorNotify must contain an infinite loop to prevent further program execution. You can use an emulator to step over the infinite loop and trace into the code introducing a runtime error. For the overflow errors this means you need to increase the size of the object causing an overflow.
Code Example
osRtxErrorClibMutexvoid osRtxIdleThread | ( | void * | argument | ) |
The function osRtxIdleThread is executed by the RTX kernel, when no other threads are ready to run. By default, this thread is an empty end-less loop that does nothing. It only waits until another task becomes ready to run. You may change the code of the osRtxIdleThread function to put the CPU into a power-saving or idle mode, see Tick-less Low-Power Operation.
The default stack size for this thread is defined in the file RTX_Config.h. Refer to Thread Configuration.
Code Example