29.01.2015 Views

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

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.

Systematic <strong>Embed<strong>de</strong>d</strong> <strong>Software</strong> Generation from SystemC 91<br />

In or<strong>de</strong>r to allow communication among processes, several channel mo<strong>de</strong>ls<br />

have been <strong>de</strong>fined in the SC2ECOS library. The ABS application example<br />

uses two of them; a blocking channel (one element sc_fifo channel) and an<br />

exten<strong>de</strong>d channel (that enables blocking, non-blocking and polling accesses).<br />

The same channel type could communicate SW processes, HW processes<br />

or a HW and a SW process (or vice versa). Thus, the proposed channel mo<strong>de</strong>ls<br />

have different implementations <strong>de</strong>pending on the HW/SW partition. In or<strong>de</strong>r<br />

to implement these channel mo<strong>de</strong>ls only 7 eCos functions have been called<br />

(center and right columns of Table 7-2). These eCos functions control the synchronization<br />

and data transfer between processes.<br />

The ABS system has 5 modules: the top (“Abs_system”), 2 modules that<br />

compute the speed and the acceleration (“Compute Speed” and “Compute<br />

Acceleration”), another (“Take <strong>de</strong>cision”) that <strong>de</strong>ci<strong>de</strong>s the braking, and the<br />

last one (“Multiple Rea<strong>de</strong>r”) that provi<strong>de</strong>s speed data to the “Compute<br />

Acceleration” and “Take Decision” modules. Several experiments, with different<br />

partitions have been per<strong>for</strong>med.<br />

Several conclusions have been obtained from the analysis of the experimental<br />

results shown in Figure 7-5:<br />

There is a minimum memory size of 53.2 Kb that can be consi<strong>de</strong>red<br />

constant (in<strong>de</strong>pen<strong>de</strong>nt of the application). This fixed component is divi<strong>de</strong>d<br />

in two parts: a 31 K contribution due to the <strong>de</strong>fault configuration of the<br />

eCos kernel, that inclu<strong>de</strong>s the scheduler, interruptions, timer, priorities,<br />

monitor and <strong>de</strong>bugging capabilities and a 22.2 Kb contribution, necessary<br />

to support dynamic memory management, as the C++ library makes use<br />

of it.<br />

There is a variable component of the memory size that can be divi<strong>de</strong>d into<br />

two different contributions. One of them is due to the channel implementation<br />

and asymptotically increases to a limit. This growth is non-linear due<br />

to the compiler optimizing the overlap of necessary resources among the

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

Saved successfully!

Ooh no, something went wrong!