diff --git a/3rd_party/CMSIS/Include/cmsis_armcc.h b/3rd_party/CMSIS/Include/cmsis_armcc.h
index 3ddc308f..7b2a2847 100644
--- a/3rd_party/CMSIS/Include/cmsis_armcc.h
+++ b/3rd_party/CMSIS/Include/cmsis_armcc.h
@@ -1,8 +1,8 @@
/**************************************************************************//**
* @file cmsis_armcc.h
* @brief CMSIS compiler ARMCC (ARM compiler V5) header file
- * @version V5.0.1
- * @date 03. February 2017
+ * @version V5.0.2
+ * @date 13. February 2017
******************************************************************************/
/*
* Copyright (c) 2009-2017 ARM Limited. All rights reserved.
@@ -50,34 +50,46 @@
/* CMSIS compiler specific defines */
#ifndef __ASM
- #define __ASM __asm
+ #define __ASM __asm
#endif
#ifndef __INLINE
- #define __INLINE __inline
+ #define __INLINE __inline
#endif
#ifndef __STATIC_INLINE
- #define __STATIC_INLINE static __inline
+ #define __STATIC_INLINE static __inline
#endif
#ifndef __NO_RETURN
- #define __NO_RETURN __declspec(noreturn)
+ #define __NO_RETURN __declspec(noreturn)
#endif
#ifndef __USED
- #define __USED __attribute__((used))
+ #define __USED __attribute__((used))
#endif
#ifndef __WEAK
- #define __WEAK __attribute__((weak))
-#endif
-#ifndef __UNALIGNED_UINT32
- #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x)))
-#endif
-#ifndef __ALIGNED
- #define __ALIGNED(x) __attribute__((aligned(x)))
+ #define __WEAK __attribute__((weak))
#endif
#ifndef __PACKED
- #define __PACKED __attribute__((packed))
+ #define __PACKED __attribute__((packed))
#endif
#ifndef __PACKED_STRUCT
- #define __PACKED_STRUCT __packed struct
+ #define __PACKED_STRUCT __packed struct
+#endif
+#ifndef __UNALIGNED_UINT32 /* deprecated */
+ #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x)))
+#endif
+#ifndef __UNALIGNED_UINT16_WRITE
+ #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val))
+#endif
+#ifndef __UNALIGNED_UINT16_READ
+ #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr)))
+#endif
+#ifndef __UNALIGNED_UINT32_WRITE
+ #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val))
+#endif
+#ifndef __UNALIGNED_UINT32_READ
+ #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr)))
+#endif
+#ifndef __ALIGNED
+ #define __ALIGNED(x) __attribute__((aligned(x)))
#endif
diff --git a/3rd_party/CMSIS/Include/cmsis_armclang.h b/3rd_party/CMSIS/Include/cmsis_armclang.h
index be7d1f39..7c22d840 100644
--- a/3rd_party/CMSIS/Include/cmsis_armclang.h
+++ b/3rd_party/CMSIS/Include/cmsis_armclang.h
@@ -1,8 +1,8 @@
/**************************************************************************//**
* @file cmsis_armclang.h
* @brief CMSIS compiler ARMCLANG (ARM compiler V6) header file
- * @version V5.0.1
- * @date 02. February 2017
+ * @version V5.0.3
+ * @date 27. March 2017
******************************************************************************/
/*
* Copyright (c) 2009-2017 ARM Limited. All rights reserved.
@@ -22,6 +22,8 @@
* limitations under the License.
*/
+//lint -esym(9058, IRQn) disable MISRA 2012 Rule 2.4 for IRQn
+
#ifndef __CMSIS_ARMCLANG_H
#define __CMSIS_ARMCLANG_H
@@ -31,38 +33,70 @@
/* CMSIS compiler specific defines */
#ifndef __ASM
- #define __ASM __asm
+ #define __ASM __asm
#endif
#ifndef __INLINE
- #define __INLINE __inline
+ #define __INLINE __inline
#endif
#ifndef __STATIC_INLINE
- #define __STATIC_INLINE static __inline
+ #define __STATIC_INLINE static __inline
#endif
#ifndef __NO_RETURN
- #define __NO_RETURN __attribute__((noreturn))
+ #define __NO_RETURN __attribute__((noreturn))
#endif
#ifndef __USED
- #define __USED __attribute__((used))
+ #define __USED __attribute__((used))
#endif
#ifndef __WEAK
- #define __WEAK __attribute__((weak))
-#endif
-#ifndef __UNALIGNED_UINT32
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wpacked"
- struct __attribute__((packed)) T_UINT32 { uint32_t v; };
- #pragma clang diagnostic pop
- #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
-#endif
-#ifndef __ALIGNED
- #define __ALIGNED(x) __attribute__((aligned(x)))
+ #define __WEAK __attribute__((weak))
#endif
#ifndef __PACKED
- #define __PACKED __attribute__((packed, aligned(1)))
+ #define __PACKED __attribute__((packed, aligned(1)))
#endif
#ifndef __PACKED_STRUCT
- #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
+ #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
+#endif
+#ifndef __UNALIGNED_UINT32 /* deprecated */
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wpacked"
+//lint -esym(9058, T_UINT32) disable MISRA 2012 Rule 2.4 for T_UINT32
+ struct __attribute__((packed)) T_UINT32 { uint32_t v; };
+ #pragma clang diagnostic pop
+ #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
+#endif
+#ifndef __UNALIGNED_UINT16_WRITE
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wpacked"
+//lint -esym(9058, T_UINT16_WRITE) disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE
+ __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
+ #pragma clang diagnostic pop
+ #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
+#endif
+#ifndef __UNALIGNED_UINT16_READ
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wpacked"
+//lint -esym(9058, T_UINT16_READ) disable MISRA 2012 Rule 2.4 for T_UINT16_READ
+ __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
+ #pragma clang diagnostic pop
+ #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)
+#endif
+#ifndef __UNALIGNED_UINT32_WRITE
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wpacked"
+//lint -esym(9058, T_UINT32_WRITE) disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE
+ __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
+ #pragma clang diagnostic pop
+ #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
+#endif
+#ifndef __UNALIGNED_UINT32_READ
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wpacked"
+ __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
+ #pragma clang diagnostic pop
+ #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)
+#endif
+#ifndef __ALIGNED
+ #define __ALIGNED(x) __attribute__((aligned(x)))
#endif
@@ -292,6 +326,33 @@ __attribute__((always_inline)) __STATIC_INLINE void __TZ_set_MSP_NS(uint32_t top
#endif
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+/**
+ \brief Get Stack Pointer (non-secure)
+ \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
+ \return SP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_SP_NS(void)
+{
+ register uint32_t result;
+
+ __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
+ return(result);
+}
+
+
+/**
+ \brief Set Stack Pointer (non-secure)
+ \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
+ \param [in] topOfStack Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_SP_NS(uint32_t topOfStack)
+{
+ __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
+}
+#endif
+
+
/**
\brief Get Priority Mask
\details Returns the current state of the priority mask bit from the Priority Mask Register.
diff --git a/3rd_party/CMSIS/Include/cmsis_compiler.h b/3rd_party/CMSIS/Include/cmsis_compiler.h
index 8b989f85..2ef183fb 100644
--- a/3rd_party/CMSIS/Include/cmsis_compiler.h
+++ b/3rd_party/CMSIS/Include/cmsis_compiler.h
@@ -1,8 +1,8 @@
/**************************************************************************//**
* @file cmsis_compiler.h
* @brief CMSIS compiler generic header file
- * @version V5.0.1
- * @date 30. January 2017
+ * @version V5.0.2
+ * @date 13. February 2017
******************************************************************************/
/*
* Copyright (c) 2009-2017 ARM Limited. All rights reserved.
@@ -54,40 +54,56 @@
#elif defined ( __ICCARM__ )
#ifndef __ASM
- #define __ASM __asm
+ #define __ASM __asm
#endif
#ifndef __INLINE
- #define __INLINE inline
+ #define __INLINE inline
#endif
#ifndef __STATIC_INLINE
- #define __STATIC_INLINE static inline
+ #define __STATIC_INLINE static inline
#endif
#include The following tools have been used: This document was first released with version 3.32j of
- the software.
-Copyright 2001-2014 SEGGER Microcontroller GmbH & Co. KG. All rights reserved.Release notes for embOS Version 4.00 for Cortex-M and IAR compiler V6.x
-
-
-
-
-
-
- Tool chain used for build
-
-Compiler: IAR ICCARM 6.50.5.4819
-Assembler: IAR IASMARM 6.50.5.4819
-Librarian: IAR IARCHIVE 9.13.10.84
-Workbench: IAR IARIDE 6.50.5.2674
-
-
-
-
- New features
- Version 4.00
-
-
- Version 3.90.1
-
-
-
- embOS for Cortex M and IAR compiler now comes with a start project for Atmel SAMG53 CPU.
- The start project is prepared to run on the Atmel SAMG53 Xplained Pro starter board.
- The start project can be downloaded into the internal flash of the CPU using the on-board CMSIS-DAP and CSpy.
- embOS for Cortex M and IAR compiler now comes with a start project for Atmel SAMG53 CPU.
- The start project is prepared to run on the Atmel SAMG53 Xplained Pro starter board.
- The start project can be downloaded into the internal flash of the CPU using the on-board CMSIS-DAP and CSpy.Version 3.90
-
-
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
-
- Start projects and assembly files can now be used with the new EWARM version 7.10. without errors or warnings.
- All projects can still be used with the older IAR embedded workbench V6.Version 3.88g2
-
-
-
- embOS for Cortex M and IAR compiler now comes with a start project for the ST LIS331 CPU.
- The start project is prepared to be downloaded into the internal flash of the CPU using J-link or ST-LINK.
- A support package for the IAR workbench is required. This can be received from ST on request.
- embOS for Cortex M and IAR compiler now comes with a start project for the TI TM4C129 CPU.
- The start project was built for the TI TM4C129 development kit and is prepared to be downloaded into the internal flash of the CPU.
- Version 3.88g1
-
-
- Version 3.88g
-
-
- Version 3.88c
-
-
- Version 3.88b
-
-
- Version 3.86n
-
-
-
- Activation of thread safe system library support with IAR compiler 6.4 or newer requires additional linker options which are now described in the compiler and CPU specific manual.
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
- Version 3.86l
-
-
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
- Version 3.86g
-
-
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
- Version 3.86f
-
-
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
-
- With embOS version 3.86f, the task events for 32bit CPUs are 32bit wide now, allowing more individual events sent to tasks.
- Version 3.86e
-
-
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
- Version 3.86d
-
-
-
- All new features and modifications of the new embOS version are described in the generic release notes and manual.
- Version 3.84c
-
-
- Version 3.84.1
-
-
-
- The new embOS IAR plugin version 6.0.6.7 delivered with embOS V3.84.1 now supports task sensitive call stack for Cortex M4 CPUs with floating point unit.
- Previous versions of the plugin can be used, but did not show the task sensitive call stack.
- Version 3.84
-
-
-
-
- New generic features of the version 3.84 are described in the embOS generic release notes file Release_Generic.html
- Version 3.82u
-
-
-
- The embOS version 3.82u for IAR compiler V6 and Cortex-M now comes with start projects for the IAR STM32L152VB-SK eval board.
- The sample project can be downloaded into the CPUs Flash using J-Link.
- The sample project was built with the latest IAR workbench V6.20 and uses CMSIS.
-
- New features of the version 3.82u are described in the embOS generic release notes file Release_Generic.html
- Version 3.82s
-
-
-
- The embOS version 3.82s for IAR compiler V6 and Cortex-M now comes with start projects for STM32L cpu and STM32F100 cpu.
- The sample projects run on ST STM32 MB819 and ST STM32 Discovery evalboard and can be downloaded into the CPUs Flash using J-Link.
-
- The embOS version 3.82s for IAR compiler V6 and Cortex-M now comes with start projects for G2XX and G8XX cpu module for EnergyMicro EFM32-G2XX-DK evalboard.
-
- The embOS version 3.82s for IAR compiler V6 and Cortex-M now comes with start project for Fujitsu MB9BF506 SK FM3 100PMC evalboard.
- The sample projects can be downloaded into the CPUs Flash using J-Link.
- Version 3.82m
-
-
-
- The embOS version 3.82m for IAR compiler V6 and Cortex-M now comes with start projects for the Freescale Kinetis K40 and K60 CPUs.
- The sample projects run on the Kinetis TWR starter kit boards and can be downloaded into the CPUs Flash using J-Link.
-
- The embOS version 3.82m for IAR and Cortex-M now comes with a start project for the EnergyMicro EFM32 CPU.
- The sample project runs on the EFM32-G8XX-STK starter board and can be downloaded into the CPUs Flash using the onboard J-Link.
-
- Previous versions of embOS for Cortex-M could not be compiled when a Cortex-M4 CPUs was selected.
- The embOS version 3.82m for IAR and Cortex-M now can be used with Cortex-M4 CPUs.
-
- Previous versions of embOS for Cortex-M could not use J-Link with embOSview for Cortex-M0 CPUs.
- With embOS version 3.82m for IAR and Cortex-M J-Link can be used with embOSView on Cortex-M0 targets.
- Version 3.82l
-
-
-
- embOS for Cortex-M and IAR compiler now supports the thread local storage implementation of the new IAR dlib V6.
- Version 3.82h1
-
-
- Version 3.82h
-
-
-
- All embOS start projects and the embOS libraries were modified to allow communication with embOSView via J-Link.
- The new embOSView version 3.82g allows selection of a communication to a Cortex M3 using J-Link with JTAG or SWD interface.
- The communication to embOSView starts after the call of OS_Start() and can be used in parallel with a debugging session which uses J-Link as debugging probe.
-
- All start projects of embOS for Cortex-M3 are now fully CMSIS compliant.
- The projects come with new startup code and vector tables which are fully CMSIS compliant.
- When CMSIS shall be used for the application, the chip specific CMSIS startup code and vector tables can be used.
- CMSIS libraries of the chip vendor are not required to run embOS, embOS can be used as is.
-
- embOS for Cortex M3 now comes with a generic CMSIS compatible start project which runs on any Cortex M3 CPU.
- To run the project on a specific chip, the startup code and the vector table may be replaced by the chip vendor specific versions of these files.
- No modification on any embOS function or file is required. The vendor specific CMSIS files will guarantee that the embOS timer runs at expected rate of 1ms.
- Version 3.82e2
-
-
-
- embOS now comes with a start project for the AT91SAM3S which is prepared to run on the SAM3S-EK eval board.
- The start project contains debug configurations for flash or RAM.
- Both UART connectors of the board may be used for embOSView.
- The project comes with new startup code and vector tables which are fully CMSIS compliant.
-
- The embOS scheduler function was renamed to be fully CMSIS compliant.
- Target CPU specific CMSIS libraries may be used together with embOS now.
- There is no need to modify the vector tables which come with the CMSIS libraries.
- Version 3.82e1
-
-
-
- The debugger configuration settings of previous versions caused some trouble when the target should be accessed with J-Link.Version 3.82e
-
-
- Version 3.82c
-
-
- Version 3.80g3
-
-
-
- The embOS start project for the AT91SAM3U CPU was modified to run with the Flasherloader which comes with the latest IAR workbench (EW-ARM 5.40.
- The flashloader can be used with any J-link version, but the project requires version 5.40 or later of the IAR workbench.
- EW-ARM 5.40 is the first version that supports the AT91SAM3U.
- Version 3.80g1
-
-
-
- embOS version 3.80g1 comes with a ready to go start project for the ST32MF107 CPU.
- The start project is prepared to run on the ST MB 784 eval board and supports flash programming using C-Spy and J-Link.
-
- embOS version 3.80g1 comes with a ready to go start project for the IAR LPC1766-SK eval board.
- The start project is prepared to run on the eval board and supports flash programming using C-Spy and J-Link.
- The project is built for the workbench / compiler version 5.30 which delivers the flash loader for the LPC 1766.
- Version 3.80g
-
-
-
- Update to new embOS version 3.80 with optimized internal data structures to speed up scheduling and task switches.
- The new embOS version requires the C-Spy plugin V3.80 or later. The plugin comes with embOS.
-
- embOS version 3.80g for Cortex M3 now comes with the new embOS IAR plugin V3.80.1 for C-Spy which supports task sensitivity for Cortex M3.
- Task sensitivity is supported since embOS version 3.62c.
- Previous versions of embOS for Cortex M3 can be used with the new plugin, but do not support the task sensitivity.
-
- embOS version 3.80g comes with a ready to go start project for the new ATMEL AT91SAM3U series.
- Debugging and flash programming using C-Spy and J-Link is supported.
- The latest version of J-Link software is required to allow programming of the AT91SAM3U.
-
- embOS version 3.80g comes with a ready to go start project for the new NXP LPC176x series.
- The start project is prepared to run on the KEIL eval board and supports flash programming using C-Spy and J-Link.
- The project is built for the workbench / compiler version 5.30 which delivers the flash loader for the LPC 1766.
- Version 3.62
-
-
-
- embOS comes with new features which are explained in the generic release notes and manual.
-
- embOS version 3.62 was built with the IAR compiler V5.20 and the start projects were updated to be used with the new workbench.
- Version 3.60d
-
-
-
- embOS comes with several new features which are explained in the generic release notes and manual.
-
- The OS_POWER module may be used to control different power saving modes when entering idle state.
- Individual flags for different peripherals may be set whenever a peripheral needs power or clock, and may be reset, when power is not needed.
- The state of the power flags may be examined during OS_Idle by a call of OS_POWER_GetMask().
- This allows to switch off all of those peripherals which are not needed during idle times.
-
- BSP is now for IAR STM-SK only instead of IAR STM-SK and ST MB525.
-
- Start project and board support package for STM32F103 CPU and ST MB525 eval board added.
-
- Start project and board support package for STM32F103 CPU and ST MB672 eval board added.
- Version 3.60a
-
-
-
- embOS comes with several new features which are explained in the generic release notes and manual.
- Version 3.60
-
-
-
- Source and project updates to be compatible with IAR Embedded Workbench for ARM V5.11.
- Version 3.52c
-
-
-
- OS_SetTaskName() allows modification of task names on the fly.
- This may be useful if the functionality of a task changes during runtime and the new state should be shown using embOSView or an other task visualisation tool.
- Version 3.52a
-
-
-
- Start project and board support package for LM3S1968 CPUs added.
-
- Start project and board support package for LM3S8962 CPUs added.
-
- embOS now comes with sample applications which allow accurate measurement of task switch time in a running application.
- Version 3.40c
-
-
-
- When tasks are running on round robin with timeslice, the function OS_Yield() can be used to end the timeslice of the running task immediately and activate an other task with the same priority which is ready for execution.
- The function has no effect on tasks that are not running on round robin.
-
- Uart and PLL initialization to BSP added.
- Version 3.40a
-
-
-
- embOS now comes with board support package for STM32F10.
- Version 3.40
-
-
-
- embOS now comes with sample applications which allow accurate measurement of task switch time in a running application.
-
- During initialization of embOS, OS_INIT_SYS_LOCK() is not called automatically.
- As most of the applications do not need thread safe system libraries, an automatic activation of syslocks causes unwanted overhead.
- If supported and required, the user may call OS_INIT_SYS_LOCKS() from his own application after normal initialization of embOS.
-
- Extended timers are software timers which call a user defined callback function when the timer expires.
- In comparison to normal embOS timers, a parameter is passed to the timer callback function.
- The parameter value is initialized during timer creation.
- Version 3.32j
-
-
-
-
-
- Improvements
- Version 3.86g
-
-
-
- Unnecessary enabling and disabling of interrupts removed from OS_EnterNestableInterrupt() and OS_LeaveNestableInterrupt().
- Thus, interrupthandling of nested interrupts runs faster.
- Version 3.86e
-
-
-
- The hardfault handler was modified and is now included in the RTOSInit files.
- When semihosting for terminal outputs is activated in the project settings, printf outputs are controlled by break instructions in the code.
- If the CPU is started in normal mode without debugger, the break instruction will force a hardfault exception.
- The new hardfault handler in RTOSInit detects this state, resets the hardfault condition and continues execution of the application.
- The previuos implementation did not handle the hardfault correctly. The application or the calling task ran in an endless loop.
- Version 3.86d
-
-
-
- A needless call of enable interrupt function removed. Execution speed improved.
- Version 3.84.1
-
-
-
- The embOS stack management for Cortex M now uses the main stack as stack for OS_Idle which allows fully interruptible usage of the stack in OS_Idle().
- The previous versions of embOS for Cortex M did not allow usage of the stack in OS_Idle().
- Version 3.80g2
-
-
-
- The SYSTICK timer is normally used as system timer for embOS. Previous versions of embOS for Cortex-M3 initialized the interrupt priority during the system initialization called from OS_InitKern().
- Now the systick timer initialization is completely done during OS_InitHW() and can therefore be modified if required by the application.
- By modification of OS_InitHW(), any peripheral timer may be used as system timer for embOS, leaving the systick timer untouched.
- Version 3.80g1
-
-
-
- Some compile time switches were not predefined in some projects and therefore produced a warning when remarks were enabled.
- This did not cause any problem, but might have been confusing.
- Version 3.60
-
-
-
- embOS for CM3 for IAR V511 is now compatible with IAR Embedded Workbench for ARM V5.11.
- Version 3.52e
-
-
-
- All embOS variables are located in one module now. In previous versions of embOS, some module specific embOS variables were located in the module they were used for.
- Version 3.52a
-
-
-
- The embOS scheduler was optimized to reduce task switching time and interrupt latencies.
-
- When using the debug library with trace capabilities, OS_Yield() writes an entry into the trace buffer which shows the function call and the calling task.
- embOSView version 3.40d is required to show this entry.
-
- The call of OS_Idle() from OS_ChangeTask can be overwritten (inhibited) by defining the macro OS_IDLE() which is normally defined as OS_Idle().
- This allows task switching via an exception for specific CPU/compiler versions.
-
- Some compiler produced wrong pointer comparison code in far memory model.
- For specific CPU/compiler versions, the new OS_POINTER_TO_VALUE() function was introduced to deliver correct results in pointer comparison.
- Version 3.40b
-
-
-
- For some CPUs, the buffer start address for Queues has to be aligned.
- Now embOS automatically corrects the alignment, if required.
- Version 3.40a
-
-
-
- Counting semaphores are now int values and an overflow will be caught, so that embOS runs into OS_Error().
- Version 3.40
-
-
-
- Scheduling optimized to improve task switch time.
-
- Task event handling modified to improve task switch time for tasks waiting on events.
-
- During task switch, the time period when interrupts are disabled is reduced.
-
- The standard timer tick handler run faster now. The embOS internal time variable is incremented by 1 on every timer tick.
- When different increments are required, the new timer tick handler OS_HandleTick_Ex(), OS_TickHandler_Ex() or OS_HandleTickDI_Ex() have to be used by application.
- Different increments may be configured by a call of OS_CONFIG().
- Version 3.32j
-
-
-
-
-
- Program corrections
- Version 3.88g2
-
-
-
- The start projects for Cortex M0 devices had code for variable vector tables and programming the VTOR register implemented.
- Cortex M0 devices don't support a variable vector table, the vector table has to be located at address 0x0.
- Code for programming the VTOR register is removed from the RTOSInit files now.
- This correction affects the start projects for the following CPUs:
- Freescale KL25
- Infineon UMF51x
- NXP LPC 1000
- NXP LPC 122x
- ST STM32F05
- The problem existed on all previous versions of embOS Cortex M IAR and is fixed with version 3.88g2.
- Version 3.88c
-
-
-
- A problem with OS_Start() could cause that embOS did not start.
- The problem existed on all previous versions of embOS Cortex M IAR and is fixed with version 3.88c.
- Version 3.88b
-
-
-
- A problem with the scheduler could cause that a task not in ready state was not suspended and continued running.
- Higher priority tasks were blocked even when they were ready to execute.
- The problem existed on all previous versions of embOS Cortex M IAR and is fixed with version 3.88b.
- Version 3.86n
-
-
-
- A problem was reported which occured when the application was ended without starting embOS.
- When thread safe system locks were initialized during main(), the destroy function of the system locks might have crashed when the application run to exit without starting embOS before.
- The modified destroy function of the embOS syslocks now is not called when embOS was not started before, because there is nor need to destroy the syslocks in this case.
- Version 3.86d
-
-
-
- The previous version of this function did not work correctly.
- Saving the task context desroyed the task stack.
- The problem existed on all previous versions of embOS for Cortex M4F and is fixed with version 3.86d of embOS.
- Version 3.84c1
-
-
-
- The previous versions of embOS for Cortex M4 with VFP crashed when the VFP was activated and used by multiple tasks.
- Initialization for VFP and scheduling was modified to fix the problem.
- The problem existed on Cortex M4 applications with activated VFP only and is fixed with version 3.84c1 of embOS.
- Version 3.84c
-
-
-
- A hard fault exception could occur when an interrupt is executed after OS_Start() and before the scheduler runs for the first time.Version 3.82m
-
-
-
- Queue management failed when the Q-buffer was filled up to the end. This might have happened, when messages are produced faster then they were consumed.
- The OS_Q_Purge() and OS_Q_Put() functions did not handle this case correctly and caused the queue to be corrupted.
- OS_Error() might have been called with error number 143, or OS_Q_GetPtr() might have returned with a wrong message size or a message zize of 0.
- The problem existed since version 3.82k of embOS and is fixed with version 3.82m.
- Version 3.80h
-
-
-
- The previous versions of the initialization code for the AT91SAM3U did not initialize the second Flash memory controller for devices with 256KB Flash.
- This resulted in Flash read errors when the Flash memory in the second Flash bank was accessed.
- Version 3.80g3
-
-
-
- The previous version V3.80g2 of embOS for Cortex-M3 still affected the SYSTICK timer settings during a call of OS_InitKern().
- The Systick timer was disabled.
- Now the systick timer initialization is completely done during OS_InitHW() and can therefore be modified if required by the application.
- Version 3.52e1
-
-
-
- Parameter passing to OS_TaskEx did not work. A task always received a NULL pointer.
- The problem existed in all previous embOS versions for CM3 and is fixed with version 3.52e1.
- Version 3.52e
-
-
-
- Variable interrupt table in RAM did not work correct.
- Version 3.52b
-
-
-
- When sending an empty string, the calling task was suspended forever.
- The problem existed in all previous embOS versions and is fixed with version 3.52b.
-
- When the update interval of embOSView was set to 200ms or a longer value, the reaction of user input or mouse events was blocked for the same time.
- The problem existed since version 3.32 of embOSView and is fixed with version 3.52b.
- Version 3.52a
-
-
-
- When using the debug library with trace capabilities, a call of OS_Suspend() wrote a wrong trace code into the trace buffer.
- Instead of writing the code for task suspension, the code for task termination was written.
- The function itself worked correctly, only the data written into the trace buffer was wrong.
- The problem existed in all previous embOS versions and is fixed with version 3.40d.
- Version 3.40
-
-
-
- OS_Unuse() must not be called from a task that does not claim the resource semaphore.
- According to the documentation, the debug build of embOS should generate a call to OS_Error() if this fault happens.
- All previous versions of embOS did not call OS_Error().
- Now, OS_Error() will be called in that situation with error code 156: OS_ERR_RESOURCE_OWNER().
-
- OS_EVENT_Delete() did not work correctly. OS_LeaveRegion() was called inside the function without calling OS_EnterRegion() bfore.
- In debug builds of embOS, the error handler OS_Error() was called with error 151 (OS_ERR_LEAVEREGION_BEFORE_ENTERREGION).
- In release builds the system was blocked because the underflow of region count inhibits all further task switches, or system crashes, because incrementing the region count the next time allows task switches instead of blocking them.
- The problem existed in all previous versions and is fixed with version 3.32l.
-
- Round robin task switching did not work correctly in previous version. A task which was blocked for some reason could be activated. The system crashed during task switch.
- The problem existed since version 3.32j and is fixed with version 3.32l.
-
- The transmission handler for communication with embOSView might have sent incorrect data to embOSView, because internal control state was updated after sending the data.
- The problem occurred on a new embOS port for a specific CPU only and is fixed with version 3.32k.
- Version 3.32j
-
-
-
-
-
- Known problems/limitations
- Version 3.32j
-
-
-
-
-
- Release history
-
-
-
-
-
-
-
- Version
- Release date
- Short explanation
-
-
- V4.00
- 13. Jun 2014
-
- New embOS sources V4.00.
-
- Start project for ST STM32F072 added.
-
-
- V3.90.1
- 24. Mar 2014
-
- New start project for Atmel SAMG53.
-
- New start project for Atmel SAMG54.
-
-
- V3.90
- 19. Jan 2014
-
- New embOS sources V3.90.
-
-
-
- V3.88g2
- 12. Jan 2014
-
- New startproject for ST LIS331 device.
-
- New start project for TI TM4C129.
- RTOSInit for Cortex M0 corrected.
-
-
- V3.88g1
- 17. Dec 2013
-
- New startprojects for ST devices.
-
-
-
- V3.88g
- 05. Nov 2013
-
- New embOS sources V3.88g.
-
-
-
- V3.88c
- 13. Aug 2013
-
- New embOS sources V3.88c.
-
- OS_Start() fixed.
-
-
- V3.88b
- 29. May 2013
-
- New embOS sources V3.88b.
-
- Scheduling fixed.
-
-
- V3.86n
- 10. Dec 2012
-
- New embOS sources V3.86n.
-
- embOS syslocks for IAR runtime environment modified.
-
-
- V3.86l
- 26. Nov 2012
-
- New embOS sources V3.86l.
-
-
-
- V3.86g
- 06. Aug 2012
-
- New embOS sources V3.86g.
-
- Interrupt handling improved.
-
-
- V3.86f
- 26. Jul 2012
-
- New embOS sources V3.86f.
-
- Task events are 32bit wide now.
-
-
- V3.86e
- 08. Jun 2012
-
- New embOS sources V3.86e.
-
- HardFault_Handler() modified.
-
-
- V3.86d
- 10. May 2012
-
- OS_ExtendTaskContext_TLS_VFP() corrected.
-
- OS_EnterNestableInterrupt() improved.
- New embOS sources V3.86d.
-
-
- V3.84d
- 30. Apr 2012
-
- Queue management corrected.
-
-
-
- V3.84c1
- 03. Feb 2012
-
- Scheduling for Cortex M4 with VFP corrected.
-
-
-
- V3.84c
- 18. Jan 2012
-
- New start projects added.
-
- Update to latest embOS generic sources V3.84c
- OS_Start() corrected.
-
-
- V3.84.1
- 04. Nov 2011
-
- Stack management improved, OS_Idle() may use stack.
-
- embOS plugin for Cortex M4 with VFP.
-
-
- V3.84
- 27. Oct 2011
-
- Support for Cortex M4F with floating point unit added.
-
- New start projects for the EFM32 devices added.
- New start projects for the NXP devices added.
- New start projects for the STM32 devices added.
- Update to latest embOS generic sources V3.84
-
-
- V3.82u
- 05. July 2011
-
- Update to latest embOS generic sources V3.82u
-
- New start project for IAR STM32L152BV-SK board.
-
-
- V3.82s
- 23. Mar 2011
-
- Update to latest embOS generic sources V3.82s
-
- New library mode DPL added.
- New start projects for STM32 devices added.
- New start projects for EFM32 devices added.
- New start project for Fujitsu device added.
-
-
- V3.82m
- 24. Nov 2010
-
- Freescale Kinetis supported.
-
- EnergyMicro supported.
- Queue handling corrected.
-
-
- V3.82l
- 25. Oct 2010
-
- Update to IAR compiler V6.
-
-
-
- V3.82h1
- 21. July 2010
-
- embOS CM3 IAR now also supports Cortex M0.
-
-
-
- V3.82h
- 31. Mai 2010
-
- embOSView runs via J-Link.
-
- Fully CMSIS compliant
-
-
- V3.82e2
- 10. Feb 2010
-
- CMSIS compliant BSP for AT91SAM3S added.
-
-
-
- V3.82e1
- 29. Jan 2010
-
- Projects for LPC176x updated.
-
-
-
- V3.82e
- 28. Jan 2010
-
- CMSIS compliant project for STM32/MB672 added.
-
-
-
- V3.82c
- 10. Dec 2009
-
- BSP for TMPM330 added.
-
- Profiling support for MB784 added.
- Update to latest embOS generic sources V3.82c
- Remarks enabled for all projects
-
-
- V3.80h
- 06. Aug 2009
-
- BSP for AT91SAM3U corrected.
-
-
-
- V3.80g3
- 14. Jul 2009
-
- Timer initialization modified.
-
-
-
- V3.80g2
- 09. Jul 2009
-
- Timer initialization modified.
-
-
-
- V3.80g1
- 09. Jul 2009
-
- ST STM32F107 supported.
-
- IAR LPC1766-SK supported.
-
-
- V3.80g
- 05. Jun 2009
-
- New embOS plugin supported
-
- New optimized embOS sources.
-
-
- V3.62
- 01. Oct 2008
-
- Update to new embOS sources 3.62.
-
- Update to IAR compiler V5.20.
-
-
- V3.60d
- 05. Jun 2008
-
- Update to new embOS sources 3.60d.
-
- OS_POWER module implemented.
- BSP for IAR STM-SK split up into IAR STM-SK and ST MB525.
- BSP for ST MB672 eval board added.
-
-
- V3.60a
- 12. Mar 2008
-
- Update to embOS version 3.60a.
-
-
-
- V3.60
- 11. Jan 2008
-
- Update to IAR compiler V5.11.
-
-
-
- V3.52e1
- 21. Dec 2007
-
- OS_TaskEx corrected.
-
-
-
- V3.52e
- 29. Nov 2007
-
- New generic embOS sources.
-
- Interrupt table in RAM corrected.
-
-
- V3.52a
- 17. Sep 2007
-
- New BSPs for Luminary Micro LM3S1968 and LM3s8962 CPUs.
-
- Scheduler optimized.
- Task switch to OS_Idle() modified.
-
-
- V3.40c
- 28. Jun 2007
-
- OS_Yield() implemented.
-
- Uart and PLL for BSP/STM32F10 added.
-
-
- V3.40a
- 05. Jun 2007
-
- Counting semaphores improvement.
-
- BSP for STM32F10 added.
-
-
- V3.40
- 24. May 2007
-
- New start projects for LM3S6965 and LM3S6965.
- New embOS sources 3.40.
-
-
-
- V3.32j
- 06. Jan 2007
-
- Initial version for Cortex M3
-
- Miscellaneous
-
- Software released earlier is documented internally. This information is
- available at request.
-
-
-For more information, please visit our website www.segger.com or contact us at info@segger.com
-Release notes for embOS Version 4.34
+
+
+
+
+
+ New features
+ Version 4.34
+
+
+ Version 4.32
+
+
+ Version 4.30
+
+
+ Version 4.26
+
+
+
+ embOS checks now at runtime in OS_Start() if the embOS library and the RTOS.h are from the same version.
+ This is a very common mistake. In case of a version mismatch OS_Error() is called.
+ Version 4.24
+
+
+ Version 4.22
+
+
+
+ The new functions can be used to store a message, of which the distinct parts are distributed in memory, into a queue.
+ Version 4.20
+
+
+
+ OS_AddExtendTaskContext() can be used to have unlimited task context extensions.
+ Version 4.16
+
+
+
+ MISRA-C:2012 compliance is now checked with Gimpel Lint V9.0.
+ Version 4.14
+
+
+
+ OS_SetDefaultTaskContextExtension() can be used to set a default task context extension for newly created tasks.
+
+ OS_INT_PRIO_PRESERVE() / OS_INT_PRIO_RESTORE() can be used to preserve and restore the embOS interrupt status.
+
+ OS_TriggerTimer() ends up a software timer at once and calls the software timer callback function.
+ Version 4.12
+
+
+ Version 4.10
+
+
+
+ embOS is fully MISRA C:2012 compliant. Compliance matrix and deviations are documented in a separate PDF document.Version 4.06
+
+
+
+ embOS can now be used with the Percepio embOS-Trace application to trace the embOS API and embOS internals.
+ Version 4.04
+
+
+ Version 4.02
+
+
+
+ OS_GetTime_us() returns the current system time in usec.
+ Version 4.00a
+
+
+
+ This structure includes the field offsets of struct OS_GLOBAL and OS_TASK required by remote debugger for thread-awareness.
+
+ These function can be used to enable/disable the profiling and to get the total execution time of a task.
+ Version 4.00
+
+
+
+ embOS now supports tickless mode. This is useful for low power operations, e.g. battery powered devices.
+ Version 3.90
+
+
+
+ embOS now offers the following functions to enable and disable all interrupts, including high priority interrupts:
+ OS_INTERRUPT_MaskGlobal()
+ OS_INTERRUPT_UnmaskGlobal()
+ Using the following functions allows nested calls, because the interrupt state can be saved and restored:
+ OS_INTERRUPT_PreserveGlobal()
+ OS_INTERRUPT_PreserveAndMaskGlobal()
+ OS_INTERRUPT_RestoreGlobal()
+ Version 3.88h
+
+
+
+ Can be used to examine the number of ticks spent idle.
+ This is the number ticks until the next time scheduled action will be started.
+ Can be used to add an amount of time to the embOS internal time variable.Version 3.88d
+
+
+
+ In version 3.88c, some compatibility macros to address internal variables were removed from RTOS.h.
+ With version 3.88d, the following macros are available again:
+ OS_pTask, OS_pCurrentTask, OS_pActiveTask, OS_pTimer, OS_pCurrentTimer, OS_Counters, OS_Pending, OS_TimeDexVersion 3.88c
+
+
+
+ The new API function OS_InInterrupt() can be used to examine if the calling function is running in an embOS interrupt handler.
+ The function is available in all library modes.
+ The new function OS_Q_PutTimed() can be used to put data into a queue with a given timeout.
+ The function suspends the calling task for the given timeout if no space for the message is avaialable in the queue.
+ The new functions OS_AddLoadMeasurement(), OS_GetLoadMeasurement() and OS_INC_IDLE_CNT() can be used to examine the total CPU load at runtime.
+ The measurement period can be set by function, the global variable OC_CPU_Load can be read by debuggers with life watch capability.
+ Version 3.88a
+
+
+
+ The new API function OS_EVENT_SetResetMode() allows setting of the reset behaviour of existing event objects.
+ The embOS functions for event objects unfortunately were inconsistent in respect of the reset behaviour of events.
+ Setting the reset mode with the new function OS_EVENT_SetResetMode() allows to set the reset behaviour to semiauto, manual, or automatic reset.
+ Manual reset guaranties that the event object remains set when waiting tasks are resumed. The event has to be reset manually by the task.
+ Automatic reset allways resets the event when waiting tasks are resumed. The task does not need to reset the event.
+ The semiauto mode is the mode used in previous versions of embOS as described in the manual.
+ The new function OS_EVENT_CreateEx() allows to create an event object and set the reset behavior to semiauto, manual or automatic reset.
+ The new function OS_EVENT_GetResetMode() retrieves the current setting of the reset behaviour of an event object.
+ Previous version of embOS allowed message sizes of up to 127 bytes for mailboxes.
+ Now embOS allows messages sizes of up to 32767 bytes for mailboxes.
+ However, the total size of one mailbox buffer is still limited to 64KBytes on 16bit CPUs.
+ The debug builds of embOS now call OS_Error() with error code OS_ERR_MB_BUFFER_SIZE if the total size limit of one mailbox buffer is exceeded when calling OS_CreateMB().Version 3.88
+
+
+
+ MISRA violations suppressed in source code with Parasoft comments.Version 3.86l
+
+
+
+ All violations of MISRA rule 10.1 fixed.
+ All violations of MISRA rule 12.7 fixed.
+ All violations of MISRA rule 14.9 fixed.
+ All violations of MISRA rule 16.4 fixed.
+ All violations of MISRA rule 16.8 fixed.
+ Version 3.86k
+
+
+
+ The new function OS_Q_GetMessageSize() reads the size of the first message in a queue.Version 3.86f
+
+
+
+ The default for task events for 32bit CPUs was modified from unsigned char to unsigned long.
+ On 32bit CPUs, now the type OS_TASK_EVENT is defined as OS_U32 per default, allowing 32 different task events.
+ All previous versions limited the task events for all CPUs to 8bit per default.
+
+ embOS now supports a linked list of functions which are called when a task is terminated.
+ The new embOS function OS_AddOnTerminateHook() can be used to insert a callback function in the list of functions which are called when a task is terminated.
+ The callback function gets the task ID as paramter.
+ The callback function can be used to free or remove task specific objects which were created by the application.
+ Version 3.86b
+
+
+
+ The new function OS_PeekMail() reads a mail from a mailbox without removing it.Version 3.86
+
+
+
+ Previous versions of timed wait functions for waitable objects might have returned with no timeout condition when the object became avaialble after the timeout time.
+ This happened when the waiting task was blocked by higher priority tasks and did not start after the timeout period.
+ When the object became availabel after expiration of the timeout time but before the waiting tasks started again, no timeout condition was signaled to the task.
+ This behaviour is changed with version 3.86 of embOS. When the object was not avaialble within the timeout time, a timeout is signaled to the waiting task, regardless the object may become avaialble until the task runs again.
+ Following functions were modified:
+
+
+ Version 3.84b
+
+
+
+ The new blocking function for Queues OS_Q_PutBlocked() suspends the task when the queue is full.
+ Version 3.84
+
+
+
+ New functions to analyze the system stack load during runtime are available now:
+
+
+
+
+ For CPUs which support a separate interrupt stack, new functions to analyze the interrupt stack load during runtime are available now:
+
+
+ Version 3.82x
+
+
+
+ Overflow check is activated when OS_DEBUG_LEVEL >= 2.
+
+ OS_ASSERT_CPU_IN_ISR_MODE() moved to first line in macro OS_EnterInterrupt().Version 3.82w
+
+
+
+ GCC compiler warning in OS_MEMF_Create.c eliminated.
+ All embOS generic sources are tested with Lint.Version 3.82u
+
+
+
+ The fixed size memory pool data types were modified to allow larger pools and block sizes on 32bit CPUs. The sizes may now be up to 2^31 bytes.
+ For 16bit CPUs the block and pool sizes remain unchanged to previous versions and may be 64KB.
+
+ The new compile-time switch OS_SUPPORT_TIMER may be used to exclude embOS software timer handling from build when compiling the sources.
+ If software timer are not needed by the application, excluding the software timer handling will decrease code and data size and speed up the scheduler.
+ Version 3.82t
+
+
+
+ The trial time limitation is increased from 15 minutes to 12 hours.
+ Version 3.82s
+
+
+
+ OS_UseTimed() may be used to request a resource semaphore with time out. The function blocks until the resource is available or the timeout expired.
+ Version 3.82o
+
+
+
+ OS_WaitMailTimed() may be used to suspend a task for a given timeout or until a message is available in a mailbox without retrieving the mail.
+ Version 3.82n
+
+
+
+ OS_SuspendAllTasks() may be used to suspend all task except the running task.
+ OS_SetInitialSuspendCnt() can be used to create tasks that are initially suspended and will not run until they are resumed.
+ OS_ResumAllSuspendedTasks() may be used to resume all suspended task at once without the need to address specific tasks.
+ Version 3.82l
+
+
+
+ For some ports, a thread local storage (TLS) may be used and can be initialized individually for every task by a call of OS_TLS_Init().
+ The new TLS implementation requires additional CPU specifc fucntions and support by the compiler specific runtime library, it may be available for some ports only.
+ Version 3.82k
+
+
+
+ The new function OS_Delayus() can be used to perform a delay with micro second resolution. The calling task will wait for the given delay time without suspension.
+ During the wait time, other tasks may be activated by interrupt, the embOS scheduling is not blocked.
+ The function works well when the embOS timer has a resolution of at least 1us or better.
+
+ This new function deletes a queue. Queues can be fully dynamically created and deleted now. The resources of the queue may be re-used after deletion.
+ Version 3.82g
+
+
+
+ OS_Start() now is a generic function which sets OS_Running to 1 and then calls OS_StartASM().Version 3.82h
+
+
+
+ A data type was defined for Ipl_EI and Ipl_DI. This allows variable size of integers which is supported by some tool chains.
+
+ The OS_Info module included the standard header stdio.h without any need. The include is removed now.
+ Version 3.82g
+
+
+
+ OS_Start() now is a generic function which sets OS_Running to 1 and then calls OS_StartASM().Version 3.82f
+
+
+
+ The new API function OS_IsRunning() can be used to examine whether the embOS scheduler was started by a call of OS_Start().
+ This may be helpful for some applications and functions to decide whether blocking function calls can be used.
+ Version 3.82a
+
+
+
+ embOS checks in debug version the correct queue handling.
+
+ New queue function which returns whether the queue is currently in use.
+ Version 3.82
+
+
+
+ The internal scheduling functions OS_ChangeTask() and OS_Switch() were optimized to speed up context switching.
+ By recompiling the sources, the optimization may be enabled or disabled by the definition of OS_GLOBAL_IS_RETURNED and OS_GLOBAL_IS_PARA.
+ Version 3.80l
+
+
+
+ The new macro OS_U32_TO_PTR_TYPE casts an OS_U32 to pointer type to avoid warnings on some tool chains with different memory models.
+
+ OS_EI_HP_ON_ENTRY() enables high-prio interrupts if necessary: Some CPUs (such as M16C) disable all interrupts on ISR entry.
+ Version 3.80k
+
+
+
+ embOS V3.80k comes with an alternate faster tick handler OS_TICK_HandleNoHook().
+ This tick handler does not support the tick hook function and therefore executes faster.
+ It may be used instead of the regular tick handler OS_TICK_Handle() which is used in the default start projects.
+ When using this new fast tick handler, it is the users responsibility, not to install any tick hook functions, as those will not be called by embOS.
+
+ The data type of task events may now be modified from unsigned char to unsigned short or unsigned int to allow more than 8 task events.
+ The modification is done be defining the type of task events via the OS_TASK_EVENT definition in RTOS.h
+ This type defaults to unsigned char to be compatible with previous versions of embOS. A modification requires recompilation of the embOS sources.
+ Version 3.80h
+
+
+
+ For some CPUs the CPU state can not be examined. A modification of the interrupt entry functions was required to inhibit an interrupt level assertion, introduced with version 3.80f, for those CPUs.
+ The performance is not affected by this modification.
+ Version 3.80f
+
+
+
+ The debug version of embOS now comes with additional error handler functionality.
+ The error handler can detect illegal function calls under various conditions. OS_Error() will be called when one of the following conditions is detected:
+
+
+ Version 3.62a
+
+
+
+ OS_STACK_ALIGN may be defined to ensure a specific task stack alignment during task creation.
+ To ensure a stack alignment of 8 bytes, OS_STACK_ALIGN has to be defined to 8 in the CPU specific embOS internal header file OS_Priv.h.
+ Modification of this define requires recompilation of the embOS libraries.
+ Version 3.62
+
+
+
+ The extended embOS tick handler was modified to handle a runtime configurable tick increment and fractions.
+ These parameter are setup by the new OS_TICK_Config() function and may be re configured during runtime.
+ Version 3.60d
+
+
+
+ The OS_POWER module may be used to control different power saving modes when entering idle state.
+ Individual flags for different peripherals may be set whenever a peripheral needs power or clock, and may be reset, when power is not needed.
+ The state of the power flags may be examined during OS_Idle by a call of OS_POWER_GetMask().
+ This allows to switch off all of those peripherals which are not needed during idle times.
+ Version 3.60a
+
+
+
+ The embOS trial versions run unlimited as long as only 3 tasks are created.
+ Since version 3.60a, a time limit is added to the trial version. During the first 15 minutes, an unlimited number of tasks can be created.
+ If more than three tasks were created during the time limit time, the system stops and calls OS_Error() when the time limit exceeded.
+ Version 3.60
+
+
+
+ These new functions allow the application to add and remove user function calls (hook functions) to the OS timer tick handler.
+ Version 3.52c
+
+
+
+ OS_SetTaskName() allows modification of task names on the fly.
+ This may be useful if the functionality of a task changes during runtime and the new state should be shown using embOSView or an other task visualization tool.
+ Version 3.52
+
+
+
+ These new functions are required for some specific CPUs, but may be used in general to call an interrupt handler function without the need of using OS_EnterInterrupt() / OS_LeaveInterrupt() in the handler function.
+ Version 3.50b
+
+
+
+ The new XR libraries may be used to build extremely compact applications to save space in RAM and ROM and speed up context switching time.
+ The XR embOS libraries are compiled with round robin scheduling disabled and task names disabled, which results in smaller data structures, smaller code size and faster context switching time.
+ Version 3.40c
+
+
+
+ When tasks are running on round robin with timeslice, the function OS_Yield() can be used to end the timeslice of the running task immediately and activate an other task with the same priority which is ready for execution.
+ The function has no effect on tasks that are not running on round robin.
+ Version 3.40
+
+
+
+ embOS now comes with sample applications which allow accurate measurement of task switch time in a running application.
+ Version 3.32o
+
+
+
+ During initialization of embOS, OS_INIT_SYS_LOCK() is not called automatically.
+ As most of the applications do not need thread safe system libraries, an automatic activation of syslocks causes unwanted overhead.
+ If supported and required, the user may call OS_INIT_SYS_LOCKS() from his own application after normal initialization of embOS.
+ Version 3.32m
+
+
+
+ Extended timers are software timers which call a user defined callback function when the timer expires.
+ In comparison to normal embOS timers, a parameter is passed to the timer callback function.
+ The parameter value is initialized during timer creation.
+ Version 3.32j
+
+
+
+ May be used to decrement a counting semaphore conditionally, if a signal is available.
+ The function never blocks the calling task and delivers a result which indicates whether the semaphore was available.
+ Version 3.32f
+
+
+
+ May be used to include initialization code for thread safe system libraries.
+ Version 3.32d
+
+
+
+ New queue retrieval function which waits for a message with specified timeout.
+ Version 3.32c
+
+
+
+ New event object function to wait for an event with a timeout limit.
+ Version 3.32b
+
+
+
+ The number of task activations is now part of the task context in debug builds.
+ The number of activations are therefore displayed in the task list window of embOS plugin, when an embOS debug library is used.
+ Previous versions of embOS showed this information in profiling builds only.
+ Version 3.32a
+
+
+
+ Using the new embOS functions OS_CREATETASK_EX() or OS_CreateTaskEx() allows to pass a void pointer as parameter to a task.
+ Version 3.32
+
+
+
+ Event objects are standalone objects which are not assigned to a specific task.
+ Event objects may be used to synchronize one or multiple task to a specific event.
+ Events can be triggered from a task, a timer, or an interrupt handler.
+ Version 3.30a
+
+
+
+ For 8- and 16-bit CPUs the maximum range for delays and timer periods is limited to 32767 embOS timer ticks, because time comparison ist done by integer calculation.
+ By recompiling sources with data type OS_TIME defined as signed long, longer delays and timer periods up to 2147483647 ticks can be realized.
+ The embOS libraries of object versions for 8- and 16-bit CPUs are still delivered with the limitation to 32767 timer ticks.
+ Version 3.28p
+
+
+
+ In debug versions of embOS, OS_Error() is called with error code OS_ERR_TASK_PRIORITY, if a task is created with a priority which is already assigned to an other task.
+ OS_Error() is also called with the same error code, if a task priority is assigned by call of OS_SetPriority() and the new priority is already assigned to an other task.
+ Round robin switching can be disabled by recompiling sources with OS_RR_SUPPORTED defined as 0.
+ Version 3.28l
+
+
+
+ New counting semaphore handling function which specifies a maximum count value.
+ This allows counting semaphores used as binary semaphores.
+ Version 3.28i
+
+
+
+ New resource semaphore handling function allows to delete resource semaphores during runtime.
+ Version 3.28h
+
+
+
+ OS_CreateRSema() now generates an error, when the addressed resource semaphore was already created before.
+ OS_CreateCSema() now generates an error, when the addressed counting semaphore was already created before.
+ OS_CreateMB() now generates an error, when the mailbox was already created before.
+ OS_CreateTimer() now generates an error, when the software timer was already created before.
+ OS_MEMF_Create() now generates an error, when the addressed fixed size memory pool was already created before.
+ Version 3.28g
+
+
+
+ New info function to examine suspension state and count of a task.
+ Version 3.26
+
+
+
+ Tasks may be terminated anytime, regardless of task state.
+ All resources claimed by the terminated task are automatically released.
+ Version 3.22a
+
+
+
+ New mailbox functions to enable LIFO behavior of mailboxes.
+
+
+ New conditional mailbox functions to enable LIFO behavior of mailboxes.
+ Version 3.20
+
+
+
+ New functions to suspend and resume tasks unconditionally.
+
+ New functions to allocate fixed size memory blocks from embOS.
+
+ Thread safe dynamic memory allocation functions implemented.Version 3.10k
+
+
+
+ New mailbox retrieving function with timeout.Version 3.10d
+
+
+
+ New info routine. May be used in timer callback routines to examine which
+ timer expired.
+
+ New info routine. May be used to examine current running task.Version 3.10
+
+
+
+ For terminal I/O in embOSView, the data format was changed. Therefore
+ embOSView V3.10 or later is required.
+
+ Unmasked events remain unchanged when function returns.
+
+ Unmasked events remain unchanged when function returns. Timeout for waiting
+ can be specified.Version 3.08a
+
+
+
+ OS_Q_GetPtrCond() function enables conditional request of data from Queue
+ without task suspension.
+ OS_Q_GetMessageCnt() functions delivers number of messages in the queue.Version 3.08
+
+
+
+ Message queues enable intertask communication with messages of various
+ size.Version 3.06f
+
+
+
+ When using a resource semaphore with a call of OS_Use(), the actual usage
+ counter of the requested semaphore is returned as integer value. This
+ may be helpful for some applications and is a lot more efficient than
+ calling OS_Use() and then check the usage counter by calling OS_GetSemaValue().Version 3.06
+
+ All features of generic 3.06 kernel supported.
Version | +Release date | +Short explanation | +
V4.34 | +08. Mar 2017 | +
+ New API functions OS_EVENT_SetMaskMode() and OS_EVENT_GetMaskMode(). + |
+
V4.32 | +10. Jan 2017 | +
+ New API functions OS_EVENT_SetMask(), OS_EVENT_GetMask(), OS_EVENT_WaitMask() and OS_EVENT_WaitMaskTimed() added. + New API functions OS_PutMailTimed() and OS_PutMailTimed1() added. + New API functions OS_WD_Add(), OS_WD_Check(), OS_WD_Config(), OS_WD_Remove() and OS_WD_Trigger() added. + |
+
V4.30 | +08. Dec 2016 | +
+ New API functions OS_GetMailTimed1(), OS_ClearSingleEvent(), OS_RemoveTerminateHook() and OS_MPU_SwitchToUnprivStateEx() added. + OS_ResumeAllSuspendedTasks() renamed to OS_ResumeAllTasks(). + OS_RemoveOnTerminateHooks renamed to OS_RemoveAllTerminateHooks() + OS_AddOnTerminateHook() renamed to OS_AddTerminateHook(). + Source code refactoring. + |
+
V4.26 | +07. Sep 2016 | +
+ New API function OS_RemoveOnTerminateHooks() added. + embOS version mismatch check added. + embOS scheduler improved. + |
+
V4.24 | +28. Jun 2016 | +
+ Spinlock API for multi-core support added. + Several SYSVIEW trace macros added to indicate task termination and execution end of API functions. + |
+
V4.22 | +25. May 2016 | ++ OS_Q_PutEx(), OS_Q_PutBlockedEx(), and OS_Q_PutTimedEx() added. + | +
V4.20 | +22. Apr 2016 | +
+ MPU support added. + OS_AddExtendTaskContext() added. + OS_WaitMailTimed() corrected. + |
+
V4.16 | +22. Jan 2016 | ++ MISRA-C:2012 compliance updated. + | +
V4.14a | +15. Jan 2016 | ++ OS_Q_Create() corrected. + | +
V4.14 | +03. Nov 2015 | +
+ New API fucntion OS_SetDefaultTaskContextExtension() added. + New macros OS_INT_PRIO_PRESERVE() and OS_INT_PRIO_RESTORE() added. + New API functions OS_TriggerTimer() and OS_TriggerTimerEx() added. + SYSVIEW and Percepio trace macros added. + OS_StopTicklessMode() corrected. + |
+
V4.12b | +22. Sep 2015 | +
+ SYSVIEW trace macros added. + |
+
V4.12a | +17. Sep 2015 | +
+ OS_StartTimer() corrected. + SYSVIEW trace macros added/modified. + OS_InInterrupt() modified. + |
+
V4.12 | +19. Aug 2015 | +
+ OS_Alloc() corrected. + Percepio embOS-Trace macro in OS_CreateTimerEx() removed. + New mailbox API functions OS_Mail_GetPtr(), OS_Mail_GetPtrCond() and OS_Mail_Purge() added. + Support for SYSVIEW API trace added. + |
+
V4.10b | +29. May 2015 | +
+ OS_TerminateTask() corrected. + OS_AdjustTime() corrected + OS_SendString() parameter declaration modified to avoid compiler warning. + |
+
V4.10a | +13. May 2015 | ++ OS_GetTime_us() / OS_GetTime_us64() corrected. + | +
V4.10 | +30. Apr 2015 | +
+ embOS is MISRA C:2012 compliant. + Percepio embOS-Trace defines added. + OS_GetNumIdleTicks() corrected. + |
+
V4.06b | +24. Mar 2015 | +
+ Percepio embOS-Trace macro in OS_TerminateTask() corrected. + |
+
V4.06a | +16. Mar 2015 | +
+ Percepio embOS-Trace macros added/modified. + OS_Counters declaration modified. + |
+
V4.06 | +12. Mar 2015 | +
+ Support for Percepio embOS-Trace added. + OS_StopTicklessMode() corrected. + |
+
V4.04a | +01. Dec 2014 | +
+ OS_Config_SysTimer(), OS_GetTime_us() and OS_GetTime_us64() were not included in the embOS built. + |
+
V4.04 | +12. Nov 2014 | +
+ Task priorities extended to 32bit. + OS_SendString() corrected. + OS_GetTime_us() corrected. + |
+
V4.02a | +15. Sep 2014 | ++ Compile error fixed when disabling embOS tickless feature with the compile-time switch OS_SUPPORT_TICKLESS. + | +
V4.02 | +15. Aug 2014 | ++ New functions OS_GetTime_us(), OS_GetTime_us64() and OS_Config_SysTimer() added. + | +
V4.00a | +21. Jul 2014 | +
+ New tickless function OS_StopTicklessMode() added. + New const variable OS_DebugInfo added. + New profiling functions OS_STAT_Enable(), OS_STAT_Disable() and OS_STAT_GetTaskExecTime() added. + OS_SendString() corrected. + |
+
V4.00 | +06. Jun 2014 | ++ Tickless support added. + | +
V3.90a | +09. Apr 2014 | ++ OS_TerminateTask() corrected. + | +
V3.90 | +17. Feb 2014 | ++ Functions to disable/enable global interrupts added. + | +
V3.88h | +20. Dec 2013 | +OS_GetNumIdleTicks() added. + OS_AdjustTime() added. + |
+
V3.88g | +30. Oct 2013 | +OS_Q_Clear() corrected. | +
V3.88f | +22. Sep 2013 | +Internal const variable definition corrected. | +
V3.88e | +06. Sep 2013 | +Internal function prototype corrected. + Assertion into OS_Delayus() added. + |
V3.88d | +04. Sep 2013 | +Compatibility macros to older versions added. + |
V3.88c | +08. Aug 2013 | +New API functions OS_InInterrupt(), OS_Q_PutTimed() added. + Additional new profiling functionality |
+
V3.88b | +28. May 2013 | +Internal data structure changed. | +
V3.88a | +02. May 2013 | +
+ Event object handling enhanced. + Mailbox message size enlarged. + Timer handling corrected. + Release notes corrected for V3.86m + |
+
V3.88 | +19. Feb 2013 | +
+ Fully tested with Parasoft C/C++test MISRA check. + |
+
V3.86n | +07. Dec 2012 | +
+ Problem with embOS heap management fixed. + |
+
V3.86m | +05. Dec 2012 | +
+ Scheduler corrected. + Definition of OS_VERSION corrected. + |
+
V3.86l | +21. Nov 2012 | +
+ MISRA rule compliance improved. + OS_AddTickHook() corrected. + |
+
V3.86k | +02. Oct 2012 | +
+ New embOS API functions OS_Q_GetMessageSize() and OS_Q_PeekPtr(). + embOS is now compliant to MISRA 2004 rules. + |
+
V3.86i | +26. Sep 2012 | ++ OS_EnterNestableInterrupt() modified. + | +
V3.86h | +06. Sep 2012 | ++ OS_EVENT handling with timeout corrected. + | +
V3.86g | +04. Aug 2012 | ++ OS_RetriggerTimer() corrected. + | +
V3.86f | +25. Jul 2012 | +
+ Task events default to 32bit on 32bit CPUs. + New OS_AddOnTerminateHook() function. + OS_ERR_TIMESLICE removed. + |
+
V3.86e | +29. May 2012 | +
+ OS_malloc(), OS_free(), OS_realloc() modified. + Stack info functions corrected. + |
+
V3.86d | +9. May 2012 | ++ Timeout handling for waitable objectes corrected. + | +
V3.86c | +8. May 2012 | ++ Missing OS_EnterRegionFunc() prototype added. + | +
V3.86b | +2. May 2012 | +
+ New API function OS_PeekMail() + RTOS.h macro definitions modified. + |
+
V3.86a | +30. Apr 2012 | +
+ Queue handling corrected. + |
+
V3.86 | +22. Mar 2012 | +
+ New timeout handling for waitable objects. + OS task events corrected. + |
+
V3.84c | +05. Jan 2012 | ++ OS_Q_Put() removed from OSQ.c. + | +
V3.84b | +21. Dec 2011 | ++ New embOS API function OS_Q_PutBlocked(). + | +
V3.84a | +22. Nov 2011 | ++ New compile-time check ensures, OS_CPU is defined when compiling sources. + | +
V3.84 | +27. Sep 2011 | ++ New stack check functions for system and interrupt stack. + | +
V3.82x | +12. Sep 2011 | +
+ OS_RegionCnt overflow check added. + Macro OS_EnterInterrupt() modified. + |
+
V3.82w | +10. Aug 2011 | +
+ GCC compiler warning eliminated. + Code modified for Lint. + Resource semaphore handling corrected. + |
+
V3.82v | +15. Jul 2011 | ++ OS_Terminate() renamed to OS_TerminateTask(). + | +
V3.82u | +25. May 2011 | +
+ Generic tick handler modified. + Software timer handling improved. + |
+
V3.82t | +03. May 2011 | ++ Trial time limitation increased to 12 hours. + | +
V3.82s | +18. Mar 2011 | +
+ OS_UseTimed() implemented. + Improvements + Corrections. + |
+
V3.82r | +28. Jan 2011 | ++ TLS support improved. + | +
V3.82q | +18. Jan 2011 | ++ OS_EnterNestableInterrupt() optimized. + | +
V3.82p | +12. Jan 2011 | ++ OS_PutMail functions parameter qualifier modified. + | +
V3.82o | +04. Jan 2011 | ++ New API function OS_WaitMailTimed() + | +V3.82n | +06. Dec 2010 | ++ New API functions for task suspension and synchronization. + | + +
V3.82m | +16. Nov 2010 | ++ Queue handling corrected. + | +
V3.82l | +26. Oct 2010 | ++ TLS support added + | +
V3.82k | +21. Sep 2010 | +
+ Queue handling corrected. + New API functions for queues and delay. + |
+
V3.82i | +26. Jul 2010 | +
+ Warnings under GCC eliminated. + |
+
V3.82h | +28. May 2010 | +
+ Internal data types modified. + |
+
V3.82g | +12. May 2010 | +
+ OS_Start() modified. + |
+
V3.82f | +16. Apr 2010 | ++ New function OS_IsRunning() implemented. + | +
V3.82e | +17. Dec 2009 | ++ Stack check for system and interrupt stack added. + | +
V3.82d | +16. Dec 2009 | +
+ Variable type changed to avoid GCC warnings + Changes in OS_Global initialization to avoid GCC warnings. + |
+
V3.82c | +18. Nov 2009 | +
+ Changes in OS_Global initialization to avoid GCC warnings. + Definition OS_MODEL moved from OS_RAW.h to OSINFO.c. + |
+
V3.82b | +28. Oct 2009 | ++ Communication to embOSView modified. + | +
V3.82a | +25. Sep 2009 | +
+ Error handling for queues implemented. + OS_Q_IsInUse() implemented. + |
+
V3.82 | +17. Sep 2009 | ++ Scheduling optimized. + | +
V3.80l | +07. Sep 2009 | +
+ New Macros OS_U32_TO_PTR_TYPE() and OS_EI_HP_ON_ENTRY() added. + |
+
V3.80k | +02. Sep 2009 | +
+ Trace functions corrected. + |
+
V3.80i | +11. Aug 2009 | +
+ Optimized resource semaphore handling. + |
+
V3.80h | +27. Jul 2009 | +
+ Modified interrupt entry. + |
+
V3.80g | +05. Jun 2009 | +
+ Improved embOS plugin. + |
+
V3.80f | +03. Jun 2009 | +
+ Improved error handler. + |
+
V3.80 | +14. Nov 2008 | +
+ Improved scheduler. + |
+
V3.62c | +24. Oct 2008 | +
+ OS_GetPriority() corrected. + Additional error handling. + |
+
V3.62a | +06. Oct 2008 | ++ OS_STACK_ALIGN implemented. + | +
V3.62 | +01. Sep 2008 | ++ Tick handler modified. + | +
V3.60e | +25. Aug 2008 | ++ OS_EVENT_Create() corrected. + | +
V3.60d | +28. Mai 2008 | ++ OS_POWER module implemented. + | +
V3.60c | +24. Apr 2008 | ++ OS_GetTaskName() improved. + OS_ASSERT_INIT_CALLED() added. + | +
V3.60b | +25. Jan 2008 | ++ OS_ASSERT_ISR_LEVEL() defined. + | +
V3.60a | +25. Jan 2008 | ++ Time limit for trial version added. + | +
V3.60 | +18. Nov 2007 | ++ System tick hook functions introduced. + | +
V3.52e | +12. Nov 2007 | ++ Location of embOS variables modified. + | +
V3.52c | +17. Oct 2007 | +
+ OS_SetTaskName() introduced. + OS_SendString() corrected. + embOSView corrected. + |
+
V3.52a | +03. Sep 2007 | ++ OS_Terminate() in XR-builds corrected. + | +
V3.52 | +17. Aug 2007 | +
+ OS_CallISR(), OS_CallNestableISR() introduced. + OS_TickHandler(), OS_TickHandler_Ex() removed. + |
+
V3.50c | +10. Aug 2007 | ++ OS_GetTime32() optimized. + | +
V3.50b | +16. Jul 2007 | ++ Task switching time and interrupt latencies improved. + | +
V3.50a | +12. Jul 2007 | ++ System stack check for PIC corrected. + | +
V3.50 | +10. Jul 2007 | ++ embOS scheduler optimized. + | +
V3.40d | +05. Jul 2007 | ++ OS_Suspend() corrected. + | +
V3.40c | +22. Jun 2007 | ++ OS_Yield() implemented. + | +
V3.40b | +19. Jun 2007 | ++ Queue handling improved. + | +
V3.40a | +05. Jun 2007 | ++ Counting semaphores improved. + | +
V3.40 | +08. May 2007 | ++ Improvements. + | +
V3.32o | +19. Apr 2007 | ++ OS_Unuse() error handling improved. + | +
V3.32n | +16. Apr 2007 | +
+ OS_SUSPEND_TASK_ON_TERMINATE implemented. + Fixes a Windows bug which caused emBOS Simulation to crash. + |
+
V3.32m | +02. Apr 2007 | ++ OS_TimerEx implemented. + | +
V3.32l | +28. Mar 2007 | ++ Round robin switching corrected. + | +
V3.32k | +21. Mar 2007 | ++ Communication to embOSView modified. + | +
V3.32j | +31. Jan 2007 | ++ OS_CSemaRequest() implemented. + | +
V3.32i | +26. Jan 2007 | ++ Switch to OS_Idle() modified. + | +
V3.32h | +15. Jan 2007 | ++ Error handling for resource semaphores corrected. + | +
V3.32g | +30. Dec 2006 | ++ OS_PTR_TO_VALUE() added. + | +
V3.32f | +07. Dec 2006 | ++ OS_INIT_SYS_LOCKS() added. + | +
V3.32e | +07. Nov 2006 | ++ OS_GetMessageCnt() corrected. + | +
V3.32d | +05. Nov 2006 | ++ OS_Q_GetPtrTimed() added. + | +
V3.32c | +22. Sep 2006 | ++ OS_EVENT_WaitTimed() added. + | +
V3.32b | +18. Sep 2006 | ++ Enhanced debug information. + | +
V3.32a | +04. Aug 2006 | +Extended task implemented + | +
V3.32 | +18. Jul 2006 | +Event objects implemented | +
V3.30d | +20. Jun 2006 | +OS_MEMF_Create() corrected | +
V3.30b | +18. May 2006 | +New sources version 3.30b, OS_Suspend() corrected | +
V3.28p | +16. Feb 2006 | +New error handling for version without round robin scheduling | +
V3.28i | +14. Oct 2005 | +New embOS sources 3.28i with new function OS_DeleteRSema() | +
V3.28h | +29. Aug 2005 | +New embOS sources 3.28h, Enhanced error checks | +
V3.28g | +23. Aug 2005 | +New embOS sources 3.28g | +
V3.24 | +25. Nov 2004 | +New embOS sources 3.24 | +
V3.20d | +22. Jan 2004 | +New embOS sources V3.20, OS_GetMailTimed corrected | +
V3.10k | +13. Jan 2003 | +Upgrade to new generic source V3.10k | +
V3.06f | +24. Oct 2001 | +Upgrade to new generic source V3.06f | +
V3.06 | +23. Jul 2001 | +First version with release history | +
+Copyright 2001-2017 SEGGER Microcontroller GmbH & Co. KG. All rights reserved.
+For more information, please visit our website www.segger.com or contact us at info@segger.com
+
The following tools have been used:
++Compiler: IAR ANSI C/C++ Compiler V8.11.1.13263/W32 for ARM +Assembler: IAR Assembler V8.11.1.13263/W32 for ARM +Librarian: IAR Archive Tool V10.1.4.185 +Workbench: IAR Embedded Workbench for ARM 8.11.1.13272 ++ + + +
Version | +Release date | +Short explanation | +
V4.34.1 | +13. Apr 2017 | ++ Update for IAR EWARM V8.11. + | +
V4.34 | +27. Mar 2017 | +
+ Update to latest embOS generic sources V4.34. + Update for IAR EWARM V8.10. + |
+
V4.30 | +13. Dec 2016 | +
+ Update to latest embOS generic sources V4.30. + New start project for the NordicSemi nRF52 Preview Development Kit added. + New start project for the TI MSP432P401R LaunchPad Development Kit added. + |
+
V4.26.1 | +17. Nov 2016 | ++ Ensured suitability of SEGGER SystemView and SEGGER HardFault Handler for C++ compilers. + + |
V4.26 | +27. Oct 2016 | +
+ Update to latest embOS generic sources V4.26. + New start project for the NXP LPC1549 Xpresso v2 eval board added. + New start project for the SiliconLabs EZR32 Leopard Gecko added. + New start project for the ST STM32F767 added. + Modified workaround for Cortex-M7 r0p1 to be user-configurable at compile time. + Corrected automatic state preservation during OS_Idle() with Cortex M4F/M7. + |
+
V4.22 | +31. May 2016 | +
+ Update to latest embOS generic sources V4.22. + VFP register handling is now automatically performed by embOS. + New start project for the Atmel SAM4E-EK eval board added. + New start project for the ST STM32L152C Discovery board added. + Applied workaround for interrupt handling with Cortex-M7 r0p1. + Additional debug check for task termination added. + |
+
V4.16 | +24. Mar 2016 | +
+ Update to latest embOS generic sources V4.16. + New start project for the Freescale FRDM_K22F board added. + New start project for the Olimex STM32-P407 evalboard added. + New start project for the SEGGER emPower evalboard added. + New start project for the ST STM32L476 Discovery board added. + New start project for the TI TMS470M Development Kit added. + Advanced Hard Fault Handler added to all projects. + Task switch fixed. + Big-endian libraries fixed. + |
+
V4.14 | +22. Dec 2015 | +
+ Update to latest embOS generic sources V4.14. + New start project for Freescale Kinetis K26 added. + New start project for ST STM32F746G-Discovery added. + Added Segger SystemView to all projects. + |
+
V4.12a | +17. Sep 2015 | +
+ Update to latest embOS generic sources V4.12a. + Start project for ST STM32F401xC-Discovery eval board added. + |
+
V4.10 | +04. May 2015 | +
+ Update to latest embOS generic sources V4.10. + |
+
V4.06b | +31. Mar 2015 | +
+ Update to latest embOS generic sources V4.06b. + |
+
V4.06a | +18. Mar 2015 | +
+ Update to latest embOS generic sources V4.06a. + Sstart project for Freescale TWR-VF6 added. + OS_EnterRegion() fixed. + |
+
V4.04a2 | +04. Mar 2015 | +
+ Task switch fixed. + Start project for Atmel SAMV71 XPlainedUltra added. + |
+
V4.04a1 | +03. Feb 2015 | +
+ embOS library code size limitation fixed. + Start project for ST STM32F756G-Eval added. + |
+
V4.04a | +09. Jan 2015 | +
+ New embOS sources V4.04a. + |
+
V4.02a | +18. Sep 2014 | +
+ New embOS sources V4.02a. + |
+
V4.02.1 | +15. Sep 2014 | +
+ OS_LeaveNestableInterrupt() fixed. + |
+
V4.02 | +19. Aug 2014 | +
+ New embOS sources V4.02. + |
+
V4.00 | +13. Jun 2014 | +
+ New embOS sources V4.00. + Start project for ST STM32F072 added. + |
+
V3.90.1 | +24. Mar 2014 | +
+ New start project for Atmel SAMG53. + New start project for Atmel SAMG54. + |
+
V3.90 | +19. Jan 2014 | ++ New embOS sources V3.90. + | +
V3.88g2 | +12. Jan 2014 | +
+ New startproject for ST LIS331 device. + New start project for TI TM4C129. + RTOSInit for Cortex M0 corrected. + |
+
V3.88g1 | +17. Dec 2013 | ++ New startprojects for ST devices. + | +
V3.88g | +05. Nov 2013 | ++ New embOS sources V3.88g. + | +
V3.88c | +13. Aug 2013 | +
+ New embOS sources V3.88c. + OS_Start() fixed. + |
+
V3.88b | +29. May 2013 | +
+ New embOS sources V3.88b. + Scheduling fixed. + |
+
V3.86n | +10. Dec 2012 | +
+ New embOS sources V3.86n. + embOS syslocks for IAR runtime environment modified. + |
+
V3.86l | +26. Nov 2012 | +
+ New embOS sources V3.86l. + |
+
V3.86g | +06. Aug 2012 | +
+ New embOS sources V3.86g. + Interrupt handling improved. + |
+
V3.86f | +26. Jul 2012 | +
+ New embOS sources V3.86f. + Task events are 32bit wide now. + |
+
V3.86e | +08. Jun 2012 | +
+ New embOS sources V3.86e. + HardFault_Handler() modified. + |
+
V3.86d | +10. May 2012 | +
+ OS_ExtendTaskContext_TLS_VFP() corrected. + OS_EnterNestableInterrupt() improved. + New embOS sources V3.86d. + |
+
V3.84d | +30. Apr 2012 | ++ Queue management corrected. + | +
V3.84c1 | +03. Feb 2012 | ++ Scheduling for Cortex M4 with VFP corrected. + | +
V3.84c | +18. Jan 2012 | +
+ New start projects added. + Update to latest embOS generic sources V3.84c + OS_Start() corrected. + |
+
V3.84.1 | +04. Nov 2011 | +
+ Stack management improved, OS_Idle() may use stack. + embOS plugin for Cortex M4 with VFP. + |
+
V3.84 | +27. Oct 2011 | +
+ Support for Cortex M4F with floating point unit added. + New start projects for the EFM32 devices added. + New start projects for the NXP devices added. + New start projects for the STM32 devices added. + Update to latest embOS generic sources V3.84 + |
+
V3.82u | +05. July 2011 | +
+ Update to latest embOS generic sources V3.82u + New start project for IAR STM32L152BV-SK board. + |
+
V3.82s | +23. Mar 2011 | +
+ Update to latest embOS generic sources V3.82s + New library mode DPL added. + New start projects for STM32 devices added. + New start projects for EFM32 devices added. + New start project for Fujitsu device added. + |
+
V3.82m | +24. Nov 2010 | +
+ Freescale Kinetis supported. + EnergyMicro supported. + Queue handling corrected. + |
+
V3.82l | +25. Oct 2010 | ++ Update to IAR compiler V6. + | +
V3.82h1 | +21. July 2010 | ++ embOS CM3 IAR now also supports Cortex M0. + | +
V3.82h | +31. Mai 2010 | +
+ embOSView runs via J-Link. + Fully CMSIS compliant + |
+
V3.82e2 | +10. Feb 2010 | ++ CMSIS compliant BSP for AT91SAM3S added. + | +
V3.82e1 | +29. Jan 2010 | ++ Projects for LPC176x updated. + | +
V3.82e | +28. Jan 2010 | ++ CMSIS compliant project for STM32/MB672 added. + | +
V3.82c | +10. Dec 2009 | +
+ BSP for TMPM330 added. + Profiling support for MB784 added. + Update to latest embOS generic sources V3.82c + Remarks enabled for all projects + |
+
V3.80h | +06. Aug 2009 | ++ BSP for AT91SAM3U corrected. + | +
V3.80g3 | +14. Jul 2009 | ++ Timer initialization modified. + | +
V3.80g2 | +09. Jul 2009 | ++ Timer initialization modified. + | +
V3.80g1 | +09. Jul 2009 | +
+ ST STM32F107 supported. + IAR LPC1766-SK supported. + |
+
V3.80g | +05. Jun 2009 | +
+ New embOS plugin supported + New optimized embOS sources. + |
+
V3.62 | +01. Oct 2008 | +
+ Update to new embOS sources 3.62. + Update to IAR compiler V5.20. + |
+
V3.60d | +05. Jun 2008 | +
+ Update to new embOS sources 3.60d. + OS_POWER module implemented. + BSP for IAR STM-SK split up into IAR STM-SK and ST MB525. + BSP for ST MB672 eval board added. + |
+
V3.60a | +12. Mar 2008 | ++ Update to embOS version 3.60a. + | +
V3.60 | +11. Jan 2008 | ++ Update to IAR compiler V5.11. + | +
V3.52e1 | +21. Dec 2007 | ++ OS_TaskEx corrected. + | +
V3.52e | +29. Nov 2007 | +
+ New generic embOS sources. + Interrupt table in RAM corrected. + |
+
V3.52a | +17. Sep 2007 | +
+ New BSPs for Luminary Micro LM3S1968 and LM3s8962 CPUs. + Scheduler optimized. + Task switch to OS_Idle() modified. + |
+
V3.40c | +28. Jun 2007 | +
+ OS_Yield() implemented. + Uart and PLL for BSP/STM32F10 added. + |
+
V3.40a | +05. Jun 2007 | +
+ Counting semaphores improvement. + BSP for STM32F10 added. + |
+
V3.40 | +24. May 2007 | ++ New start projects for LM3S6965 and LM3S6965. + New embOS sources 3.40. + | +
V3.32j | +06. Jan 2007 | ++ Initial version for Cortex M3 + | +
+Copyright 2001-2017 SEGGER Microcontroller GmbH & Co. KG. All rights reserved.
+For more information, please visit our website www.segger.com or contact us at info@segger.com
+
Version | -Release date | -Short explanation | -
V4.00 | -06. Jun 2014 | -- Tickless support added. - | -
V3.90a | -09. Apr 2014 | -- OS_TerminateTask() corrected. - | -
V3.90 | -17. Feb 2014 | -- Functions to disable/enable global interrupts added. - | -
V3.88h | -20. Dec 2013 | -OS_GetNumIdleTicks() added. - OS_AdjustTime() added. - |
-
V3.88g | -30. Oct 2013 | -OS_Q_Clear() corrected. | -
V3.88f | -22. Sep 2013 | -Internal const variable definition corrected. | -
V3.88e | -06. Sep 2013 | -Internal function prototype corrected. - Assertion into OS_Delayus() added. - |
V3.88d | -04. Sep 2013 | -Compatibility macros to older versions added. - |
V3.88c | -08. Aug 2013 | -New API functions OS_InInterrupt(), OS_Q_PutTimed() added. - Additional new profiling functionality |
-
V3.88b | -28. May 2013 | -Internal data structure changed. | -
V3.88a | -02. May 2013 | -
- Event object handling enhanced. - Mailbox message size enlarged. - Timer handling corrected. - Release notes corrected for V3.86m - |
-
V3.88 | -19. Feb 2013 | -
- Fully tested with Parasoft C/C++test MISRA check. - |
-
V3.86n | -07. Dec 2012 | -
- Problem with embOS heap management fixed. - |
-
V3.86m | -05. Dec 2012 | -
- Scheduler corrected. - Definition of OS_VERSION corrected. - |
-
V3.86l | -21. Nov 2012 | -
- MISRA rule compliance improved. - OS_AddTickHook() corrected. - |
-
V3.86k | -02. Oct 2012 | -
- New embOS API functions OS_Q_GetMessageSize() and OS_Q_PeekPtr(). - embOS is now compliant to MISRA 2004 rules. - |
-
V3.86i | -26. Sep 2012 | -- OS_EnterNestableInterrupt() modified. - | -
V3.86h | -06. Sep 2012 | -- OS_EVENT handling with timeout corrected. - | -
V3.86g | -04. Aug 2012 | -- OS_RetriggerTimer() corrected. - | -
V3.86f | -25. Jul 2012 | -
- Task events default to 32bit on 32bit CPUs. - New OS_AddOnTerminateHook() function. - OS_ERR_TIMESLICE removed. - |
-
V3.86e | -29. May 2012 | -
- OS_malloc(), OS_free(), OS_realloc() modified. - Stack info functions corrected. - |
-
V3.86d | -9. May 2012 | -- Timeout handling for waitable objectes corrected. - | -
V3.86c | -8. May 2012 | -- Missing OS_EnterRegionFunc() prototype added. - | -
V3.86b | -2. May 2012 | -
- New API function OS_PeekMail() - RTOS.h macro definitions modified. - |
-
V3.86a | -30. Apr 2012 | -
- Queue handling corrected. - |
-
V3.86 | -22. Mar 2012 | -
- New timeout handling for waitable objects. - OS task events corrected. - |
-
V3.84c | -05. Jan 2012 | -- OS_Q_Put() removed from OSQ.c. - | -
V3.84b | -21. Dec 2011 | -- New embOS API function OS_Q_PutBlocked(). - | -
V3.84a | -22. Nov 2011 | -- New compile-time check ensures, OS_CPU is defined when compiling sources. - | -
V3.84 | -27. Sep 2011 | -- New stack check functions for system and interrupt stack. - | -
V3.82x | -12. Sep 2011 | -
- OS_RegionCnt overflow check added. - Macro OS_EnterInterrupt() modified. - |
-
V3.82w | -10. Aug 2011 | -
- GCC compiler warning eliminated. - Code modified for Lint. - Resource semaphore handling corrected. - |
-
V3.82v | -15. Jul 2011 | -- OS_Terminate() renamed to OS_TerminateTask(). - | -
V3.82u | -25. May 2011 | -
- Generic tick handler modified. - Software timer handling improved. - |
-
V3.82t | -03. May 2011 | -- Trial time limitation increased to 12 hours. - | -
V3.82s | -18. Mar 2011 | -
- OS_UseTimed() implemented. - Improvements - Corrections. - |
-
V3.82r | -28. Jan 2011 | -- TLS support improved. - | -
V3.82q | -18. Jan 2011 | -- OS_EnterNestableInterrupt() optimized. - | -
V3.82p | -12. Jan 2011 | -- OS_PutMail functions parameter qualifier modified. - | -
V3.82o | -04. Jan 2011 | -- New API function OS_WaitMailTimed() - | -V3.82n | -06. Dec 2010 | -- New API functions for task suspension and synchronization. - | - -
V3.82m | -16. Nov 2010 | -- Queue handling corrected. - | -
V3.82l | -26. Oct 2010 | -- TLS support added - | -
V3.82k | -21. Sep 2010 | -
- Queue handling corrected. - New API functions for queues and delay. - |
-
V3.82i | -26. Jul 2010 | -
- Warnings under GCC eliminated. - |
-
V3.82h | -28. May 2010 | -
- Internal data types modified. - |
-
V3.82g | -12. May 2010 | -
- OS_Start() modified. - |
-
V3.82f | -16. Apr 2010 | -- New function OS_IsRunning() implemented. - | -
V3.82e | -17. Dec 2009 | -- Stack check for system and interrupt stack added. - | -
V3.82d | -16. Dec 2009 | -
- Variable type changed to avoid GCC warnings - Changes in OS_Global initialization to avoid GCC warnings. - |
-
V3.82c | -18. Nov 2009 | -
- Changes in OS_Global initialization to avoid GCC warnings. - Definition OS_MODEL moved from OS_RAW.h to OSINFO.c. - |
-
V3.82b | -28. Oct 2009 | -- Communication to embOSView modified. - | -
V3.82a | -25. Sep 2009 | -
- Error handling for queues implemented. - OS_Q_IsInUse() implemented. - |
-
V3.82 | -17. Sep 2009 | -- Scheduling optimized. - | -
V3.80l | -07. Sep 2009 | -
- New Macros OS_U32_TO_PTR_TYPE() and OS_EI_HP_ON_ENTRY() added. - |
-
V3.80k | -02. Sep 2009 | -
- Trace functions corrected. - |
-
V3.80i | -11. Aug 2009 | -
- Optimized resource semaphore handling. - |
-
V3.80h | -27. Jul 2009 | -
- Modified interrupt entry. - |
-
V3.80g | -05. Jun 2009 | -
- Improved embOS plugin. - |
-
V3.80f | -03. Jun 2009 | -
- Improved error handler. - |
-
V3.80 | -14. Nov 2008 | -
- Improved scheduler. - |
-
V3.62c | -24. Oct 2008 | -
- OS_GetPriority() corrected. - Additional error handling. - |
-
V3.62a | -06. Oct 2008 | -- OS_STACK_ALIGN implemented. - | -
V3.62 | -01. Sep 2008 | -- Tick handler modified. - | -
V3.60e | -25. Aug 2008 | -- OS_EVENT_Create() corrected. - | -
V3.60d | -28. Mai 2008 | -- OS_POWER module implemented. - | -
V3.60c | -24. Apr 2008 | -- OS_GetTaskName() improved. - OS_ASSERT_INIT_CALLED() added. - | -
V3.60b | -25. Jan 2008 | -- OS_ASSERT_ISR_LEVEL() defined. - | -
V3.60a | -25. Jan 2008 | -- Time limit for trial version added. - | -
V3.60 | -18. Nov 2007 | -- System tick hook functions introduced. - | -
V3.52e | -12. Nov 2007 | -- Location of embOS variables modified. - | -
V3.52c | -17. Oct 2007 | -
- OS_SetTaskName() introduced. - OS_SendString() corrected. - embOSView corrected. - |
-
V3.52a | -03. Sep 2007 | -- OS_Terminate() in XR-builds corrected. - | -
V3.52 | -17. Aug 2007 | -
- OS_CallISR(), OS_CallNestableISR() introduced. - OS_TickHandler(), OS_TickHandler_Ex() removed. - |
-
V3.50c | -10. Aug 2007 | -- OS_GetTime32() optimized. - | -
V3.50b | -16. Jul 2007 | -- Task switching time and interrupt latencies improved. - | -
V3.50a | -12. Jul 2007 | -- System stack check for PIC corrected. - | -
V3.50 | -10. Jul 2007 | -- embOS scheduler optimized. - | -
V3.40d | -05. Jul 2007 | -- OS_Suspend() corrected. - | -
V3.40c | -22. Jun 2007 | -- OS_Yield() implemented. - | -
V3.40b | -19. Jun 2007 | -- Queue handling improved. - | -
V3.40a | -05. Jun 2007 | -- Counting semaphores improved. - | -
V3.40 | -08. May 2007 | -- Improvements. - | -
V3.32o | -19. Apr 2007 | -- OS_Unuse() error handling improved. - | -
V3.32n | -16. Apr 2007 | -
- OS_SUSPEND_TASK_ON_TERMINATE implemented. - Fixes a Windows bug which caused emBOS Simulation to crash. - |
-
V3.32m | -02. Apr 2007 | -- OS_TimerEx implemented. - | -
V3.32l | -28. Mar 2007 | -- Round robin switching corrected. - | -
V3.32k | -21. Mar 2007 | -- Communication to embOSView modified. - | -
V3.32j | -31. Jan 2007 | -- OS_CSemaRequest() implemented. - | -
V3.32i | -26. Jan 2007 | -- Switch to OS_Idle() modified. - | -
V3.32h | -15. Jan 2007 | -- Error handling for resource semaphores corrected. - | -
V3.32g | -30. Dec 2006 | -- OS_PTR_TO_VALUE() added. - | -
V3.32f | -07. Dec 2006 | -- OS_INIT_SYS_LOCKS() added. - | -
V3.32e | -07. Nov 2006 | -- OS_GetMessageCnt() corrected. - | -
V3.32d | -05. Nov 2006 | -- OS_Q_GetPtrTimed() added. - | -
V3.32c | -22. Sep 2006 | -- OS_EVENT_WaitTimed() added. - | -
V3.32b | -18. Sep 2006 | -- Enhanced debug information. - | -
V3.32a | -04. Aug 2006 | -Extended task implemented - | -
V3.32 | -18. Jul 2006 | -Event objects implemented | -
V3.30d | -20. Jun 2006 | -OS_MEMF_Create() corrected | -
V3.30b | -18. May 2006 | -New sources version 3.30b, OS_Suspend() corrected | -
V3.28p | -16. Feb 2006 | -New error handling for version without round robin scheduling | -
V3.28i | -14. Oct 2005 | -New embOS sources 3.28i with new function OS_DeleteRSema() | -
V3.28h | -29. Aug 2005 | -New embOS sources 3.28h, Enhanced error checks | -
V3.28g | -23. Aug 2005 | -New embOS sources 3.28g | -
V3.24 | -25. Nov 2004 | -New embOS sources 3.24 | -
V3.20d | -22. Jan 2004 | -New embOS sources V3.20, OS_GetMailTimed corrected | -
V3.10k | -13. Jan 2003 | -Upgrade to new generic source V3.10k | -
V3.06f | -24. Oct 2001 | -Upgrade to new generic source V3.06f | -
V3.06 | -23. Jul 2001 | -First version with release history | -
This document was first released with version 3.06 of
- the software.
- Software released earlier is documented internally. This information is
- available at request.
-
-Copyright 2001-2014 SEGGER Microcontroller GmbH & Co. KG. All rights reserved.
-For more information, please visit our website www.segger.com or contact us at info@segger.com
-
The Application Note "QP and emWin Embedded GUI" describes how to use QP™ with the emWin&trad; Embedded GUI from SEGGER and also µC/GUI from Micriµm, which technically are the same products. +
The Application Note "QP and emWin Embedded GUI" describes how to use QP™ with the emWin&trad; Embedded GUI from SEGGER and also µC/GUI from Micriµm, which technically are the same products.
-@image html emWin_demo.jpg QP-emWin demo (DPP) running on Windows +@image html emWin_demo.jpg QP-emWin demo (DPP) running on Windows To demonstrate the working examples, this Application Note uses the emWin Simulation on Windows, which is available for a free download from the SEGGER (requires registration). You need only a Windows-based PC to execute the examples provided in this Application Note. Additionally, you’d need Microsoft Visual Studio 2013 (could be the free Express Edition) or higher to re-build and debug the provided examples. diff --git a/doxygen/exa_native.dox b/doxygen/exa_native.dox index f118087c..ddd3ef62 100644 --- a/doxygen/exa_native.dox +++ b/doxygen/exa_native.dox @@ -1,5 +1,5 @@ -namespace QP { - +namespace QP { + /*##########################################################################*/ /*! @page exa_native Native Examples (Built-in Kernels) @@ -148,7 +148,7 @@ You can hover the mouse cursor over the /*##########################################################################*/ /*! @page arm-cm_blinky_ek-tm4c123gxl Blinky on EK-TM4C123GXL -@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board +@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board @n @n @image html blinky_ek-tm4c123gxl.gif Blinky on EK-TM4C123GLX (TivaC LaunchPad) @@ -158,110 +158,110 @@ Simple "Blinky" example for Texas Instruments TivaC123GXL MCU (Cortex-M4F), ARM @image html blinky_win32.png Blinky emulation running in a Windows console @n @n -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_blinky_efm32-slstk3401a Blinky on EFM32-SLSTK3401A -@image html bd_EFM32-SLSTK3401A.jpg EFM32-SLSTK3401A board +@image html bd_EFM32-SLSTK3401A.jpg EFM32-SLSTK3401A board @n Simple "Blinky" example for for Silicon Labs Pearl Gecko MCU (Cortex-M4F), ARM (MDK-ARM), GNU-ARM, IAR EWARM toolsets. @n @image html blinky_win32.png Blinky emulation running in a Windows console @n @n -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_dpp_ek-tm4c123gxl DPP on EK-TM4C123GXL -@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board +@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board Dining Philosophers Problem (DPP) example for Texas Instruments TivaC123GXL MCU (Cortex-M4F), ARM (MDK-ARM), GNU-ARM, IAR EWARM toolsets. @image html dpp_win32.png DPP emulation running in Windows GUI @n @n -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_dpp_efm32-slstk3401a DPP on EFM32-SLSTK3401A -@image html bd_EFM32-SLSTK3401A.jpg EFM32-SLSTK3401A board +@image html bd_EFM32-SLSTK3401A.jpg EFM32-SLSTK3401A board @n Dining Philosophers Problem (DPP) example for for Silicon Labs Pearl Gecko MCU (Cortex-M4F), ARM (MDK-ARM), GNU-ARM, IAR EWARM toolsets. @n -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_dpp_mbed-lpc1768 DPP on mbed-LPC1768 -@image html bd_mbed-LPC1768.jpg mbed-LPC1768 board +@image html bd_mbed-LPC1768.jpg mbed-LPC1768 board Dining Philosophers Problem (DPP) example for NXP LPC1768 MCU (Cortex-M3) with GNU-ARM toolset. -@image html mbed-LPC1768_button.jpg Adding External Button to mbed-LPC1768 +@image html mbed-LPC1768_button.jpg Adding External Button to mbed-LPC1768 @n @n -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_dpp_nucleo-l053r8 DPP on NUCLEO-L053R8 -@image html bd_nucleo-l053r8.jpg NUCLEO-L053R8 board +@image html bd_nucleo-l053r8.jpg NUCLEO-L053R8 board Dining Philosophers Problem (DPP) example for STM32-L053R8T6 MCU (Cortex-M0+) with ARM-Keil, GNU-ARM, and IAR-ARM toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_dpp_nucleo-l152re DPP on NUCLEO-L152RE -@image html bd_nucleo-l152re.jpg NUCLEO-L152RE board +@image html bd_nucleo-l152re.jpg NUCLEO-L152RE board Dining Philosophers Problem (DPP) example for STM32-L152RET6 MCU (Cortex-M3) with ARM-Keil, GNU-ARM, and IAR-ARM toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_dpp_stm32f746g-disco DPP on STM32F746G-Discovery -@image html bd_STM32F746G-Disco.jpg STM32F746G-Discovery +@image html bd_STM32F746G-Disco.jpg STM32F746G-Discovery Dining Philosophers Problem (DPP) example for STM32F746G-Discovery MCU (Cortex-M7) with ARM-Keil, GNU-ARM, and IAR-ARM toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cm_game_efm32-slstk3401a "Fly 'n' Shoot" Game on EFM32-SLSTK3401A -@image html bd_EFM32-SLSTK3401A.jpg EFM32-SLSTK3401A board +@image html bd_EFM32-SLSTK3401A.jpg EFM32-SLSTK3401A board "Fly 'n' Shoot" game example for Silicon Labs Pearl Gecko MCU (Cortex-M4F), ARM (MDK-ARM), GNU-ARM, IAR EWARM toolsets. @image html game_win32.png Game emulation running in Windows GUI @n @n -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cr_blinky_launchxl2-tms57012 Blinky on LAUNCHXL2-TMS57012 -@image html bd_LAUNCHXL2-TMS57012.jpg LAUNCHXL2-TMS57012 +@image html bd_LAUNCHXL2-TMS57012.jpg LAUNCHXL2-TMS57012 @ref blinky "Blinky" example for LAUNCHXL2-TMS57012 MCU (Cortex-R, Hercules) with IAR-ARM and TI toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page arm-cr_dpp_launchxl2-tms57012 DPP on LAUNCHXL2-TMS57012 -@image html bd_LAUNCHXL2-TMS57012.jpg LAUNCHXL2-TMS57012 +@image html bd_LAUNCHXL2-TMS57012.jpg LAUNCHXL2-TMS57012 Dining Philosophers Problem (DPP) example for LAUNCHXL2-TMS57012 MCU (Cortex-R, Hercules) with IAR-ARM and TI toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ @@ -278,11 +278,11 @@ The native (bare-metal) QP/C examples for the "classic" ARM7/ARM9 are as follows /*##########################################################################*/ /*! @page arm7-9_dpp_at91sam7s-ek DPP on AT91SAM7S-EK -@image html bd_AT91SAM7S-EK.jpg AT91SAM7S-EK board +@image html bd_AT91SAM7S-EK.jpg AT91SAM7S-EK board Dining Philosophers Problem (DPP) example for Atmel AT91SAM7S MCU (ARM7) with GNU-ARM toolset. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page exa_msp430 MSP430 @@ -300,25 +300,25 @@ The native (bare-metal) QP/C examples for MSP430 are as follows: /*##########################################################################*/ /*! @page msp430_blinky_msp-exp430g2 Blinky on MSP-EXP430G2 -@image html bd_MSP-EXP430G2.jpg MSP-EXP430G2 board +@image html bd_MSP-EXP430G2.jpg MSP-EXP430G2 board Simple Blinky example for MSP-EXP430G2 with CCS-430 and IAR-430 toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page msp430_blinky_msp-exp430f5529lp Blinky on MSP-EXP430F5529LP -@image html bd_MSP-EXP430F5529LP.jpg MSP-EXP430F5529LP board +@image html bd_MSP-EXP430F5529LP.jpg MSP-EXP430F5529LP board Simple Blinky example for MSP-EXP430F5529LP with CCS-430 and IAR-430 toolsets. -@image html under_construction.jpg +@image html under_construction.jpg */ /*##########################################################################*/ /*! @page msp430_dpp_msp-exp430g2 DPP on MSP-EXP430G2 -@image html bd_MSP-EXP430G2.jpg MSP-EXP430G2 board +@image html bd_MSP-EXP430G2.jpg MSP-EXP430G2 board DPP example for MSP-EXP430G2 with CCS-430 and IAR-430 toolsets. @@ -333,12 +333,12 @@ qspy -cCOM_PORT -b9600 -O2 -F2 -E1 -P1 -B1 where `COM_PORT` denotes the Virtual COM port, which you can find out in the Device Manager (see the screen shot below): -@image html com_msp-exp430g2.png Virtual COM port of the MSP-EXP430G2 board +@image html com_msp-exp430g2.png Virtual COM port of the MSP-EXP430G2 board @note To receive the QS data over the Virtual COM Port, you need to make sure that the jumper J3 on the MSP-EXP430G2 board is configured for the "Hardware UART" (the first two jumpers should be in the horizontal setting, as shown in the picture of the MSP-EXP430G2 board on top of this page. -@image html under_construction.jpg +@image html under_construction.jpg */ - + } // namespace QP \ No newline at end of file diff --git a/doxygen/exa_os.dox b/doxygen/exa_os.dox index 78e13e9f..a3b4d7e7 100644 --- a/doxygen/exa_os.dox +++ b/doxygen/exa_os.dox @@ -1,66 +1,66 @@ /*! @page exa_os Examples for Third-Party OS - @subpage exa_posix "POSIX" -- @subpage exa_win32 -- @subpage exa_win32-qv +- @subpage exa_win32 +- @subpage exa_win32-qv -@next{exa_posix} +@next{exa_posix} */ /*##########################################################################*/ /*! @page exa_posix POSIX (Linux, VxWorks, QNX, INTEGRITY, etc.) -The examples/posix folder contains the following examples: -
- -- blinky Simple "Blinky" (command-line) -- dpp DPP (command-line) -- qmsmtst Test State Machine based on QP::QMsm with QM model -- qhsmtst Test State Machine based on QP::QHsm with QM model +The examples/posix folder contains the following examples: +
-@next{exa_win32} +- blinky Simple "Blinky" (command-line) +- dpp DPP (command-line) +- qmsmtst Test State Machine based on QP::QMsm with QM model +- qhsmtst Test State Machine based on QP::QHsm with QM model + +@next{exa_win32} */ - -/*##########################################################################*/ -/*! @page exa_win32 Win32 API (Windows) - -The examples/win32 folder contains all examples described in the book Practical UML Statecharts in C/C++, 2nd Edition. These examples include: -
- -- blinky Simple "Blinky" for Windows (command line) -- calc Calculator example from Chapter 2 of PSiCC2 -- comp Orthogonal Component design pattern -- comp_qm Orthogonal Component with QM model design pattern -- defer Deferred Event design pattern -- dpp DPP (command-line) -- dpp-gui DPP (with GUI on Windows) -- game-gui "Fly 'n' Shoot" game from Chapter 1 of PSiCC2 -- history_qhsm Transition-to-History (with ::QHsm class) -- history_qmsm Transition-to-History (with ::QMsm class) -- qmsmtst Test State Machine based on ::QMsm with QM model -- qhsmtst Test State Machine based on ::QHsm with QM model -- reminder Reminder design pattern from Chapter 5 of PSiCC2 + +/*##########################################################################*/ +/*! @page exa_win32 Win32 API (Windows) + +The examples/win32 folder contains all examples described in the book Practical UML Statecharts in C/C++, 2nd Edition. These examples include: +
+ +- blinky Simple "Blinky" for Windows (command line) +- calc Calculator example from Chapter 2 of PSiCC2 +- comp Orthogonal Component design pattern +- comp_qm Orthogonal Component with QM model design pattern +- defer Deferred Event design pattern +- dpp DPP (command-line) +- dpp-gui DPP (with GUI on Windows) +- game-gui "Fly 'n' Shoot" game from Chapter 1 of PSiCC2 +- history_qhsm Transition-to-History (with ::QHsm class) +- history_qmsm Transition-to-History (with ::QMsm class) +- qmsmtst Test State Machine based on ::QMsm with QM model +- qhsmtst Test State Machine based on ::QHsm with QM model +- reminder Reminder design pattern from Chapter 5 of PSiCC2 - reminder Reminder design pattern different version @sa -- @ref exa_win32-qv -- @ref win32 +- @ref exa_win32-qv +- @ref win32 -@next{exa_win32-qv} -*/ - -/*##########################################################################*/ -/*! @page exa_win32-qv Win32-QV (Windows) - -The examples/win32-qv folder contains examples for Win32 API with the cooperative QV kernel. In the Win32-QV port all active objects share only one Win32 thread and are scheduled exactly as in the \ref comp_qv "cooperative QV kernel". The following examples are provided: +@next{exa_win32-qv} +*/ + +/*##########################################################################*/ +/*! @page exa_win32-qv Win32-QV (Windows) + +
The examples/win32-qv folder contains examples for Win32 API with the cooperative QV kernel. In the Win32-QV port all active objects share only one Win32 thread and are scheduled exactly as in the \ref comp_qv "cooperative QV kernel". The following examples are provided:
- -- dpp DPP (command-line) -- game-gui "Fly 'n' Shoot" game from Chapter 1 of PSiCC2 + +- dpp DPP (command-line) +- game-gui "Fly 'n' Shoot" game from Chapter 1 of PSiCC2 @note -All examples for @ref exa_win32 will also work with the @ref win32-qv "Win32-QV port" without any modifications to the source code, because @ref win32-qv "Win32-QV port" is designed as a drop-in replacement for the standard @ref win32 "Win32 port". To build the examples with @ref win32-qv "Win32-QV port" you merely need to include ports/win32-qv instead of ports/win32 and you need to link the @ref win32-qv "Win32-QV" QP library. +All examples for @ref exa_win32 will also work with the @ref win32-qv "Win32-QV port" without any modifications to the source code, because @ref win32-qv "Win32-QV port" is designed as a drop-in replacement for the standard @ref win32 "Win32 port". To build the examples with @ref win32-qv "Win32-QV port" you merely need to include ports/win32-qv instead of ports/win32 and you need to link the @ref win32-qv "Win32-QV" QP library. @sa -- @ref exa_win32 -- @ref win32-qv +- @ref exa_win32 +- @ref win32-qv */ \ No newline at end of file diff --git a/doxygen/exa_rtos.dox b/doxygen/exa_rtos.dox index 79c93004..c3983966 100644 --- a/doxygen/exa_rtos.dox +++ b/doxygen/exa_rtos.dox @@ -36,7 +36,7 @@ You can hover the mouse cursor over the The @ref dpp "DPP example" for embOS on STM32F4-Discovery board is located directory examples/embos/arm-cm/dpp_stm32f429-discovery. -@image html bd_STM32F4-Discovery.jpg STM32F4-Discovery board +@image html bd_STM32F4-Discovery.jpg STM32F4-Discovery board The sub-directory iar contains the workspace and project file that you can open in IAR EWARM IDE. @@ -57,7 +57,7 @@ VDD | VCC GND | GND -@image html bd_STM32F4-Discovery_RS232.jpg STM32F4-Discovery board connected to RS232 level shifter +@image html bd_STM32F4-Discovery_RS232.jpg STM32F4-Discovery board connected to RS232 level shifter The output is generated at 115200 baud rate. @@ -90,7 +90,7 @@ You can hover the mouse cursor over the The @ref dpp "DPP example" for ThreadX on STM32F4-Discovery board is located directory examples/threadx/arm-cm/dpp_stm32f429-discovery. -@image html bd_STM32F4-Discovery.jpg STM32F4-Discovery board +@image html bd_STM32F4-Discovery.jpg STM32F4-Discovery board The sub-directory iar contains the workspace and project file that you can open in IAR EWARM IDE. @@ -115,7 +115,7 @@ VDD | VCC GND | GND -@image html bd_STM32F4-Discovery_RS232.jpg STM32F4-Discovery board connected to RS232 level shifter +@image html bd_STM32F4-Discovery_RS232.jpg STM32F4-Discovery board connected to RS232 level shifter The output is generated at 115200 baud rate. @@ -129,7 +129,7 @@ The actual COM port number might be different on your Windows machine. Please ch @next{exa_ti-rtos examples} */ - + /*##########################################################################*/ /*! @page exa_ti-rtos TI-RTOS @htmlonly @@ -164,10 +164,10 @@ You can hover the mouse cursor over the The @ref dpp "DPP example" for TI-RTOS on EK-TM4C123GXL board is located directory examples/ti-rtos/arm-cm/dpp_ek-tm4c123gxl. -@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board +@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board -@attention -The TI-RTOS requires its own tooling (XDCTOOLS) and is too big to fit into the 3rd_party/ directory in the QP/C++ distribution. Therefore, you need to **download and install TI-RTOS** on your machine before you can build any examples (preferably in the default location C:/TI). Please refer to the TI Application Note "TI-RTOS for TivaC Getting Started Guide" (Literature Number: SPRUHU5D) for more information. +@attention +The TI-RTOS requires its own tooling (XDCTOOLS) and is too big to fit into the 3rd_party/ directory in the QP/C++ distribution. Therefore, you need to **download and install TI-RTOS** on your machine before you can build any examples (preferably in the default location C:/TI). Please refer to the TI Application Note "TI-RTOS for TivaC Getting Started Guide" (Literature Number: SPRUHU5D) for more information. The sub-directory ccs contains the project files that you can **import** into the TI CCS IDE. @@ -334,22 +334,22 @@ You can hover the mouse cursor over the /*##########################################################################*/ /*! @page ucos-ii_dpp_ek-tm4c123gxl DPP on EK-TM4C123GXL -@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board +@image html bd_EK-TM4C123GXL.jpg EK-TM4C123GXL board DPP example for Texas Instruments TivaC123GXL MCU (Cortex-M4F) and IAR EWARM toolsets. -@image html under_construction.jpg +@image html under_construction.jpg @next{exa_os examples} */ /*##########################################################################*/ /*! @page ucos-ii_dpp_nucleo-l152re DPP on NUCLEO-L152RE -@image html bd_nucleo-l152re.jpg NUCLEO-L152RE board +@image html bd_nucleo-l152re.jpg NUCLEO-L152RE board DPP example for Texas Instruments STM32 L152RET6 MCU (Cortex-M3) and IAR EWARM toolsets. -@image html under_construction.jpg +@image html under_construction.jpg @next{exa_os examples} */ diff --git a/doxygen/gs.dox b/doxygen/gs.dox index f72db6ce..43ebd4c7 100644 --- a/doxygen/gs.dox +++ b/doxygen/gs.dox @@ -37,16 +37,16 @@ When the *Tree View* is **unlinked** from the Current Topic, the *Tree View* wil ------------------------------------------------------------------------------ @section gs_an Getting Started with QP/C App Note -The Quantum Leaps Application Note Getting Started with QP/C provides step-by-step instructions on how to download, install, and get started with QP/C quickly. The application note also contains a **QP/C Tutorial**, in which you build a simple "Blinky" application. +The Quantum Leaps Application Note Getting Started with QP/C provides step-by-step instructions on how to download, install, and get started with QP/C quickly. The application note also contains a **QP/C Tutorial**, in which you build a simple "Blinky" application. @htmlonly @endhtmlonly - -@next{struct} -*/ + +@next{struct} +*/ diff --git a/doxygen/history.dox b/doxygen/history.dox index 48c8cb94..5ae16e0f 100644 --- a/doxygen/history.dox +++ b/doxygen/history.dox @@ -1,6 +1,58 @@ /** @page history Revision History +@section qpc_5_9_0 Version 5.9.0, 2017-05-19 +The main purpose of this milestone QP/C release is to provide support for the powerful **Unit Testing Framework** called +QUTest™ (pronounced *cutest*). +QUTest™ is the fundamental tooling for Test-Driven Development (TDD) of QP/C applications, which is a highly recommended best-practice. This release introduces changes in the QS-RX (receive) channel and adds several new callbacks. + +@note The signatrue of the QS_onCommand() has changed and the function now takes 3 arbitrary 32-bit parameters instead of one. This introduces backwards-incompatibility with previous code that used QS_onCommand(). + + +This release also changes the critical section for QP/C ports to ARM Cortex-M +in that the policy of "save and restore interrupt status" is used. This policy +permits nesting of critical sections, which was requested by customers. + +Additionally, this release changes the selective interrupt disabling for +ARM Cortex-M3/4/7 (with the BASEPRI register) to address the hardware problem +on ARM Cortex-M7 core r0p1 (ARM-EPM-064408, errata 837070). The QP ports to +ARM Cortex-M3/4/7 now implement the workaround recommended by ARM, which is +to surround MSR BASEPRI with the "CPSID i"/"CPSIE i" pair. This workaround +works also for Cortex-M3/M4 cores. + +New ports: +- ports/win32-qutest folder contains port to QUTest for Windows +- ports/posix-qutest folder contains port to QUTest for POSIX (Linux) +- ports/arm-cm/qutest folder contains port to QUTest for ARM Cortex-M + +New examples: +- examples/qutest/dpp folder contains the QUTest DPP test for various + platforms (Win32, EFM32-SLSTK3401A and EK-TM4C123GXL) +- examples/qutest/qhsmtst folder contains the QUTest test for + the QHsmTst state machine (structural test) +- examples/qutest/qmsmtst folder contains the QUTest test for + the QMsmTst state machine (structural test) +- examples/qutest/self_test folder contains the QUTest self-test for + various features of QUTest +- examples/qutest/TDDbook_Flash folder contains the QUTest + of a flash memory driver from Chapter 10 of the "TDD-book" by James + Grenning. +- examples/qutest/TDDbook_LedDriver folder contains the QUTest + of a flash memory driver from Chapters 3&4 of the "TDD-book" by James + Grenning. +- examples/qutest/TDDbook_Sprintf folder contains the QUTest + of a flash memory driver from Chapter 1 of the "TDD-book" by James + Grenning. + +Updates of 3rd_party software: +- the 3rd_party/CMSIS folder has been updated to CMSIS 5.0.2. +- the 3rd_party/embOS folder has been updated to embOS 4.34.1 + +Finally, this release fixes the following bugs: +- bug#162 "QF critical sections require modification for M7 core" + + +------------------------------------------------------------------------------ @section qpc_5_8_2 Version 5.8.2, 2017-02-08 This release adds examples for the ARM Cortex-M7 CPU. Specifically, the release contains the standard @ref dpp "Dining Philosophers Problem (DPP)" @@ -13,19 +65,19 @@ for the STM32F7xx MCUs, which contains parts of STM32CubeF7 library. Also, the `3rd_party/CMSIS` folder now provides the new CMSIS V5.0.1. -Finally, this release fixes the following bugs: +Finally, this release fixes the following bugs: - bug#159 QP/C/C++ Win32 ports don't work on all x86 CPUs - bug#157 In QPC ucosii port, conversion of AO's priority to OS task priority is incorrect. - bug#152 Typo (qpc\ports\arm7-9\qk\gnu\qk_port.s:42) prevents compilation - ------------------------------------------------------------------------------- + +------------------------------------------------------------------------------ @section qpc_5_8_1 Version 5.8.1, 2016-12-16 This release is in response to a recent finding that many QP users of the ports to ARM Cortex-M3/M4 forget to explicitly set their interrupt priorities, -as described in the AppNote "Setting ARM Cortex-M Interrupt Priorities in QP 5.x". +as described in the AppNote "Setting ARM Cortex-M Interrupt Priorities in QP 5.x". Specifically, this release improves safety of QP ports to ARM Cortex-M3/M4, by initializing the interrupt priorities to a safe default in a generic, @@ -58,8 +110,8 @@ Changes in detail: dropped during the upgrade to CMSIS 5.0.1, because it is not part of the standard distribution. - ------------------------------------------------------------------------------- + +------------------------------------------------------------------------------ @section qpc_5_8_0 Version 5.8.0, 2016-11-30 The main purpose of this milestone QP/C release is to finally provide the baseline framework fully compatible with the upcoming QM 4.0.0. @@ -105,66 +157,66 @@ Finally, the complete list of bugs fixed in this release is as follows: - bug#143 "QACTIVE_POST_LIFO() on initial transition asserts on QXK" - bug#124 "Windows port now cause memory leakage" - ------------------------------------------------------------------------------- + +------------------------------------------------------------------------------ @section qpc_5_7_4 Version 5.7.4, 2016-11-04 -This release fixes the following bugs: -- bug#145 QF_PUBLISH() leaks events that have no subscribers -- bug#144 Obsolete Win32 API in qwin_gui.c -- bug#143 QACTIVE_POST_LIFO() on initial transition asserts on QXK - - ------------------------------------------------------------------------------- +This release fixes the following bugs: +- bug#145 QF_PUBLISH() leaks events that have no subscribers +- bug#144 Obsolete Win32 API in qwin_gui.c +- bug#143 QACTIVE_POST_LIFO() on initial transition asserts on QXK + + +------------------------------------------------------------------------------ @section qpc_5_7_3 Version 5.7.3, 2016-10-07 -This release adds QP ports to the TI-RTOS kernel (SYS/BIOS) with TI-CCS -and IAR EWARM toolsets. Examples are provided for the EK-TM4C123GXL -(TivaC LaunchPad) in the directory: - -qpc/examples/ti-rtos/arm-cm/dpp_ek-tm4c123gxl - -NOTE: The examples require a separate installation of the TI-RTOS -(file tirtos_tivac_setupwin32_2_16_01_14.exe) - -Also, this release fixes the following bugs: -- bug#140 (PendSV_Handler() exception stacked PC not halfword aligned). -- bug#142 (PendSV_restore_ex may not be able to enable interrupt before - returning to task). - - ------------------------------------------------------------------------------- +This release adds QP ports to the TI-RTOS kernel (SYS/BIOS) with TI-CCS +and IAR EWARM toolsets. Examples are provided for the EK-TM4C123GXL +(TivaC LaunchPad) in the directory: + +qpc/examples/ti-rtos/arm-cm/dpp_ek-tm4c123gxl + +NOTE: The examples require a separate installation of the TI-RTOS +(file tirtos_tivac_setupwin32_2_16_01_14.exe) + +Also, this release fixes the following bugs: +- bug#140 (PendSV_Handler() exception stacked PC not halfword aligned). +- bug#142 (PendSV_restore_ex may not be able to enable interrupt before + returning to task). + + +------------------------------------------------------------------------------ @section qpc_5_7_2 Version 5.7.2, 2016-09-30 -This is the first production release of the "dual-mode" QXK kernel. -"Dual-mode" QXK means that QXK supports both basic-threads (BC1 class -from the OSEK/VDX RTOS specification) as well as extended-threads -(EC1 class from the OSEK/VDX RTOS specification. In other words, -QXK executes active objects (basic threads) like the QK kernel using the -single stack (Main Stack on ARM Cortex-M), but can also execute -traditional *blocking* threads (extended threads). - -Only the extended threads (::QXThread class) need their private stack -spaces and the overhead of the full context switch. The basic threads -(::QMActive and ::QActive classes) run efficiently using the main stack with -much lower context switch overhead. - -The QXK examples have been updated for more thorough demonstration of -the QXK features. The QXK examples are available in the following -directories: dpp_efm32-slstk3401a, dpp_ek-tm4c123gxl, and dpp_nucleo-l053r8. - -This release fixes several issues in QXK 5.7.1-beta with handling -timeouts while blocking in extended-threads, such as timed blocking on -event queues and semaphores. - -This release also changes the internal QK implementation to match the -terminology applied in the QXK kernel (e.g., QK_sched_() has been renamed -to QK_activate_() and QK_schedPrio_() to QK_sched_()). These changes fall -into the category of refactoring and have no impact on the API or -performance. - -Finally, this release improves the implementation of scheduler locking -in publish-subscribe event delivery. - - ------------------------------------------------------------------------------- +This is the first production release of the "dual-mode" QXK kernel. +"Dual-mode" QXK means that QXK supports both basic-threads (BC1 class +from the OSEK/VDX RTOS specification) as well as extended-threads +(EC1 class from the OSEK/VDX RTOS specification. In other words, +QXK executes active objects (basic threads) like the QK kernel using the +single stack (Main Stack on ARM Cortex-M), but can also execute +traditional *blocking* threads (extended threads). + +Only the extended threads (::QXThread class) need their private stack +spaces and the overhead of the full context switch. The basic threads +(::QMActive and ::QActive classes) run efficiently using the main stack with +much lower context switch overhead. + +The QXK examples have been updated for more thorough demonstration of +the QXK features. The QXK examples are available in the following +directories: dpp_efm32-slstk3401a, dpp_ek-tm4c123gxl, and dpp_nucleo-l053r8. + +This release fixes several issues in QXK 5.7.1-beta with handling +timeouts while blocking in extended-threads, such as timed blocking on +event queues and semaphores. + +This release also changes the internal QK implementation to match the +terminology applied in the QXK kernel (e.g., QK_sched_() has been renamed +to QK_activate_() and QK_schedPrio_() to QK_sched_()). These changes fall +into the category of refactoring and have no impact on the API or +performance. + +Finally, this release improves the implementation of scheduler locking +in publish-subscribe event delivery. + + +------------------------------------------------------------------------------ @section qpc_5_7_0 Version 5.7.0, 2016-08-31 This release adds support for sub-machines and sub-machine states for reusing pieces of state machines (an advanced UML concept) to the QMsm-state machine implementation strategy. This feature is to match the upcoming QM 4.0.0. @@ -176,7 +228,7 @@ Also, this release changes slightly the QXK port to ARM Cortex-M, where again th Finally, this release replaces all absolute paths with relative paths in all CCS-Eclipse project files (for TivaC, Hercules, and MSP430). -Changes in detail: +Changes in detail: 1. Modified qep_msm.c to correct the support for sub-machines and sub-machine states 2. Added new port to ARM Cortex-R in the directory ports/arm-cr @@ -184,13 +236,13 @@ Changes in detail: 4. Modified the ARM Cortex-M QK ports (ARM-KEIL, GNU, IAR, and TI) 5. Modified the ARM Cortex-M QXK ports (ARM-KEIL, GNU, IAR, and TI) - ------------------------------------------------------------------------------- -@section qpc_5_6_5 Version 5.6.5, 2016-06-06 -This release adds support for the new board: EFM32-SLSTK3401A (Pearl Gecko Starter Kit from Silicon Labs). This board replaces the Stellaris EK-LM3S811 board, which has been discontinued. (The Stellaris EK-LM3S811 board had been used in the "Fly 'n' Shoot" game example accompanying the PSiCC2 book). - + +------------------------------------------------------------------------------ +@section qpc_5_6_5 Version 5.6.5, 2016-06-06 +This release adds support for the new board: EFM32-SLSTK3401A (Pearl Gecko Starter Kit from Silicon Labs). This board replaces the Stellaris EK-LM3S811 board, which has been discontinued. (The Stellaris EK-LM3S811 board had been used in the "Fly 'n' Shoot" game example accompanying the PSiCC2 book). + This release also introduces a new version of the QWIN GUI Toolkit in the Windows prototypes for the "Fly 'n' Shoot" game and the DPP-GUI -version (see http://www.state-machine.com/products/index.html#QWIN). +version (see https://www.state-machine.com/products/#QWIN). Additionally, this release also includes the QP/C integration with the emWin emgedded GUI from SEGGER, which is also the same product as uC/GUI distributed by Micrium (@ref exa_emwin). @@ -200,65 +252,65 @@ Finally, this relase comes with updated project files for TI Code Composer Studi This release fixes the following bugs: - bug#130 (POSIX port stop->start leads to reuse of sestroyed mutex). - bug#131 (QF_newRef_ increments reference counter without QF_CRIT_ENTRY_()). - - ------------------------------------------------------------------------------- -@section qpc_5_6_4 Version 5.6.4, 2016-04-25 -This release fixes a serious Bug #128 (https://sourceforge.net/p/qpc/bugs/128 ) in the QK port to ARM Cortex-M introduced back in QP 5.6.1 - - ------------------------------------------------------------------------------- -@section qpc_5_6_3 Version 5.6.3, 2016-04-12 -This release fixes a serious Bug #126 (https://sourceforge.net/p/qpc/bugs/126 ) in the QK preemptive scheduler introduced in QP 5.6.2. - - + + +------------------------------------------------------------------------------ +@section qpc_5_6_4 Version 5.6.4, 2016-04-25 +This release fixes a serious Bug #128 (https://sourceforge.net/p/qpc/bugs/128 ) in the QK port to ARM Cortex-M introduced back in QP 5.6.1 + + +------------------------------------------------------------------------------ +@section qpc_5_6_3 Version 5.6.3, 2016-04-12 +This release fixes a serious Bug #126 (https://sourceforge.net/p/qpc/bugs/126 ) in the QK preemptive scheduler introduced in QP 5.6.2. + + ------------------------------------------------------------------------------ @section qpc_5_6_2 Version 5.6.2, 2016-03-31 -The main purpose of this release is to introduce _atomic event multicasting_, meaning that event publishing to all subscribers is now protected from preemption. This eliminates potential for re-ordering of events under preemptive kernels (such as QK, QXK, or 3rd-party RTOSes), when events are published from low-priority AOs and some higher-priority subscribers can preempt multicasting and post/publish events of their own (before the original event is posted to all subscribers). - -The atomic event multicasting is implemented by means of selective scheduler locking--very much like a priory-ceiling mutex. During event multicasting the scheduler gets locked, but only up to the highest-priority subscriber to a given event. The whole point here is that active objects with priorities above such "priority ceiling" are _not_ affected. Please see the discussion thread: - -https://sourceforge.net/p/qpc/discussion/668726/thread/c186bf45 - -This release also changes the implementation of the priority-ceiling mutex in the preemptive built-in kernels: QK and QXK. Specifically, the implementation now re-uses the selective scheduler locking mechanism. In this new implementation, the QXMutex of the QXK kernel is much more efficient and lightweight, but it _cannot block_ while holding a mutex. - -Finally, this release changes the QP ports to 3rd-party RTOSes by performing any RTOS operations (like posting events to message queues) outside critical sections. Also the ports have been augmented to support scheduler locking (this feature depends on what's available in the specific RTOSes). - -Changes in detail: - -1. Added scheduler locking to QF_publish_() in qf_ps.c. This feature is added in a portable way, via macros #QF_SCHED_STAT_TYPE_, QF_SCHED_LOCK_() and QF_SCHED_UNLOCK_(), which need to be implemented in every QP port. - -2. Modified QV kernel to provide (dummy) implementation of selective scheduler locking. - -3. Modified QK kernel to implement selective scheduler locking via modified priority-ceiling mutex QMutex. - -4. Modified QXK kernel to implement selective scheduler locking via modified priority-ceiling mutex QXMutex. - -5. Modified embOS port to provide (global) scheduler locking, which affects all priorities, because that's all embOS supports. Also, modified the embOS port to perform event posting outside the QF critical section. - -6. Modified uC/OS-II port to provide (global) scheduler locking, which affects all priorities, because that's all uC/OS-II supports. Also, modified the uC/OS-II port to perform event posting outside the QF critical section. - -7. Modified ThreadX port to provide selective scheduler locking, by means of "priority-threshold" available in ThreadX. Also, modified the ThreadX port to perform event posting outside the QF critical section. - -8. Changed the ThreadX example to run on ARM Cortex-M4 board (STM32DiscoveryF4), instead of Win32 emulation (see qpc/examples/threadx/arm-cm/dpp_stm32f429-discovery). - -9. Modified the Win32 port to provide (global) scheduler locking, which is implemented by Win32 critical section. - -10. Fixed Bug#122 (QP didn't initiate some internal variables) https://sourceforge.net/p/qpc/bugs/122/ by adding explicit clearing of all QP variables in QF_init(). - -11. Modified the POSIX port to dummy-out scheduler locking. This means that this port currently does NOT lock scheduler around event publishing. (At this point it is not clear how to implement POSIX scheduler locking in a portable way.) - -12. Modified QK and QXK examples in qpc/examples/arm-cm/dpp_ek-tm4c123gxl to demonstrate the usage of the new priority-ceiling mutexes. - -13. Fixed the 3rd-party file startup_stm32l32l1xx.c to include exceptions for Cortex-M3 (MemManage_Handler, BusFault_Handler, and UsageFault_Handler). - -14. Updated the 3rd-party files for the EK-TM4C123GXL board (TivaC LaunchPad). - -15. Modified Makefiles for the EK-TM4C123GXL board with GNU-ARM toolset to define the symbol TARGET_IS_TM4C123_RB1 for compatibility with the updated 3rd-party files. - -16. Implemented Feature Request #110 as well as the duplicate Request #62 by adding function QActive_flushDeferred() +The main purpose of this release is to introduce _atomic event multicasting_, meaning that event publishing to all subscribers is now protected from preemption. This eliminates potential for re-ordering of events under preemptive kernels (such as QK, QXK, or 3rd-party RTOSes), when events are published from low-priority AOs and some higher-priority subscribers can preempt multicasting and post/publish events of their own (before the original event is posted to all subscribers). + +The atomic event multicasting is implemented by means of selective scheduler locking--very much like a priory-ceiling mutex. During event multicasting the scheduler gets locked, but only up to the highest-priority subscriber to a given event. The whole point here is that active objects with priorities above such "priority ceiling" are _not_ affected. Please see the discussion thread: + +https://sourceforge.net/p/qpc/discussion/668726/thread/c186bf45 + +This release also changes the implementation of the priority-ceiling mutex in the preemptive built-in kernels: QK and QXK. Specifically, the implementation now re-uses the selective scheduler locking mechanism. In this new implementation, the QXMutex of the QXK kernel is much more efficient and lightweight, but it _cannot block_ while holding a mutex. + +Finally, this release changes the QP ports to 3rd-party RTOSes by performing any RTOS operations (like posting events to message queues) outside critical sections. Also the ports have been augmented to support scheduler locking (this feature depends on what's available in the specific RTOSes). + +Changes in detail: + +1. Added scheduler locking to QF_publish_() in qf_ps.c. This feature is added in a portable way, via macros #QF_SCHED_STAT_TYPE_, QF_SCHED_LOCK_() and QF_SCHED_UNLOCK_(), which need to be implemented in every QP port. + +2. Modified QV kernel to provide (dummy) implementation of selective scheduler locking. + +3. Modified QK kernel to implement selective scheduler locking via modified priority-ceiling mutex QMutex. + +4. Modified QXK kernel to implement selective scheduler locking via modified priority-ceiling mutex QXMutex. + +5. Modified embOS port to provide (global) scheduler locking, which affects all priorities, because that's all embOS supports. Also, modified the embOS port to perform event posting outside the QF critical section. + +6. Modified uC/OS-II port to provide (global) scheduler locking, which affects all priorities, because that's all uC/OS-II supports. Also, modified the uC/OS-II port to perform event posting outside the QF critical section. + +7. Modified ThreadX port to provide selective scheduler locking, by means of "priority-threshold" available in ThreadX. Also, modified the ThreadX port to perform event posting outside the QF critical section. + +8. Changed the ThreadX example to run on ARM Cortex-M4 board (STM32DiscoveryF4), instead of Win32 emulation (see qpc/examples/threadx/arm-cm/dpp_stm32f429-discovery). + +9. Modified the Win32 port to provide (global) scheduler locking, which is implemented by Win32 critical section. + +10. Fixed Bug#122 (QP didn't initiate some internal variables) https://sourceforge.net/p/qpc/bugs/122/ by adding explicit clearing of all QP variables in QF_init(). + +11. Modified the POSIX port to dummy-out scheduler locking. This means that this port currently does NOT lock scheduler around event publishing. (At this point it is not clear how to implement POSIX scheduler locking in a portable way.) + +12. Modified QK and QXK examples in qpc/examples/arm-cm/dpp_ek-tm4c123gxl to demonstrate the usage of the new priority-ceiling mutexes. + +13. Fixed the 3rd-party file startup_stm32l32l1xx.c to include exceptions for Cortex-M3 (MemManage_Handler, BusFault_Handler, and UsageFault_Handler). + +14. Updated the 3rd-party files for the EK-TM4C123GXL board (TivaC LaunchPad). + +15. Modified Makefiles for the EK-TM4C123GXL board with GNU-ARM toolset to define the symbol TARGET_IS_TM4C123_RB1 for compatibility with the updated 3rd-party files. + +16. Implemented Feature Request #110 as well as the duplicate Request #62 by adding function QActive_flushDeferred() + - ------------------------------------------------------------------------------ @section qpc_5_6_1 Version 5.6.1, 2016-01-01 This release is the first official (production) release of the new blocking @ref qxk "QXK" kernel. @@ -270,7 +322,7 @@ Changes in detail: 2. Corrected example projects for the ARM Cortex-M with TI/CCS toolset ------------------------------------------------------------------------------- +------------------------------------------------------------------------------ @section qpc_5_6_0 Version 5.6.0-beta, 2015-12-24 The main purpose of this *beta* release is to introduce a new component of the QP/C framework called @ref qxk "QXK" ("eXtended Quantum Kernel"). QXK is a small, preemptive, priority-based, **blocking** kernel that provides most features you might expect of a traditional blocking RTOS kernel. @@ -312,63 +364,63 @@ Changes in detail: 11. Updated Makefiles for GNU-ARM to use the __ARM_ARCH macro for defining the ARM architecture. 12. Updated CMSIS from 4.2 to 4.3 in qpc/3rd-party/CMSIS - - + + ------------------------------------------------------------------------------ @section qpc_5_5_1 Version 5.5.1, 2015-10-05 -The main focus of this release is to improve the AAPCS compliance of the -ARM Cortex-M port to the QK preemptive kernel. Specifically, the PendSV -handler in assembly did not always maintain the 8-byte stack alignment, -which is required by AAPCS. This version corrects the stack misalignment -in the qk_port.s files for all supported ARM compilers (ARM-Keil, GNU, -IAR, and TI CCS). All these ports should also be ready for ARM Cortex-M7. - -Also, this release adds support for the TI CCS ARM compiler. -Specifically, a new ARM Cortex-M ports have been added (in directories -`qpc\ports\arm-cm\qk\ti\` and `qpc\ports\arm-cm\qk\ti\`) and TI CCS -example projects have been provided (in directories -`qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qk\ti\` and -`qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qv\ti\`). - -Finally, this release corrects a bug in the DPP example for -EK-TM4C123GXL with the QV (Vanilla) cooperative kernel. Specifically, -the file `qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qv\bsp.c` did not -re-enable interrupts in the QV_onIdle() callback. - - +The main focus of this release is to improve the AAPCS compliance of the +ARM Cortex-M port to the QK preemptive kernel. Specifically, the PendSV +handler in assembly did not always maintain the 8-byte stack alignment, +which is required by AAPCS. This version corrects the stack misalignment +in the qk_port.s files for all supported ARM compilers (ARM-Keil, GNU, +IAR, and TI CCS). All these ports should also be ready for ARM Cortex-M7. + +Also, this release adds support for the TI CCS ARM compiler. +Specifically, a new ARM Cortex-M ports have been added (in directories +`qpc\ports\arm-cm\qk\ti\` and `qpc\ports\arm-cm\qk\ti\`) and TI CCS +example projects have been provided (in directories +`qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qk\ti\` and +`qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qv\ti\`). + +Finally, this release corrects a bug in the DPP example for +EK-TM4C123GXL with the QV (Vanilla) cooperative kernel. Specifically, +the file `qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qv\bsp.c` did not +re-enable interrupts in the QV_onIdle() callback. + + ------------------------------------------------------------------------------ @section qpc_5_5_0 Version 5.5.0, 2015-09-04 -The main purpose of this release is the extension of the QS software tracing system to bi-directional communication with embedded Targets. Specifically, the QS-RX (receive channel for QS) has been added with the following capabilities: - -1. Set global QS filters inside the Target - -2. Set local QS filters inside the Target - -3. Inject an arbitrary event to the Target (direct post or publish) - -4. Execute a user-defined callback function inside the Target with arguments supplied from QSPY - -5. Peek data inside the Target and send to QSPY - -6. Poke data (supplied from QSPY) into the Target - -7. Execute clock tick inside the Target - -8. Request target information (version, all sizes of objects, build time-stamp) - -9. Remotely reset of the Target - - -This QP/C version complements the recent release of Qtools 5.5.0, where the QSPY host application has been extended with a UDP socket, which is open for communication with various Front-Ends (GUI-based or headless). An example Front-End written in Tcl/Tk called "QspyView" has been developed to demonstrate all the features. The example application located in the directory qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qspy contains customization of the "qspyview" script for the DPP application. Please refer to the documentation of this example (@ref arm-cm_dpp_ek-tm4c123gxl) for more information. +The main purpose of this release is the extension of the QS software tracing system to bi-directional communication with embedded Targets. Specifically, the QS-RX (receive channel for QS) has been added with the following capabilities: + +1. Set global QS filters inside the Target + +2. Set local QS filters inside the Target + +3. Inject an arbitrary event to the Target (direct post or publish) + +4. Execute a user-defined callback function inside the Target with arguments supplied from QSPY + +5. Peek data inside the Target and send to QSPY + +6. Poke data (supplied from QSPY) into the Target + +7. Execute clock tick inside the Target + +8. Request target information (version, all sizes of objects, build time-stamp) + +9. Remotely reset of the Target + + +This QP/C version complements the recent release of Qtools 5.5.0, where the QSPY host application has been extended with a UDP socket, which is open for communication with various Front-Ends (GUI-based or headless). An example Front-End written in Tcl/Tk called "QspyView" has been developed to demonstrate all the features. The example application located in the directory qpc\examples\arm-cm\dpp_ek-tm4c123gxl\qspy contains customization of the "qspyview" script for the DPP application. Please refer to the documentation of this example (@ref arm-cm_dpp_ek-tm4c123gxl) for more information. Finally, this release adds a state machine operation for implementing the shallow history mechanism. The operation is called "childState", because it computes a child state of a given parent, such that the child belongs to the same state hierarchy as the current state. - -Changes in detail: - + +Changes in detail: + 1. Modified the QS software tracing component to add new functionality, such as the QS-RX input channel. Also added new trace records. @@ -400,8 +452,8 @@ Q_onAssert() for each specific project. 9. Replaced deprecated registers in TM4C (TivaC) projects (SYSCTL->RCGCGPIO rather than the deprecated SYSCTL->RCGC2). - - + + ------------------------------------------------------------------------------ @section qpc_5_4_2 Version 5.4.2, 2015-06-04 @@ -429,7 +481,7 @@ Changes in detail: 8. Updated all Windows examples to the latest QP API by compiling the code with the macro #QP_API_VERSION set to 9999 (latest API without backwards compatibility) -9. Improved the PC-Lint support for checking the application-level code located in in `examples\arm-cm\dpp_ek-tm4c123gxl\lint` +9. Improved the PC-Lint support for checking the application-level code located in in `examples\arm-cm\dpp_ek-tm4c123gxl\lint` ------------------------------------------------------------------------------ @@ -455,10 +507,10 @@ Also, this release brings several cosmetic improvements: 6. The file display drver for the EK-LM2S811 board locate at `qpc/3rd_party/ek-lm3s811/display96x16x1.c` has been modified to fix the problem with incorrect hardware delay with the GNU compiler at higher levels of optimization. The in-line assembly for the GNU compiler has been updated such that the delay loop cannot be "optimized away". 7. Several README files have been updated. - + ------------------------------------------------------------------------------ -@section qpc_5_4_0 Version 5.4.0, 2015-04-26 +@section qpc_5_4_0 Version 5.4.0, 2015-04-26 This release changes the basic philosophy of distributing the QP frameworks by **combining** the "QP/C Baseline Code" with all currently available "QP/C Development Kits" (QDK/C). This is done to eliminate any potential mistakes in downloading and installing separate pieces of code. @@ -516,599 +568,599 @@ Changes in detail: 15. Updated the @ref lwip_ek-lm3s6965 "lwIP-QP example for EK-LM3S6965 board". - ------------------------------------------------------------------------------- -@section qpc_5_3_1 Version 5.3.1, 2014-09-19 - -@note QP/C 5.3.1 remains backwards-compatible with all QP/C ports and -applications -This release fixes the following bugs: - -1. QMsm_isInState() returns invalid result (bug #105) - -2. QP/C syntax error in qf_pkg.h (bug #104) - -3. QF_gc() doc typo (bug #102) - -4. POSIX-port Makefile error (bug #65) - - -Additionally, this release improves the uC/OS-II port in that it is now generic and applicable for any CPU, for which uC/OS-II port exists. Specifically, all references to DOS or x86 have been removed from the QP port and any CPU-specific dependencies have been placed in the separate part of the port. - -Finally, this release improves the "QP/C Reference Manual" generated by Doxygen and available both inside the QP/C baseline distribution (qpc.chm file) and online at: http://www.state-machine.com/qpc - - ------------------------------------------------------------------------------- +------------------------------------------------------------------------------ +@section qpc_5_3_1 Version 5.3.1, 2014-09-19 + +@note QP/C 5.3.1 remains backwards-compatible with all QP/C ports and +applications + +This release fixes the following bugs: + +1. QMsm_isInState() returns invalid result (bug #105) + +2. QP/C syntax error in qf_pkg.h (bug #104) + +3. QF_gc() doc typo (bug #102) + +4. POSIX-port Makefile error (bug #65) + + +Additionally, this release improves the uC/OS-II port in that it is now generic and applicable for any CPU, for which uC/OS-II port exists. Specifically, all references to DOS or x86 have been removed from the QP port and any CPU-specific dependencies have been placed in the separate part of the port. + +Finally, this release improves the "QP/C Reference Manual" generated by Doxygen and available both inside the QP/C baseline distribution (qpc.chm file) and online at: https://www.state-machine.com/qpc + + +------------------------------------------------------------------------------ @section qpc_5_3_0 Version 5.3.0, 2014-03-31 - -This release adds the "transition to history" (deep history) feature to -both QHsm and QMsm state machines and their subclasses. This QP/C -release matches the new QM modeling tool version 3.1.0, which now -supports the "transition to history" connector and the corresponding -code generation for transitions to history. - -@note QP/C 5.3.0 remains backwards-compatible with QP/C applications -developed for QP/C 4.x and QP/5.x. However, any QM models created for -the previous QP/C versions require re-generating the code with QM 3.1.0. - -This release adds new QS (Quantum Spy) instrumentation for tracing -transitions to history as well as entry and exit points in submachines. -All these features require the matching QSPY host application included -in Qtools 5.3.0. - -Additionally, the QMsm state machine has been extended to add -implementation of the reusable submachine states and submachines with -entry points and exit points. The reusable submachines in QP/C 5.3.0 lay -the groundwork for providing reusable submachine states and submachine -diagrams in the next upcoming QM version. - -This release also goes several steps towards compliance with the new -MISRA-C:2012 rules. For example, unused tag declarations have been -removed (MISRA-C:2012 Rule 2.4), the C99 standard Boolean data type in -