Segger Logo Embedded Software Solutions
Software productsHardware productsDownloadsPricesCustomersOur PartnersSitemapForumAbout us
Release notes embOS version 3.60a1 for PIC24/PIC30 and Microchip MPLAB
  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:  Microchip C30   V3.02c
Assembler: Microchip ASM   V3.01
Librarian: Microchip AR    V3.01
Workbench: Microchip MPLAB IDE V8.01

New features

Version 3.60a

  1. embOS trial versions may run an unlimited number of tasks.
    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

  1. OS_AddTickHook() and OS_RemoveTickHook() implemented.
    These new functions allow the application to add and remove user function calls (hook functions) to the OS timer tick handler.

Version 3.52d

    BSP for dsPIC33F added.

Version 3.32g

    First version. None.

Improvements

Version 3.60

  1. OS_GetVersion() implemented as function
    OS_GetVersion() may be used by the application to retrieve the embOS library version. The result may be used to verify whether the library version matches the embOS header file RTOS.h.

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

  1. OS_TickHandler() and OS_TickHandler_Ex() removed.
    These two functions are obsolete, because they can be replaced by OS_HandleTick() and OS_HandleTick_EX(), if OS_EnterInterrupt() / OS_LeaveInterrupt is used in the interrupt handler.

Version 3.50c

  1. OS_GetTime32() optimized for 32bit CPUs
    For 32bit CPUs, OS_GetTime32() is now automatically replaced by an efficient macro which delivers value of the embOS internal time variable.
    In previous versions of embOS, a function was called, when it was not over-written in the CPU specific part of the OS header file.

Version 3.50b

  1. Internal optimizations
    Some internal optimizations were performed to optimize task switching time and interrupt latencies.

Version 3.50b

  1. Internal optimizations
    Some internal optimizations were performed to optimize task switching time and interrupt latencies.

Version 3.50

  1. Scheduler optimized
    The embOS scheduler was optimized to reduce task switching time and interrupt latencies.

Version 3.40d

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

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.
    The counters of counting semaphores are now integer values.
    Error handling is also improved. When a counting semaphore overflows, the embOS error handler OS_Error() is called in debug builds.

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

    First version. None.

Program corrections

Version 3.60a1

    Fixed embOS assembler part.
    The embOS assembler part used a assembler command that can only address up to adress 0x2000.
    This assembler command is replaced, therefore embOS variables can be placed everywhere in memory.

Version 3.60a

    C30 Compiler issue solved.
    The Microchip C30 compiler has a bug. When we set a function pointer to a unsigned long,
    the compiler uses a arithmetic shift, which causes embOS to return to a a undefined address,
    if the function pointer address is above 0x8000.

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_Terminate() for XR-build corrected.
    OS_Terminate() in XR-builds might have failed and the system stuck in an endless loop.
    All other library modes were not affected.

Version 3.50a

  1. System stack check corrected
    The system stack check failed in the case the system stack grows from lower addresses to higher addresses.
    In this case, the system stack was not correctly filled with the stack check pattern.
    The problem existed for embOS for PIC only and is fixed with version 3.50a.

Version 3.40d

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

    embOSView stack check problem fixed.
    The system stack was not filled correctly with the stack check pattern.
    The system stack information functions OS_GetSysStackBase() and OS_GetSysStackSize() are now part of rtos.s and return the correct values.

Version 3.32g

    None.

Known problems/limitations

Version 3.32g

    None.

Release history

Version Release date Short explanation
V3.60a1 06. Mar 2008 Fixed embOS assembler part.
V3.60a 03. Mar 2008 C30 Compiler issue solved.
V3.52d 31. Oct 2007 BSP for dsPIC33F added.
V3.32h1 12. July 2007 Fixed embOSView stackcheck.
V3.32g 22. Jan 2007 First version with release history

Miscellaneous

This document was first released with version 3.32g 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: December 7, 2007