General Purpose Systems

System Structure

Lets start by understanding the structure of general purpose system-like unix.


Three layers of abstraction: (i) Users and their applications, (ii) system software and resources, and (iii) the devices and device drivers. The interface between (i) and (ii) is the "system call API" and the interface between the system resources and the hardware is the kernel interface to the hardware.
Lets understand the system call concept. The steps in executing a system call read(fd,buffer,nbytes) is depicted below:


Now compare an embedded system with the general purpose system.

In a typical embedded system, the apps or applications are directly interfacing with the hardware. The embedded software is optimized to work with the embedded hardware. Common embedded system design involves simple representation such as UML (Unified Modeling Language) state machine.
Hmm....then how do we design an embedded system? What are the approaches?