Design Article
Guide to Embedded Systems Architecture - Part 1: Defining middleware
Tammy Noergaard
4/19/2010 2:29 PM EDT
10.2 What Is an Application?
The final type of software in an embedded system is the application software. As shown in Figure 10-2, application software sits on top of the system software layer, and is dependent on, managed, and run by the system software.

Figure 10-2: Application layer and Embedded Systems Model
It is the software within the application layer that inherently defines what type of device an embedded system is, because the functionality of an application represents at the highest level the purpose of that embedded system and does most of the interaction with users or administrators of that device, if any exists. (Note: I say most because features such as powering on or off the device when a user hits a button may trigger a device driver function directly for the power-on/power-off sequence, rather than bringing up an application—it depends on the programmer how that is handled.)
Like embedded standards, embedded applications can be divided according to whether they are market specific (implemented in only a specific type of device, such as video-on-demand applications in a interactive digital TV) or general-purpose (can be implemented across various types of devices, such as a browser).
Section 10.4 introduces real-world examples of types of application software, and how they contribute to an embedded system's architecture.
10.3 Middleware Examples
10.3.1 Networking Middleware Driver Examples
As discussed in Chapter 2, one of the simplest ways to understand the components needed to implement networking in an embedded device is to visualize networking components according to the OSI model and to relate that to the Embedded Systems Model. As shown in Figure 10-3, software that falls between the upper data-link and session layers can be considered networking middleware software components.

Figure 10-3: OSI model and middleware
The examples given in this section, UDP and IP (shown in Figures 10-4a and b), are protocols that fall under the TCP/IP protocol stack and are typically implemented as middleware. As introduced in Chapter 2, this model is made up of four layers: the network access layer, internet layer, transport layer, and the application layer.

Figure 10-4a: TCP/IP, OSI Models and Embedded Systems Model block diagram

Figure 10-4b: TCP/IP model and protocols block diagram
The TCP/IP application layer incorporates the functionality of the top three layers of the OSI model (the application, presentation, and session layers), and the network access layer incorporates the layers of the OSI model (physical and data-link). The internet layer corresponds to the network layer in the OSI model and the transport layers of both models are identical. This means that, in reference to TCP/IP, networking middleware falls under the transport, internet, and upper portion of the network access layers (see Figure 10-4a).

