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.

182 Chapter 14<br />

does not handle I/O. However, nano-kernel is often used exactly to represent<br />

HAL. In the case of OS, nano-kernel is equivalent to HAL [5].<br />

A <strong>de</strong>vice driver gives an abstraction of I/O <strong>de</strong>vice. Compared to HAL, it<br />

is limited to I/O, not covers context switch, interrupt management, etc. To be<br />

more exact, the entire <strong>de</strong>vice driver does not belong to HAL. In the case<br />

of <strong>de</strong>vice driver, to i<strong>de</strong>ntify the portion that <strong>de</strong>pends on the un<strong>de</strong>rlying HW<br />

architecture, we need to separate the <strong>de</strong>vice driver into two parts: HW in<strong>de</strong>pen<strong>de</strong>nt<br />

and HW <strong>de</strong>pen<strong>de</strong>nt parts [6]. Then, the HW <strong>de</strong>pen<strong>de</strong>nt part can belong<br />

to HAL.<br />

Though HAL is an abstraction of HW architecture, since it has been mostly<br />

used by OS vendors and each OS vendor <strong>de</strong>fines its own HAL, most of HALs<br />

are also OS <strong>de</strong>pen<strong>de</strong>nt. In the case of OS <strong>de</strong>pen<strong>de</strong>nt HAL, it is often called<br />

board support package (BSP).<br />

Window CE provi<strong>de</strong>s <strong>for</strong> BSPs <strong>for</strong> many standard <strong>de</strong>velopment boards<br />

(SDBs) [3]. The BSP consists of boot loa<strong>de</strong>r, OEM abstraction layer (OAL),<br />

<strong>de</strong>vice drivers, and configuration files. To enable to meet the <strong>de</strong>signer’s HW<br />

architecture, the BSP can be configured with a configuration tool called<br />

Plat<strong>for</strong>m Buil<strong>de</strong>r. The <strong>de</strong>vice drivers are provi<strong>de</strong>d in a library which has three<br />

types of functions: chip support package (CSP) drivers, BSP or plat<strong>for</strong>mspecific<br />

drivers, and other common peripheral drivers. In other commercial<br />

OSs, we can find similar configuration tools and <strong>de</strong>vice driver libraries.<br />

4. HAL FOR SOC DESIGN<br />

4.1. HAL usage <strong>for</strong> SW reuse and concurrent HW and SW <strong>de</strong>sign<br />

In the context of <strong>SoC</strong> <strong>de</strong>sign, HAL keeps still the original role of enabling<br />

the portability of upper layer SW. However, in <strong>SoC</strong> <strong>de</strong>sign, the portability<br />

impacts on the <strong>de</strong>sign productivity in two ways: SW reuse and concurrent HW<br />

and SW <strong>de</strong>sign.<br />

Portability enables to port the SW on different HW architectures. In terms<br />

of <strong>de</strong>sign reuse, the portability enables to reuse the SW from one <strong>SoC</strong> <strong>de</strong>sign<br />

to another. Easy porting of OS and application SW means easy reuse of OS<br />

and application SW over different HW architectures that support the same<br />

HAL API. Thus, it can reduce the <strong>de</strong>sign ef<strong>for</strong>ts otherwise necessary to adapt<br />

the SW on the new HW architecture.<br />

In many <strong>SoC</strong> <strong>de</strong>signs, complete SW reuse may be infeasible (e.g. due to<br />

a new functionality or per<strong>for</strong>mance optimisation). Thus, in such cases, both<br />

SW and HW need to be <strong>de</strong>signed. The conventional <strong>de</strong>sign flow is that the<br />

HW architecture is <strong>de</strong>signed first, then the SW <strong>de</strong>sign is per<strong>for</strong>med based on<br />

the <strong>de</strong>signed HW architecture. In terms of <strong>de</strong>sign cycle, this practice takes a<br />

long <strong>de</strong>sign cycle since SW and HW <strong>de</strong>sign steps are sequential.<br />

HAL serves to enable the SW <strong>de</strong>sign early be<strong>for</strong>e finishing the HW architecture<br />

<strong>de</strong>sign. After fixing a HAL API, we can per<strong>for</strong>m SW and HW <strong>de</strong>sign

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

Saved successfully!

Ooh no, something went wrong!