RTOS2: Updated API V2.1.1
- Additional functions allowed to be called from Interrupt Service Routines: osKernelGetTickCount, osKernelGetTickFreq
- Changed Kernel Tick type to uint32_t, updated: osKernelGetTickCount, osDelayUntil
diff --git a/ARM.CMSIS.pdsc b/ARM.CMSIS.pdsc
index c72a9a4..1b5c16c 100644
--- a/ARM.CMSIS.pdsc
+++ b/ARM.CMSIS.pdsc
@@ -14,7 +14,8 @@
- Updated Cortex-A core functions
- Updated Startup and System files
CMSIS-RTOS2:
- - RTX5: added support for Cortex-A
+ - API 2.1.1 (see revision history for details)
+ - RTX 5.2.0 (see revision history for details)
</release>
<release version="5.0.2-dev2">
CMSIS-RTOS2:
@@ -559,13 +560,14 @@
<file category="doc" name="CMSIS/Documentation/RTOS/html/index.html"/>
</files>
</api>
- <api Cclass="CMSIS" Cgroup="RTOS2" Capiversion="2.1.0" exclusive="1">
+ <api Cclass="CMSIS" Cgroup="RTOS2" Capiversion="2.1.1" exclusive="1">
<description>CMSIS-RTOS API for Cortex-M, SC000, and SC300</description>
<files>
<file category="doc" name="CMSIS/Documentation/RTOS2/html/index.html"/>
<file category="header" name="CMSIS/RTOS2/Include/cmsis_os2.h"/>
</files>
</api>
+ <!-- CMSIS Driver API -->
<api Cclass="CMSIS Driver" Cgroup="USART" Capiversion="2.3.0" exclusive="0">
<description>USART Driver API for Cortex-M</description>
<files>
@@ -2362,7 +2364,7 @@
</component>
<!-- CMSIS-RTOS Keil RTX5 component -->
- <component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX5" Cversion="5.1.1" Capiversion="1.0.0" condition="RTOS RTX5">
+ <component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX5" Cversion="5.2.0" Capiversion="1.0.0" condition="RTOS RTX5">
<description>CMSIS-RTOS RTX5 implementation for Cortex-M, SC000, and SC300</description>
<RTE_Components_h>
<!-- the following content goes into file 'RTE_Components.h' -->
@@ -2378,7 +2380,7 @@
</component>
<!-- CMSIS-RTOS2 Keil RTX5 component -->
- <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cversion="5.1.1" Capiversion="2.1.0" condition="RTOS2 RTX5 Lib">
+ <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cversion="5.2.0" Capiversion="2.1.1" condition="RTOS2 RTX5 Lib">
<description>CMSIS-RTOS2 RTX5 for Cortex-M, SC000, C300 and ARMv8-M (Library)</description>
<RTE_Components_h>
<!-- the following content goes into file 'RTE_Components.h' -->
@@ -2447,7 +2449,7 @@
<file category="library" condition="CM7_FP_LE_IAR" name="CMSIS/RTOS2/RTX/Library/IAR/RTX_CM4F.a" src="CMSIS/RTOS2/RTX/Source"/>
</files>
</component>
- <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library_NS" Cversion="5.1.1" Capiversion="2.1.0" condition="RTOS2 RTX5 NS">
+ <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library_NS" Cversion="5.2.0" Capiversion="2.1.1" condition="RTOS2 RTX5 NS">
<description>CMSIS-RTOS2 RTX5 for ARMv8-M Non-Secure Domain (Library)</description>
<RTE_Components_h>
<!-- the following content goes into file 'RTE_Components.h' -->
@@ -2497,7 +2499,7 @@
<file category="library" condition="ARMv8MML_FP_LE_GCC" name="CMSIS/RTOS2/RTX/Library/GCC/libRTX_V8MMFN.a" src="CMSIS/RTOS2/RTX/Source"/>
</files>
</component>
- <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source" Cversion="5.1.1" Capiversion="2.1.0" condition="RTOS2 RTX5">
+ <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source" Cversion="5.2.0" Capiversion="2.1.1" condition="RTOS2 RTX5">
<description>CMSIS-RTOS2 RTX5 for Cortex-M, SC000, C300 and ARMv8-M (Source)</description>
<RTE_Components_h>
<!-- the following content goes into file 'RTE_Components.h' -->
@@ -2586,7 +2588,7 @@
<file category="source" name="CMSIS/RTOS2/RTX/Source/IAR/irq_cm4f.s" condition="CM7_FP_IAR"/>
</files>
</component>
- <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source_NS" Cversion="5.1.1" Capiversion="2.1.0" condition="RTOS2 RTX5 NS">
+ <component Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source_NS" Cversion="5.2.0" Capiversion="2.1.1" condition="RTOS2 RTX5 NS">
<description>CMSIS-RTOS2 RTX5 for ARMv8-M Non-Secure Domain (Source)</description>
<RTE_Components_h>
<!-- the following content goes into file 'RTE_Components.h' -->
diff --git a/CMSIS/DoxyGen/RTOS2/rtos.dxy b/CMSIS/DoxyGen/RTOS2/rtos.dxy
index 424fd7a..7ba9270 100644
--- a/CMSIS/DoxyGen/RTOS2/rtos.dxy
+++ b/CMSIS/DoxyGen/RTOS2/rtos.dxy
@@ -38,7 +38,7 @@
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = "Version 2.1.0"
+PROJECT_NUMBER = "Version 2.1.1"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2.txt b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2.txt
index cd0d9ae..9ed883d 100644
--- a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2.txt
+++ b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2.txt
@@ -78,6 +78,16 @@
<th>Description</th>
</tr>
<tr>
+ <td>V2.1.1</td>
+ <td>
+ Additional functions allowed to be called from Interrupt Service Routines:
+ - \ref osKernelGetTickCount, \ref osKernelGetTickFreq
+
+ Changed Kernel Tick type to uint32_t:
+ - updated: \ref osKernelGetTickCount, \ref osDelayUntil
+ </td>
+ </tr>
+ <tr>
<td>V2.1.0</td>
<td>
Support for critical and uncritical sections (nesting safe):
@@ -144,8 +154,10 @@
<th>Description</th>
</tr>
<tr>
- <td>V5.1.1</td>
+ <td>V5.2.0</td>
<td>
+ - Based on CMSIS-RTOS API V2.1.1.
+ - Added support for for Cortex-A.
- Fixed potential corruption of terminated threads list.
- Corrected MessageQueue to use actual message length (before padding).
- Corrected parameters for ThreadEnumerate and MessageQueueInserted events.
@@ -155,7 +167,7 @@
<tr>
<td>V5.1.0</td>
<td>
- - Based on CMSIS-RTOS API V2.1.
+ - Based on CMSIS-RTOS API V2.1.0.
- Added support for Event recording.
- Added support for IAR compiler.
- Updated configuration files: RTX_Config.h for the configuration settings and RTX_config.c for implementing the \ref rtx5_specific.
@@ -803,7 +815,7 @@
\section CMSIS_RTOS_ISR_Calls Calls from Interrupt Service Routines
The following CMSIS-RTOS2 functions can be called from threads and Interrupt Service Routines (ISR):
- - \ref osKernelGetSysTimerCount, \ref osKernelGetSysTimerFreq
+ - \ref osKernelGetTickCount, \ref osKernelGetTickFreq, \ref osKernelGetSysTimerCount, \ref osKernelGetSysTimerFreq
- \ref osThreadFlagsSet
- \ref osEventFlagsSet, \ref osEventFlagsClear, \ref osEventFlagsGet, \ref osEventFlagsWait
- \ref osSemaphoreAcquire, \ref osSemaphoreRelease, \ref osSemaphoreGetCount
@@ -1488,7 +1500,7 @@
The following CMSIS-RTOS2 functions can be called from threads and \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines"
(ISR):
- - \ref osKernelGetSysTimerCount, \ref osKernelGetSysTimerFreq
+ - \ref osKernelGetTickCount, \ref osKernelGetTickFreq, \ref osKernelGetSysTimerCount, \ref osKernelGetSysTimerFreq
- \ref osThreadFlagsSet
- \ref osEventFlagsSet, \ref osEventFlagsClear, \ref osEventFlagsGet, \ref osEventFlagsWait
- \ref osSemaphoreAcquire, \ref osSemaphoreRelease, \ref osSemaphoreGetCount
diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Kernel.txt b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Kernel.txt
index fb65f9b..84e6929 100644
--- a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Kernel.txt
+++ b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Kernel.txt
@@ -378,18 +378,18 @@
*/
/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
/**
-\fn uint64_t osKernelGetTickCount (void)
+\fn uint32_t osKernelGetTickCount (void)
\details
-The function \b osKernelGetTickCount returns the current RTOS kernel tick count or \token{0} in case of a failure.
+The function \b osKernelGetTickCount returns the current RTOS kernel tick count.
-\note This function \b cannot be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
+\note This function may be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
\b Code \b Example
\code
#include "cmsis_os2.h"
void Thread_1 (void *arg) { // Thread function
- uint64_t tick;
+ uint32_t tick;
tick = osKernelGetTickCount(); // retrieve the number of system ticks
for (;;) {
@@ -404,16 +404,16 @@
/**
\fn uint32_t osKernelGetTickFreq (void)
\details
-The function \b osKernelGetTickFreq returns the frequency of the current RTOS kernel tick or \token{0} in case of a failure.
+The function \b osKernelGetTickFreq returns the frequency of the current RTOS kernel tick.
-\note This function \b cannot be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
+\note This function may be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
*/
/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
/**
\fn uint32_t osKernelGetSysTimerCount (void)
\details
-The function \b osKernelGetSysTimerCount returns the current RTOS kernel system timer as a 32-bit value or \token{0} in case of a failure.
+The function \b osKernelGetSysTimerCount returns the current RTOS kernel system timer as a 32-bit value.
\note This function may be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
*/
@@ -422,7 +422,7 @@
/**
\fn uint32_t osKernelGetSysTimerFreq (void)
\details
-The function \b osKernelGetSysTimerFreq returns the frequency of the current RTOS kernel system timer or \token{0} in case of a failure.
+The function \b osKernelGetSysTimerFreq returns the frequency of the current RTOS kernel system timer.
\note This function may be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
*/
diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Migration.txt b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Migration.txt
index 27942ab..654b1ab 100644
--- a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Migration.txt
+++ b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Migration.txt
@@ -52,7 +52,7 @@
\enddiv
\div{new}
-\func{uint64_t #osKernelGetTickCount (void)}
+\func{uint32_t #osKernelGetTickCount (void)}
\none
\copybrief{osKernelGetTickCount}
New function.
@@ -390,7 +390,7 @@
\enddiv
\div{new}
-\func{osStatus_t #osDelayUntil (uint64_t ticks)}
+\func{osStatus_t #osDelayUntil (uint32_t ticks)}
\none
\copybrief{osDelayUntil}
New function.
diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Wait.txt b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Wait.txt
index a65efab..3a9cf7a 100644
--- a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Wait.txt
+++ b/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Wait.txt
@@ -46,7 +46,7 @@
/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
/**
-\fn osStatus_t osDelayUntil (uint64_t ticks)
+\fn osStatus_t osDelayUntil (uint32_t ticks)
\details
The function \b osDelayUntil waits until an absolute time (specified in kernel \a ticks) is reached.
@@ -56,7 +56,7 @@
Possible \ref osStatus_t return values:
- \em osOK: the time delay is executed.
- - \em osParameter: the time is either in the past or cannot be handled (out of bounds).
+ - \em osParameter: the time cannot be handled (out of bounds).
- \em osErrorISR: \ref osDelayUntil cannot be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
\note This function \b cannot be called from \ref CMSIS_RTOS_ISR_Calls "Interrupt Service Routines".
@@ -66,7 +66,7 @@
#include "cmsis_os2.h"
void Thread_1 (void *arg) { // Thread function
- uint64_t tick;
+ uint32_t tick;
tick = osKernelGetTickCount(); // retrieve the number of system ticks
for (;;) {
diff --git a/CMSIS/DoxyGen/RTOS2/src/rtx_evr.txt b/CMSIS/DoxyGen/RTOS2/src/rtx_evr.txt
index 0738fd2..582bed2 100644
--- a/CMSIS/DoxyGen/RTOS2/src/rtx_evr.txt
+++ b/CMSIS/DoxyGen/RTOS2/src/rtx_evr.txt
@@ -267,27 +267,27 @@
*/
/**
-\fn void EvrRtxKernelGetTickCount (uint64_t count)
+\fn void EvrRtxKernelGetTickCount (uint32_t count)
\details
-The event \b KernelGetTickCount is generated when the function \ref osKernelGetTickCount is called and its execution result is known.
+The event \b KernelGetTickCount is generated when the function \ref osKernelGetTickCount is called.
\b Value in the Event Recorder shows:
- - \b count : retrieved kernel current tick count (0 in case of a failure).
+ - \b count : retrieved kernel current tick count.
*/
/**
\fn void EvrRtxKernelGetTickFreq (uint32_t freq)
\details
-The event \b KernelGetTickFreq is generated when the function \ref osKernelGetTickFreq called and its execution result is known.
+The event \b KernelGetTickFreq is generated when the function \ref osKernelGetTickFreq called.
\b Value in the Event Recorder shows:
- - \b freq : retrieved frequency of the kernel tick in Hz (0 in case of a failure).
+ - \b freq : retrieved frequency of the kernel tick in Hz.
*/
/**
\fn void EvrRtxKernelGetSysTimerCount (uint32_t count)
\details
-The event \b KernelGetSysTimerCount is generated when the function \ref osKernelGetSysTimerCount is called and its execution result is known.
+The event \b KernelGetSysTimerCount is generated when the function \ref osKernelGetSysTimerCount is called.
\b Value in the Event Recorder shows:
- \b count : retrieved kernel current system timer count as 32-bit value.
@@ -296,7 +296,7 @@
/**
\fn void EvrRtxKernelGetSysTimerFreq (uint32_t freq)
\details
-The event \b KernelGetSysTimerFreq is generated when the function \ref osKernelGetSysTimerFreq is called and its execution result is known.
+The event \b KernelGetSysTimerFreq is generated when the function \ref osKernelGetSysTimerFreq is called.
\b Value in the Event Recorder shows:
- \b freq : retrieved frequency of the system timer in Hz.
@@ -702,7 +702,7 @@
*/
/**
-\fn void EvrRtxThreadDelayUntil (uint64_t ticks)
+\fn void EvrRtxThreadDelayUntil (uint32_t ticks)
\details
The event \b ThreadDelayUntil is generated when the function \ref osDelayUntil is called.
diff --git a/CMSIS/RTOS2/Include/cmsis_os2.h b/CMSIS/RTOS2/Include/cmsis_os2.h
index a4a462e..9a1c454 100644
--- a/CMSIS/RTOS2/Include/cmsis_os2.h
+++ b/CMSIS/RTOS2/Include/cmsis_os2.h
@@ -17,12 +17,17 @@
*
* ----------------------------------------------------------------------
*
- * $Date: 10. January 2017
- * $Revision: V2.1.0
+ * $Date: 9. June 2017
+ * $Revision: V2.1.1
*
* Project: CMSIS-RTOS2 API
* Title: cmsis_os2.h header file
*
+ * Version 2.1.1
+ * Additional functions allowed to be called from Interrupt Service Routines:
+ * - osKernelGetTickCount, osKernelGetTickFreq
+ * Changed Kernel Tick type to uint32_t:
+ * - updated: osKernelGetTickCount, osDelayUntil
* Version 2.1.0
* Support for critical and uncritical sections (nesting safe):
* - updated: osKernelLock, osKernelUnlock
@@ -335,7 +340,7 @@
/// Get the RTOS kernel tick count.
/// \return RTOS kernel current tick count.
-uint64_t osKernelGetTickCount (void);
+uint32_t osKernelGetTickCount (void);
/// Get the RTOS kernel tick frequency.
/// \return frequency of the kernel tick in hertz, i.e. kernel ticks per second.
@@ -472,7 +477,7 @@
/// Wait until specified time.
/// \param[in] ticks absolute time in ticks
/// \return status code that indicates the execution status of the function.
-osStatus_t osDelayUntil (uint64_t ticks);
+osStatus_t osDelayUntil (uint32_t ticks);
// ==== Timer Management Functions ====
diff --git a/CMSIS/RTOS2/Template/cmsis_os.h b/CMSIS/RTOS2/Template/cmsis_os.h
index 5920d14..0cf5a91 100644
--- a/CMSIS/RTOS2/Template/cmsis_os.h
+++ b/CMSIS/RTOS2/Template/cmsis_os.h
@@ -17,8 +17,8 @@
*
* ----------------------------------------------------------------------
*
- * $Date: 10. January 2017
- * $Revision: V2.1.0
+ * $Date: 9. June 2017
+ * $Revision: V2.1.1
*
* Project: CMSIS-RTOS API
* Title: cmsis_os.h template header file
@@ -118,6 +118,11 @@
* - added: osKernelRestoreLock
* Updated Thread and Event Flags:
* - changed flags parameter and return type from int32_t to uint32_t
+ * Version 2.1.1
+ * Additional functions allowed to be called from Interrupt Service Routines:
+ * - osKernelGetTickCount, osKernelGetTickFreq
+ * Changed Kernel Tick type to uint32_t:
+ * - updated: osKernelGetTickCount, osDelayUntil
*---------------------------------------------------------------------------*/
#ifndef CMSIS_OS_H_