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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introduction<br />

xvii<br />

software consists of several layers: application software, communication middleware<br />

(e.g. message passing interface [4]), operating system (OS), and<br />

hardware abstraction layer (HAL)). In the architecture, each layer uses an<br />

abstraction of the un<strong>de</strong>rlying ones. For instance, the OS layer is seen by upper<br />

layers (communication middleware and application layers) as an abstraction<br />

of the un<strong>de</strong>rlying architecture, in the <strong>for</strong>m of OS API (application programming<br />

interface), while hiding the <strong>de</strong>tails of OS and HAL implementation and<br />

those of the hardware architecture.<br />

<strong>Embed<strong>de</strong>d</strong> software reuse can be done at each layer. For instance, we can<br />

reuse an RTOS as a software component. We can also think about finer granularity<br />

of software component, e.g. task scheduler, interrupt service routine,<br />

memory management routine, inter-process communication routine, etc. [5].<br />

By reusing software components as well as hardware components, <strong>SoC</strong><br />

<strong>de</strong>sign becomes an integration of reused software and hardware components.<br />

When <strong>SoC</strong> <strong>de</strong>signers do <strong>SoC</strong> integration with a plat<strong>for</strong>m and a multi-layer<br />

software architecture, the first question can be ‘what is the API that gives an<br />

abstraction of my plat<strong>for</strong>m’ We call the API that abstracts a plat<strong>for</strong>m<br />

‘plat<strong>for</strong>m API’. Consi<strong>de</strong>ring the multi-layer software architecture, the plat<strong>for</strong>m<br />

API can be Communication API, OS API, or HAL API. When we limit the<br />

plat<strong>for</strong>m only to the hardware architecture, the plat<strong>for</strong>m API can be an API<br />

at transaction level mo<strong>de</strong>l (TLM) [6]. We think that a general answer to this<br />

question may not exist. The plat<strong>for</strong>m API may <strong>de</strong>pend on <strong>de</strong>signer’s plat<strong>for</strong>ms.<br />

However, what is sure is that the plat<strong>for</strong>m API needs to be <strong>de</strong>fined<br />

(by <strong>de</strong>signers, by standardization institutions like Virtual Socket Interface<br />

Alliance, or by anyone) to enable plat<strong>for</strong>m-based <strong>SoC</strong> <strong>de</strong>sign by reusing<br />

software components.<br />

In <strong>SoC</strong> <strong>de</strong>sign with multi-layer software architecture, another important<br />

problem is the validation and evaluation of reused software on the plat<strong>for</strong>m.<br />

Main issues are related to software validation without the final plat<strong>for</strong>m and,<br />

on the other hand, to assess the per<strong>for</strong>mance of the reused software on the<br />

plat<strong>for</strong>m. Figure 2 shows this problem more in <strong>de</strong>tail. As shown in the figure,

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

Saved successfully!

Ooh no, something went wrong!