Segger Logo Embedded Software Solutions
Software productsHardware productsDownloadsPricesCustomersOur PartnersSitemapForumAbout us
Release notes embOS version 3.60a for Cortex M3 and IAR compiler V4.42
  1. Tool chain used for build
  2. New features
  3. Improvements
  4. Program corrections
  5. Known problems/limitations
  6. Release history
  7. Miscellaneous

Tool chain used for build

The following tools have been used:

Compiler:  IAR ICCARM  V4.42A
Assembler: IAR AARM    V4.42A
Librarian: IAR XAR     V1.03L
Workbench: IAR IARIDE  V4.8

New features

Version 3.60a

  1. Update to embOS sources 3.60a
    embOS comes with several new features which are explained in the generic release notes and manual.

Version 3.52e2

  1. BSP for IAR STM-SK Eval board added.
    The Start project and board support package for STM32F10 supports now also
    the IAR STM32-SK eval board.

Version 3.52c

  1. OS_SetTaskName() introduced
    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

  1. Luminary Micro LM3S1968 CPU support
    Start project and board support package for LM3S1968 CPUs added.
  2. Luminary Micro LM3S8962 CPU support
    Start project and board support package for LM3S8962 CPUs added.
  3. Task switch time can be measured by application
    embOS now comes with sample applications which allow accurate measurement of task switch time in a running application.

Version 3.40c

  1. OS_Yield() may suspend a task unconditionally
    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.
  2. UART and PLL added
    Uart and PLL initialization to BSP added.

Version 3.40a

  1. New BSP for STM32F10 added.
    embOS now comes with board support package for STM32F10.

Version 3.40

  1. Task switch time can be measured by application
    embOS now comes with sample applications which allow accurate measurement of task switch time in a running application.
  2. Automatic call of OS_INIT_SYS_LOCKS() removed.
    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.
  3. OS_TimerEx, Extended timer implemented
    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

  1. Initial version for Cortex M3

Improvements

Version 3.52e

  1. All embOS variables located in one module.
    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

  1. Scheduler optimized
    The embOS scheduler was optimized to reduce task switching time and interrupt latencies.
  2. OS_Yield() now writes an entry into the trace buffer
    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.
  3. Task switch to OS_Idle() modified.
    The call of OS_Idle() from OS_ChangeTask can be overwritten (inhibited) by defining the macro OS_IDLE() which is norammly defined as OS_Idle().
    This allows task switching via an exception for specific CPU/compiler versions.
  4. Pointer comparison improved for fixed size memory pools (OS_MEMF module).
    Some compiler produced wrong pointer comparison code in far memory model.
    For specific CPU/compiler versions, the new OS_POINTER_TO_VALUE() function was inroduced to deliver correct results in pointer comparison.

Version 3.40b

  1. Queue management improved.
    For some CPUs, the buffer start address for Queues has to be aligned. Now embOS automatically corrects the alignment, if required.

Version 3.40a

  1. Counting semaphores improved.
    Counting semaphores are now int values and a overflow will be catched, so that embOS runs into OS_Error().

Version 3.40

  1. Task switch time improved.
    Scheduling optimized to improve task switch time.
  2. Task switch time improved for task events.
    Task event handling modified to improve task switch time for tasks waiting on events.
  3. Interrupt latency improved.
    During task switch, the time period when interrupts are disabled is reduced.
  4. embOS timer tick handler improved.
    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 inctrements may be configured by a call of OS_CONFIG().

Version 3.32j

  1. NONE, initial version for Cortex M3.

Program corrections

Version 3.52e2

  1. Batch file for generating libraries corrected.
    The batch did not build the release library for big endian CPUs.

Version 3.52e1

  1. OS_TaskEx corrected
    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

  1. Interrupt table in RAM corrected
    Variable interrupt table in RAM did not work correct.

Version 3.52b

  1. OS_SendString() corrected.
    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.
  2. embOSView corrected.
    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

  1. OS_Suspend() corrected
    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

  1. OS_Unuse() corrected
    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().
  2. OS_EVENT_Delete() corrected
    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 inhibts 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.
  3. Round-robin task switching corrected.
    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.
  4. Handler function _OS_OnTx() for serial communication to embOSView corrected.
    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 occured on a new embOS port for a specific CPU only and is fixed with version 3.32k.

Version 3.32j

  1. NONE, initial version for Cortex M3.

Known problems/limitations

Version 3.52

  1. NONE.

Version 3.40

  1. NONE.

Version 3.32j

  1. NONE, initial version for Cortex M3.

Release history

Version Release date Short explanation
V3.60a 12. March 2008 Update to new embOS sources 3.60a.
V3.52e2 07. March 2008 BSP for IAR STM-SK Eval board added.
Batch file for generating libraries corrected.
V3.52e1 21. December 2007 OS_TaskEx corrected.
V3.52e 29. November 2007 New generic embOS sources.
Interrupt table in RAM corrected.
V3.52a 17. September 2007 New BSPs for Luminary Micro LM3S1968 and LM3s8962 CPUs.
Scheduler optimized.
Task switch to OS_Idle() modified.
V3.40c 28. June 2007 OS_Yield() implemented.
Uart and PLL for BSP/STM32F10 added.
V3.40a 05. June 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

This document was first released with version 3.32f of the software.
Software released earlier is documented internally. This information is available at request.

Copyright SEGGER Microcontroller GmbH & Co.KG. All rights reserved.
For more information, please visit our web site www.segger.com or contact us at info@segger.com
Last update: March 17, 2008