Segger Logo Embedded Software Solutions
Software productsHardware productsDownloadsPricesCustomersOur PartnersSitemapForumAbout us
Release notes embOS version 3.28q for NIOS2 and NIOS IDE

Release notes for embOS Version 3.28q for NIOS5, V1.1 and NIOS2 IDE

Last Updated: 2006-02-17 [AW] V3.28q

  1. Tool chain used for build
  2. Performance
  3. New features
  4. Improvements
  5. Program corrections
  6. Known problems / Limitations
  7. Release history
  8. Miscellaneous

Tool chain used for build

The following tools have been used:

Compiler: NIOS2 GNU Assembler: NIOS2 GNU Librarian: NIOS2 GNU Workbench: NIOS2 IDE

Performance

  1. Task switch time
    tbd
  2. Interrupt latency
    tbd

New features

Version 3.28p

  1. New error handling for version without round robin scheduling
    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 errorcode, if a task priority is assigned by call of OS_SetPriority() and the new pririty 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.28n

  1. embOS library version available
    Now, embOS for NIOS II comes as library version which speeds up project compilation.

Version 3.28l

  1. OS_SignalCSemaMax()
    New counting semaphore handling function which specifies a maximum count value.
    This allows counting semaphores used as binary semaphores.

Version 3.28i

  1. OS_DeleteRSema()
    New resource semaphore handling function allows to delete resource semaphores during runtime.

Version 3.28h

  1. Additional error checks in debug builds of embOS
    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 fixed size memory pool was already created before.

Version 3.28g

  1. OS_GetSuspendCnt()
    New info function to examine suspension state and suspension count of a task.

Version 3.26

  1. Update for new NIOS2 V1.1
    Modified version of ALTERA HAL API functions required an update of embOS for NIOS2 V1.1
  2. OS_Terminate() modified
    Task may be terminated anytime, regardless of task state.
    All resources claimed by the terminated task are automatically released.

Version 3.22a

  1. OS_PutMailFront() / OS_PutMailFront1
    New mailbox functions to enable LIFO behavior of mailboxes.
  2. OS_PutMailFrontCond() / OS_PutMailFrontCond1()
    New conditional mailbox functions to enable LIFO behavior of mailboxes.

Version 3.20

  1. NONE.
    Initial release.

Improvements

Version 3.28q

  1. Separate exception stack may be activated to reduce task stack size.
    Since version 3.28q of embOS, the system library option "Use a separate exception stack" may be enabled.
    This has the advantage, that exceptions do not use system or task stack and may reduce the required amount of RAM for task staks drastically.

Version 3.28n

  1. embOS round-robin scheduling may be disabled.
    Round-robin scheduling may be disabled by recompiling sources with OS_RR_SUPPORTED defined as 0.
    This will save some bytes of RAM and ROM and may make sense for small CPUs.

Version 3.28g

  1. embOS scheduling simplified
    Task activation and deactivation on "waitable objects" as mailboxes, semaphores, events, fixed size memory blocks now all use the same scheduling method.
    This modification saves ROM and RAM and makes scheduler easier to understand and to maintain.
    Applications which accessed internal data structures of waitable objects directly have to be modified.

Version 3.26

  1. NONE

Program corrections

Version 3.28q

  1. Problem with suspended tasks which were on delay fixed.
    If a task which was on delay was suspended, the delay timer for that task was not handled.
    This might have resulted in additional longer delay when the task was resumed later.
    This problem existed in all previous embOS versions and is fixed with version 3.28q.
  2. OS_EnterNestableInterrupt() / OS_LeaveNestableInterrupt() corrected.
    For NIOS 2 CPU using standard interrupt handler from ALTERA HAL, OS_EnterNestableInterrupt did not re-enable interrupts correctly.
    When an embOS function was called from within an interrupt handler which used OS_EnterNestableInterrupt(), the embOS function returned with interrupts disabled.
    This problem existed in all previous embOS versions for NIOS 2 and is fixed with version 3.28q.

Version 3.28p

  1. OS_Suspend() corrected.
    OS_Suspend() did not work corretly, when the current task was suspended from within an interrupt handler, or from a critical region.
    The application crashed, or called the embOS error handler OS_Error() with error code OS_ERR_INV_TASK (128).
    As OS_Suspend() automatically enters a critical region in debug-trace builds, OS_Suspend() also failed, when it was called to suspend the current task in debug-trace builds of embOS.
    This problem existed in all previous embOS versions and is fixed with version 3.28p.
  2. OS_UART interupt handler for embOSView corrected.
    The interrupt handler for communication between embOS and embOSView was corrected.
    The previous version wasted some time inside the interrupt which could slow down the application and increased latency of other interrupts.
    This problem existed in all previous embOS versions and is fixed with version 3.28n.

Version 3.28l

  1. OS_MEMF_Free() added
    The function OS_MEMF_Free() was not included in embOS libraries, but was documented in embOS users manual and was also declared in RTOS.h.
    This problem existed in all previous embOS versions and is fixed with version 3.28l.

Version 3.28k

  1. OS_MEMF_IsInPool() corrected
    OS_MEMF_IsInPool() failed, if a pointer was checked which pointed to the first address after the memory pool. This pointer was reparted as belonging to the pool.
    This problem existed in all previous embOS versions and is fixed with version 3.28g.

Version 3.28g

  1. OS_WakeTask() for trace build corrected
    OS_WakeTask() in trace build disabled task switches.
    This problem existed since version 3.24 and is fixed with version 3.28g.
  2. OS_GetMailTimed() / mailbox handling corrected
    During call of OS_GetMailTimed, interrupts were re-enabled too early. If a mail was just put into a mailbox and the timeout occured at the same time, a mailbox internal control variables which managed waiting tasks was set to a wrong value.
    This resulted in wrong mailbox handling and caused task waiting for mail kept suspended, even though, mail was available. This problem existed in all previous versions of embOS and is fixed with version 3.28g.

Version 3.26a

  1. OS_MEMF_Release() corrected
    OS_MEMF_Release() might have failed according to absolute address of memory block.
    The problem occured because address calculation was done with 16bit interger value.
    Calculation was modified to use 32bit values to fix the problem.

Version 3.26

  1. NONE

Known problems / Limitations

Version 3.28q

  1. NONE

Release history

Version Release date Short explanation
V3.28q 17. Feb 2006 new embOS sources 3.28q, corrected version
V3.28n 06. Feb 2006 embOS libraries available
V3.28l 09. Nov 2005 new embOS sources 3.28l, corrected version
V3.26 09. Feb 2005 Update for NIOS2 V1.1, new embOS sources 3.26
V3.22 01. Nov 2004 Initial release

Miscellaneous

This document was first released with version 3.26 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