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.

72 Chapter 6<br />

Core functions‚ which trace the states of <strong>de</strong>vices‚ en<strong>for</strong>ce <strong>de</strong>vice state<br />

transitions required <strong>for</strong> certain operations‚ and operate data paths. Because<br />

such actions <strong>de</strong>pend on the current states of the <strong>de</strong>vice‚ synchronization<br />

with the <strong>de</strong>vice is necessary. Common synchronization approaches are<br />

interrupts‚ polling and timer <strong>de</strong>lay. In our approach‚ core functions are<br />

synthesized from a <strong>de</strong>vice specification. They interact with a plat<strong>for</strong>m in<strong>de</strong>pen<strong>de</strong>nt<br />

framework called virtual environment. The <strong>de</strong>vice specification<br />

itself is explained in Section 4‚ and synthesis of core functions in Section<br />

5.<br />

Plat<strong>for</strong>m functions that glue the core functions to the hardware and OS<br />

plat<strong>for</strong>m. The virtual environment abstracts architectural behaviors such<br />

as big or little endian‚ programmed I/O‚ memory mapped I/O. It also<br />

specifies OS services and OS requirements such as memory management‚<br />

DMA/bus controllers‚ synchronization mechanisms etc. This virtual environment<br />

is then mapped to a particular plat<strong>for</strong>m (hardware and OS) by<br />

providing the plat<strong>for</strong>m functions that have plat<strong>for</strong>m specific co<strong>de</strong> <strong>for</strong> the<br />

above <strong>de</strong>tails.<br />

Registry functions that export driver services into the kernel or application<br />

name space. For example‚ the interface can register a driver class to the<br />

NT I/O manager (IOM) or fill one entry of the VFS (Virtual File System)<br />

structure of the Linux kernel.<br />

Figure 6-2 outlines our framework and illustrates how the three parts of<br />

the driver come together. It takes as input (1) the <strong>de</strong>vice specification‚ which<br />

is plat<strong>for</strong>m neutral and (2) the driver configuration‚ which specifies the <strong>de</strong>vice

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

Saved successfully!

Ooh no, something went wrong!