Release notes for embOS Version 4.04a for ARM KEIL 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 armcc,   5.05 (build 41)
Assembler: ARM/Thumb Macro Assembler armasm, 5.05 (build 41)
Librarian: ARM Archiver armar,               5.05 (build 41)
Workbench: KEIL uVision3 Version 5.12
      

New features

Version 4.04a

  1. Update to latest embOS generic sources.

Version 4.04

  1. Update to latest embOS generic sources.

Version 4.02a

  1. Update to latest embOS generic sources.
  2. Support for Cortex R4F and VFPv3 added.
  3. Start project for TI RM46L852 added.

Version 3.86e

  1. Update to latest embOS generic sources.

Version 3.62c

  1. J-Link DCC added
    embOS profiling works with J-Link DCC.

Version 3.62a

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

  1. OS_TICK_Config() and OS_TICK_HandleEx() implemented
    The extended embOS tick handler was modified to handle a runtime configurable tick increment and fractions.
    These paramter are setup by the new OS_TICK_Config() function and may be re configured during runtime.

Version 3.60d1

  1. LPC2378 supported
    embOS for KEIL MDK now comes with a board support package for the NXP LPC 2378 device.
    It runs on an KEIL MCB2300 eval board, but may be used with other hardware as well.

Version 3.60d

  1. LPC2468 supported
    embOS for KEIL MDK now comes with a board support package for the NXP LPC2468 device.
    It runs on an embedded Artists eval board, but may be used with other hardware as well.
  2. New embOS sources version 3.60d
    embOS version 3.60d offers several new features which are described in the embOS generic manual.

Version 3.52a

  1. AT91M55800 supported
    embOS for KEIL MDK now comes with a board support package for the ATMEL AT91EB55 eval board which may also be used for other target boards with the AT91M55800 CPU.
    Debugging in RAM, Flash and simulator is supported.

Version 3.32f

    All features of generic 3.32f kernel supported.

Improvements

Version 3.62c

  1. New error code OS_ERR_IDLE_RETURNS
    The debug version of embOS now checks whether OS_Idle() returns in which case OS_Error() is called with the new error code.
    OS_Idle() has to be implemented as an endless loop and must never return. If OS_Idle() is modified and returns by accident, the behavior is unpredictable and this error might be difficult to find.
    The new version of embOS now catches a return from OS_Idle() and calls OS_Error().

Version 3.62b

  1. New error code OS_ERR_ISR_NO_HANDLER
    The new error code is generated and OS_Error() is called, if an un-initialized interrupt handler is called.
    This error handling is available on some ports of embOS, especially those, where embOS initializes an interrupt vector table in RAM.
    During intialization, a default dummy handler is installed for all interrupt sources. This handler should normally be replaced by installing application specific interrupt handlers.
    Because the default dummy interrupt handler should never be called by an application, it calls OS_Error() with the new error code OS_ERR_ISR_NO_HANDLER to signal the setup error.

Version 3.62

  1. Internal representation of scheduler states modified.
    The states which control panding task switches and show the reason of the task switch are handled in compact structure now.
    The previous version used bit fields and definitions which were difficult to understand and which were difficult to handle.
    The new definition and structure is easier to handle which results in faster code execution.

Version 3.60e

  1. OS_ERR_WRONG_STACK error code added.
    Some ports of embOS for CPUs with different stack pointers require that the CPU enters main() with a specific stack selected.
    These ports of embOS now contain code to examine the stack used in main and call OS_error() with the new error code OS_ERR_WRON_STACK, if the startup code entered main with the wrong stackpointer selected.

Version 3.60d1

  1. RAM.ini files for RAM targets improved
    The debugger does not automatically set the CPU into its initial reset state after downloading an application into the target.
    The new RAM.ini files disables IRQ and FIQ and switches the CPU into supervisor mode after download.
    Without this improvement, the RAM target might run into uninitialized interrupt handlers if an application in Flash or RAM was activated before the debug session and peripherial interrupts were enabled.

Version 3.52c

  1. embOS interrupt handler source file RTOSVECT.s eliminated.
    Because the embOS primary interrupt handler is generic for all ARM cores and not target CPU specific, there was no need to place the interrupt handler function into a separate source file.
    The embOS interrupt handler is now included in the embOS libraries. The start projects are therfore simplified and the embOS interrupt handler is always included in the project.

Program corrections

Version 4.04

  1. VFP support corrected.
    The VFP routines could overwrite the task stack by mistake.

Version 3.62c

  1. OS_GetPriority() corrected.
    In OS_GetPriority() was called with NULL as paramter, the debug version of embOS called OS_Error() with error code OS_TASK_INV.
    The NULL pointer is allowed now and the function delivers the priority of the running task as described in the documentation.
    This error existed in all previous versions of embOS and is fixed with version 3.62c.

Version 3.60e

  1. OS_EVENT_Create() corrected.
    OS_EVENT_Create() might have called the errorhandler OS_Error() with errorcode OS_ERR_2USE_EVENTOBJ if an Eventobject was created dynamically or as a local obejct in a function.
    This happened, if the un-initialized data area of the event object contained one specific byte (id code) of the event object.
    The problem existed in all previous embOS versions and is fixed with version 3.60e.
  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.52c

  1. Task switch from interrupt corrected.
    The previous version failed when a preemptive task switch from interrupt should be performed.
    The debug libraries called the error handler OS_Error() with error code 0xff, the release version might have crashed, if another interrupt occurred during the task switch.
    The problem existed in Version 3.52a only and is fixed with version 3.52c.

Known problems/limitations

Version 3.60d

    None.

Release history

Version Release date Short explanation
V4.04a 02. Dec 2014 Update to latest embOS generic sources V4.04a.
V4.04 20. Nov 2014 Update to latest embOS generic sources V4.04.
VFP support corrected.
V4.02a 06. Nov 2014 Update to latest embOS generic sources.
Support for Cortex R4F and VFPv3 added.
Start project for TI RM46L852 added.
V3.86e 13. Jun 2012 New embOS generic sources V3.86e.
V3.62c 30. Oct 2008 New embOS sources V3.62d.
J-Link DCC added.
V3.60d1 24. Jul 2008 LPC2378 supported.
V3.60d 01. Jul 2008 New embOS sources V3.60d.
V3.52c 26. Oct 2007 Corrected version.
V3.52a 28. Sep 2007 Update to embOS version 3.52a.
AT91M55800 supported.
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-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