Specifications written in this document are believed to be accurate, but are not guaranteed to
be entirely free of error. The information in this manual is subject to change for functional or
performance improvements without notice. Please make sure your manual is the latest edition.
While the information herein is assumed to be accurate, SEGGER Microcontroller GmbH (SEGGER) assumes no responsibility for any errors or omissions. SEGGER makes and you receive no
warranties or conditions, express, implied, statutory or in any communication with you. SEGGER
specifically disclaims any implied warranty of merchantability or fitness for a particular purpose.
Copyright notice
You may not extract portions of this manual or modify the PDF file in any way without the prior
written permission of SEGGER. The software described in this document is furnished under a
license and may only be used or copied in accordance with the terms of such a license.
This manual describes the current software version. If you find an error in the manual or a
problem in the software, please inform us and we will try to assist you as soon as possible.
Contact us for further information on topics or functions that are not yet documented.
Print date: February 11, 2021
Software RevisionDateByDescription
3.61210211 MC
3.60201030 MC
3.50200603 MC
3.40200325 MM
3.30191205 MC
3.20191106 MC
3.11180924 MC
3.10180503 MC
3.00170915 MM
New plug-in versions 6.10.3.7, 7.10.3.7, 7.50.3.7, 8.10.3.7, 8.30.3.7, and
9.10.3.7.
New plug-in versions 6.10.3.6, 7.10.3.6, 7.50.3.6, 8.10.3.6, and 8.30.3.6.
New plug-in versions 6.10.3.5, 7.10.3.5, 7.50.3.5, 8.10.3.5, and 8.30.3.5.
New plug-in versions 6.10.3.4, 7.10.3.4, 7.50.3.4, 8.10.3.4, and 8.30.3.4.
New plug-in version 8.30.3.3.
New plug-in versions 6.10.3.2, 7.10.3.2, 7.50.3.2, 8.10.3.2, and 8.30.3.2.
Updated to include most recent versions of IAR embedded workbench and
their compatible plug-ins.
New plug-in versions 6.10.3.1, 7.10.3.1, 7.50.3.1, 8.10.3.1, and 8.30.3.1.
New plug-in versions 6.10.3.0, 7.10.3.0, 7.50.3.0, and 8.10.3.0.
This document assumes that you already have a solid knowledge of the following:
•The software tools used for building your application (assembler, linker, C compiler).
•The C programming language.
•The target processor.
•DOS command line.
If you feel that your knowledge of C is not sufficient, we recommend The C Programming Lan-guage by Kernighan and Richie (ISBN 0--13--1103628), which describes the standard in C programming and, in newer editions, also covers the ANSI C standard.
How to use this manual
This manual explains all the functions and macros that the product offers. It assumes you have
a working knowledge of the C language. Knowledge of assembly programming is not required.
Typographic conventions for syntax
This manual uses the following typographic conventions:
StyleUsed for
BodyBody text.
Keyword
ParameterParameters in API functions.
SampleSample code in program examples.
Sample commentComments in program examples.
Reference
GUIElementButtons, dialog boxes, menu names, menu commands.
EmphasisVery important sections.
Text that you enter at the command prompt or that appears on
the display (that is system functions, file- or pathnames).
Reference to chapters, sections, tables and figures or other documents.
1.1.1 embOS C-Spy Plug-in for IAR Embedded Workbench
SEGGER’s embOS C-Spy plug-in for IAR Embedded Workbench provides embOS-awareness
during debug sessions. This enables you to inspect the state of several embOS primitives
such as the task list, queues, mutexes, semaphores, mailboxes, software timers, memory
pools, event objects, watchdogs, and major system variables.
1.1.2 embOS
embOS is a real-time operating system for embedded applications designed to offer the
benefits of a fully-fledged multitasking system at minimum cost. The kernel is fully interruptible and so efficient that embOS can be used in very time critical situations. The memory footprint in both RAM and ROM is so small that embOS can be used in single-chip applications, leaving maximum room for the user-program.
1.1.3 IAR Embedded Workbench
IAR Embedded Workbench is a set of development tools for building and debugging embedded applications using assembler, C and C++. It provides a completely integrated development environment that includes a project manager, editor, build tools and the C-SPY
debugger. IAR Embedded Workbench supports a wide range of microcontrollers and cores
from different chip manufacturers. It offers the same intuitive user interface regardless
of which microcontroller you have chosen to work with -- coupled with general and target-specific support for each chip.
Typically, there is no installation required since the IAR Embedded Workbench comes with
the plug-in already pre-installed. In case you want to update the plug-in to a more recent
version, however, you would need to replace two files that are located within the Embedded
Workbench installation directory with the respective files from the embOS C-Spy plug-in
package. The Embedded Workbench installation directory should resemble the following
structure:
If appropriate folders do not yet exist with your installation, you should create a directory
called embOS within the CPU specific folder plugin\rtos\, and subsequently copy the files
from the embOS C-Spy plug-in package into that folder. Note that IAR Embedded Workbench must not be running during the update process.
Note
Before replacing any files already found in the plugin\rtos\embOS folder of the IAR
Embedded Workbench, you may want to backup these files. You should also check
the version number of the plug-in inside embOSPlugin.ewplugin. Therein, the version
number is shown as the last entry and looks like follows:
<version>8.30.3.6</version>
The first part, 8.30, is the major version number and indicates the C-Spy SDK this
plug-in was created with. Typically, it is not recommended to replace previous plugin versions with more recent major versions, but with more recent minor versions
only. Minor versions are indicated by the second part of the version number, i.e.
3.6. It’s recommended to replace the plug-in currently installed with your Embedded
Workbench if its minor version is lower than the minor version of the plug-in that is
shipped with embOS.
By default, embOS start projects will enable the embOS C-Spy plug-in upon project load.
The plug-in may be explicitly disabled, individually for each project configuration, in the
debugger section of the project’s options:
During your debugging session, the embOS C-Spy plug-in is accessible from the IAR Embedded Workbench IDE main menu. Note that if you are not running a debugging session,
there is no embOS menu item available.
From the menu you may activate the individual windows that provide embOS related information. The sections below describe these individual windows. The amount of information
available depends on the embOS build used during debugging. A Release build, for instance,
won’t show any information about semaphores, queues, event objects, or mailboxes.
*A green arrow points at the task that is currently executed.
PrioThe priority of the task.
IdThe task control block address that uniquely identifies a task.
NameIf available, the task name is shown here.
The task status as a short text. If the task is waiting for an OS object
Status
Timeout
Stack Info
Run countThe number of times a task has been activated by the scheduler.
Time slice
EventsThe event mask of a task.
(e.g. semaphore), the object’s type and control block address is given
and, in paranthesis, the object’s identifier (if any).
If a task is blocked with timeout, this column shows the remaining
timeout value in system ticks and, in parenthesis, the system time at
which the timeout will expire.
If available, this column shows the maximum used amount of stack,
the total stack size, and the stack’s base address which uniquely
identifies a task stack.
If round-robin scheduling is available, this column shows the number
of currently remaining time slices and the time slice reload value.
3.2.1 Task sensitivity
The Source Code window, the Disassembly window, the Register window, and the Call
Stack window of the C-Spy debugger are task sensitive since version 3.62 of the embOS
C-Spy plug-in for several CPUs. This means that they show the position in the code, the
general-purpose registers and the call stack of the selected task. By default, the selected
task is always the running task, which is the normal behavior of a debugger that the user
expects.
You can examine a particular thread by double-clicking on the corresponding row in the
window. The selected task will be underlayed in yellow. The C-Spy Debugger rebuilds the
call stack and the preserved general-purpose registers of a suspended task. Refer to Stateof suspended tasks on page 17 for detailed information about which information are
available for the different task states.
Every time the CPU is started or when the Idle-row of the task window is double clicked,
the selected task is switched back to this default.
The task sensitive source window, call stack and register window are supported for the
following CPUs:
Tasks which have given up execution voluntarily by calling a blocking function, such as
OS_Delay() or OS_Wait_…(). In this case, the OS saved all registers which can be viewed in
the Register window. It might be that scratch registers are not saved and thus not displayed
in the Register window.
Tasks waiting for first activation
These basically fall into the same category as blocked tasks, the call stack and registers
look similar to the following screenshots. Similarly, temporary registers are unknown. The
Call Stack shows a single entry OS_StartTask. Run count is 0.
This view displays information in debug builds of embOS only.
ColumnDescription
IdThe mailbox control block address that uniquely identifies a mailbox.
NameIf available, the respective object identifier is shown here.
Messages
Message sizeThe size of an individual message in bytes.
pBufferThe message buffer address.
Waiting tasks
The number of messages in a mailbox and the maximum number of
messages the mailbox can hold.
The list of tasks that are waiting for the mailbox (address and, if available, name). Only those tasks that are displayed in the task list window
may be shown here.
This view displays information in debug builds of embOS only.
ColumnDescription
Id
NameIf available, the respective object identifier is shown here.
CountCounts how often this semaphore can be claimed until it blocks.
Waiting tasks
The semaphore control block address that uniquely identifies a semaphore.
The list of tasks that are waiting for the semaphore (address and, if
available, name). Only those tasks that are displayed in the task list
window may be shown here.
NameIf available, the respective object identifier is shown here.
Total blocksShows the available blocks and the maximal number of blocks.
Block sizeShows the size of a single memory block.
Max. usage
pPoolThe address of the memory pool buffer.
Waiting tasks
The memory pool control block address that uniquely identifies a memory pool.
Shows the maximal count of blocks which were simultaneously allocated.
The list of tasks that are waiting for free blocks in the memory pool
(address and, if available, name). Only those tasks that are displayed
in the task list window may be shown here.
This view displays information in debug builds of embOS only. This view displays information
with embOS V4.38 and subsequent versions only.
ColumnDescription
Id
NameIf available, the respective object identifier is shown here.
Signaled
Reset ModeThe event objects reset mode.
Mask Mode
Waiting tasks
The event object control block address that uniquely identifies an event
object.
The hexadecimal value of the bit mask containing the signaled event
bits.
The current mask mode indicating whether Or or And logic is used to
check whether a task shall resume.
The list of tasks that are waiting for an event object (address and, if
available, name). Only those tasks that are displayed in the task list
window may be shown here.
To avoid endless requests in case of erroneous data in target memory, the embOS C-Spy
plug-in imposes several limits on the amount of information retrieved from the target. It
also configures an entry point for the plug-in at which it will start reading data from the
target to avoid accessing invalid data and/or uninitialized memory, e.g. when the debug
session is halted during start-up.
The settings dialog allows to configure these limits and the entry point for the plug-in:
Maximum number of characters to read for each
string (e.g. task names).
Maximum number of tasks to display in the Task
List.
Maximum number of mutexes to display in the Mutexes view.
Maximum number of semaphores to display in the
Semaphores view.
Maximum number of mailboxes to display in the
Mailboxes view.
Maximum number of queues to display in the
Queues view.
Maximum number of timers to display in the Timers
view.
Maximum number of memory pools to display in the
Memory Pools view.
Maximum number of event objects to display in the
Event Objects view.
Maximum number of watchdogs to display in the
Watchdogs view.
Maximum number of waiting tasks to display in the
Mutexes, Semaphores, Mailboxes, Queues, Memory
Pools, and Event Objects views.
Enables/disables the calculation and display of stack
usage information in the Task List.
Maximum number of bytes used to calculate and
display in the stack usage information in the Task
List.
Enables/disables an entry point for the plug-in.
If checked, the plug-in will become active when
the target executes the specified function. If
unchecked, the plug-in will become active with the
start of the debug session.
Name of the function to be used as an entry point
for the plug-in.
When clicking the OK button, all entries are checked for valid values. If valid, the settings
are applied immediately.
The plug-in settings are stored inside the Windows registry at HKEY_CURRENT_USER\Soft-ware\SEGGER\embOS plug-in for IAR C-Spy 6 and 7 for plug-in versions 6.x and 7.x,
at HKEY_CURRENT_USER\Software\SEGGER\embOS plug-in for IAR C-Spy 8 for plug-in
version 8.x, and at HKEY_CURRENT_USER\Software\SEGGER\embOS plug-in for IAR C-Spy 9 for plug-in version 9.x.