|
tutorials |
|
Earn
Continuing Education Units (CEUs) from the IEEE
by learning more about Staccato™
and partitioning.
Click here...
|
|
|
Tutorial 1:
Embedded
Software Partitioning: Staccato™ versus an RTOS |
|
One of the first activities in designing embedded
system software is to partition the application into individual tasks.
This 'divide and conquer' approach is necessary regardless of the type
of operating system to be used. However, there are important differences
in the criteria used to partition a system between a conventional RTOS
and Staccato™.
In a RTOS-based
embedded system, a task can be generically defined as a separate
application process that 1) usually contains a 'forever' loop, 2) may
have static and dynamic priorities assigned to it, and 3) may or may not
require access to resources shared with other tasks. Tasks are run based
on external events (interrupts) and their assigned priorities. Before
running the next task, a context switch is required to save the state of
the processor's registers for the current task, which are restored when
the task is re-scheduled to run. Given this scenario, code reentrancy,
or the ability to safely resume from the last instruction executed, is
an important consideration in the coding of each task. Multiple RTOS
tasks may require access to the same resources, necessitating the use of
semaphores or mutexes to resolve these conflicts during runtime. The
pre-emptive scheduling of tasks, supported by many RTOSes, may also be a
consideration when partitioning your system, as the exact sequence of
task execution may be difficult to determine. Additional considerations
in using this architecture would include the debugging capabilities, the
resulting real-time performance and RTOS overhead, and the ability to
reliably validate and verify the design for this runtime environment.
Partitioning embedded system software into application processes using
RTOS tasks may be more dependent on the inherent operational complexity
of the RTOS itself. In an attempt to visualize an RTOS-based embedded
software system, consider the following diagram. |
|
 |
|
System resources
are listed on the left, with RTOS tasks, as partitioned, listed across
the top. Notice how resources must be shared across multiple tasks.
Notice also that task priorities indicate the order in which tasks are
to be run. Device interrupts (ISRs) are also shown as they are a
necessary part of any embedded system.
Staccato™
Partitioning...
In contrast to this popular partitioning method, Staccato™ regards the
resources themselves as 'task objects'- each designed and encoded as
Finite State Machines (FSMs). The resulting embedded software
application architecture becomes a 'system of directly and continuously
executed Finite State Machines (FSMs)'.
The following
diagram depicts the Staccato™ partitioning approach, in contrast with
that of an RTOS. Notice that in addition to the 'resource' tasks, a
Control Task is added, which manifests the 'state of the system' and
provides supervisory control over all other tasks, using the inter-task
communication constructs provided by the Staccato™ System Core. Notice
that typical 'driver' tasks are shown in this example. The Staccato™
partitioning method can just as easily accommodate tasks responsible for
the algorithmic processing of data, communication protocol layers and
error detection. |
|
 |
|
It is important to
note that there is no priority scheme: all tasks, including the Control
Task, are run by the executive in the same manner. Interrupts, including
the System Timer, are handled as they are in any system, with the
corresponding ISR providing the necessary processing. Notice also that
resource contention becomes a non-issue in this method of partitioning.
The diagram also shows the 'current' state for each task as a
highlighted state bubble. These unique states for each task are actually
functions, which run through completion, thereby eliminating the concern
for code reentrancy, a design issue for the RTOS tasks. Likewise, there
is no need for 'context-switching' using this method: the Staccato™
System Core and Executive consider the tasks as integrated processes
within the application, as opposed to individually-run applications in
an RTOS partitioning, requiring the context switch. Although this
diagram adequately contrasts Staccato™ versus the RTOS approach to
system partitioning, it does not convey the direct and intuitive method
used in the Staccato™ Design Method and Architecture for Embedded
Systems. This subject matter is discussed thoroughly, with examples, in
Staccato™ Course 2 - Design and
Coding Guidelines. By contrasting the two approaches to software
partitioning described here, it should be evident that the Staccato™
method will result in a more deterministic system architecture, that is
easily maintained and verified.
|
|