Release notes for embOS Version 3.40 Cortex M3 and KEIL ARM MDK

  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:  ARM/Thumb C/C++ Compiler,  RVCT3.0 for uVision [Build 951]
        Assembler: ARM/Thumb Macro Assembler, RVCT3.0 for uVision [Build 951]
        Librarian: ARM Archiver,              RVCT3.0 for uVision [Build 951]
        Workbench: KEIL uVision3 Version 3.51
      

New features

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.

Version 3.32o

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

Version 3.32m

  1. 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. OS_CSemaRequest implemented
    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

    All features of generic 3.32f kernel supported.

Improvements

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.32i

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

Version 3.32g

  1. 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.32f

    First version. None.

Program corrections

Version 3.32o

  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().

Version 3.32l

  1. 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.
  2. 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.

Version 3.32k

  1. 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.32h

  1. OS_Error() was required in release build when resource semaphores were used.
    When using release build libraries and resource semaphores, the embOS error handler OS_Error() was required and the file OS_Error.c had to be compiled and linked in a project.
    The problem existed since version 3.28i of embOS and is fixed with version 3.32h.

Version 3.32f

    First version. None.

Known problems/limitations

Version 3.32f

    First version. None.

Release history

Version Release date Short explanation
V3.40 25. May 2007 Initial version for Cortex M3
Start projects for LM3S6965 and LM3S6965. New embOS sources 3.40.
V3.32f 18. Dec 2006 First version with release history

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 2001-2007 SEGGER Microcontroller Systeme GmbH. All rights reserved.
For more information, please visit our website www.segger.com or contact us at info@segger.com