30.12.2013 Views

Virtuoso User Manual - ClassicCMP

Virtuoso User Manual - ClassicCMP

Virtuoso User Manual - ClassicCMP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Virtuoso</strong> : an overview<br />

3. <strong>Virtuoso</strong> : an overview<br />

3.1. Requirements for a programming system<br />

Processor technology is changing very rapidly. Processors are becoming<br />

faster, microcontrollers are becoming more complex and richer in features,<br />

but developers are left with the impossible task to keep up. In addition fundamental<br />

I/O bandwidth limitations force the designers to go parallel to reach<br />

the required level of performance. The conclusion is clear : the only way to<br />

shorten the development cycle is to use tools that relieve the developer from<br />

the technology change. The ideal development tool must not only provide for<br />

faster application development by giving the programmer a head start, but<br />

should also be future proof. The requirements can be split in three areas :<br />

1. A consistent high level API across all target processors<br />

2. The utilities to debug and maintain the code<br />

3. Target processor specific support for best performance.<br />

3.2. The high level view : a portable set of services<br />

3.2.1. A multi-tasking real-time microkernel as the essential module<br />

In many applications sensors supply raw data, preprocessing algorithms filter<br />

and examine the data, control algorithms process the data and deduce<br />

from it control commands, while additional functions deal with user interaction,<br />

data logging or safety concerns. In most cases tight timing requirements<br />

need to be fulfilled especially if the system has to deal with events that<br />

can happen at any time, regardless of the current function being executed at<br />

that moment. A common and proven solution is to map the different functions<br />

onto separate tasks, assign priorities to these tasks and to use a standardized<br />

way of defining the interaction between the tasks. The core of this solution<br />

is the availability of a real-time microkernel that manages the timely<br />

execution of the tasks and their interactions in a way that frees the applications<br />

programmer from the burden of doing it himself. It must also be noted<br />

that for multiprocessor targets, multitasking is a must to achieve high performance<br />

because without it, it is not possible to overlap computation and calculation.<br />

As such the microkernel must correctly provide for priority driven<br />

preemptive scheduling of the tasks, permit to transfer data between the<br />

tasks in a synchronous and asynchronous way, coordinate tasks, deal with<br />

timed events, allocate memory and protect common resources. In addition,<br />

the microkernel should be small, secure and flexible while providing a very<br />

fast response. Practice has shown that in general the same set of microkernel<br />

services is sufficient.<br />

P1 - 10 <strong>Virtuoso</strong> <strong>User</strong> <strong>Manual</strong> Copyright 1996 Eonic Systems

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!