Chapter 1

Embedded Systems Landscape

In this book, you will explore the design of modern embedded computer systems and learn many of the principles and skills needed to develop and program them effectively. Our goal in this chapter is to establish the appropriate context. The world of embedded systems is vast and changing rapidly, so we will begin by sharing our view on what modern embedded systems are all about, and why their importance and popularity have been increasing so dramatically.

We are in the midst of an extraordinary technology transformation. Most classes of electronic devices will soon be Internet-accessible with software-defined feature sets—not just computers and mobile phones, but nearly all forms of electronics. In other words, most classes of electronics are becoming embedded computer systems, and the consequences of this transition will be substantial.

This trend can be seen plainly in current commercial offerings, across a wide range of product types, where most new product lines are built around processor-based integrated circuits that enable Internet connectivity. Consider the following examples.

Consumer electronics. The most competitive and innovative categories of consumer electronics—examples include high-definition television sets, digital cameras, video game consoles, and media players—are all designed around processor-based systems-on-a-chip and rely on Internet connectivity.

Telephony. From mobile handsets designed primarily to connect to cellular access networks, to VoIP phones that enable not only voice calls, but also instant messaging, video chat, and integration with social network contacts, most modern telephony platforms are designed to be extensible through software feature sets. Moreover, they are increasingly designed to connect opportunistically to a user’s network of choice.

In-vehicle information systems. Today’s onboard automotive information systems provide compelling applications such as GPS navigation, rear/obstructed view cameras, voice communications, and audio/video playback in an integrated fashion.

For the embedded systems programmer, the consequences of this trend are considerable. Foremost, there will be a great many more embedded computer systems in the future than there have been in the past, so skilled designers and programmers have a future of stable employment ahead of them. From a technical perspective, the nature of embedded systems design is changing to reflect the large numbers of systems that are connected and have rich media interfaces. The vast majority of embedded developers have been trained with 8-bit microcontrollers in mind, and the world has clearly moved on.

In this book, you will explore the design of modern embedded computer systems and learn many of the principles and skills needed to develop and program them effectively.

Our goal in this chapter is to establish the appropriate context. The world of embedded systems is vast and changing rapidly, so we will begin by sharing our view on what modern embedded systems are all about, and why their importance and popularity have been increasing so dramatically.

What is an Embedded Computer System?

Embedded systems are computers with constraints. While the design of all engineered devices involves trade-offs to some degree, general-purpose computers have historically been designed with comparatively few constraints. Since general-purpose computers are the most widely understood class of computing systems, it is instructive to compare and contrast their constraints with those of embedded systems. Indeed, embedded computer systems are different, both from one another and from general-purpose systems, by virtue of the design trade-offs and constraints they embody.

In particular, embedded computer systems have distinctive constraints with respect to intended applications and form factors, power, system resources and features, and assumptions about user behavior.

Applications and Form Factors

Unlike general-purpose machines, embedded systems are typically designed for one target application, or class of target applications. The intended use of an embedded computer system drives many of its design constraints and tradeoffs.

The size and physical form factor are often a natural consequence of a system’s intended use. For example, continuously tethered medical devices, worn by patients, have shape and weight constraints that follow from the human body and its movements. Mobile handsets, by convention, are sized to fit in a (sometimes large) pocket. And embedded networking devices, such as wireless access points, are typically larger than human-centric devices, but have size and shape constraints of their own.

A system’s intended use defines its physical packaging constraints, and many other design constraints follow from these. Notably, embedded computer systems have required a higher degree of system-level integration—that is, the integration of system-wide functionality onto one or a small number of semiconductor devices—in order to meet tight size, cost, and power constraints.

Power

In embedded and general-purpose systems alike, power has become the predominant design constraint. In general-purpose systems, such as laptops and servers, power dissipation limits, expressed in terms of thermal design power (TDP), have ranged from tens to hundreds of watts, respectively. Relative to embedded systems, general-purpose platforms support a comparatively small number of ranges of TDP, which have evolved over time subject to the operational context of each particular platform. Laptop TDPs are largely a consequence of an expected battery life of between 4 and 8 hours; modern server TDPs are a consequence of the power density per unit volume that machine rooms and data centers are provisioned to dissipate (which were, in turn, based on the TDP of the previous generations of server equipment).

For the most part, embedded systems have considerably lower-power design points, ranging from a few watts to microwatts. While some high-performance contexts, such as network routers and telecommunications equipment, have power profiles more or less the same as servers, most embedded computer systems are designed to operate in smaller spaces, often on battery power, and without the benefit of mechanical heat dissipation mechanisms such as fans or other forms of active cooling.

As a result, embedded computer systems have historically been designed with comparatively aggressive dynamic power management mechanisms. In recent years, however, dynamic power management in general-purpose CPUs has become sophisticated, with the goal of switching between high-performance, high-power modes and low-performance, low-power modes without disturbing either user-perceived latency or system performance on marketing-oriented industry benchmarks.

Relative to the general-purpose scenarios, embedded computer systems exhibit a much more heterogeneous array of power design perspectives. As will be discussed in greater detail later, embedded computer systems span a wide range of use cases, from high-performance systems to battery-operated systems designed to operate in wireless sensor applications for years with a single battery.

As such, embedded computer systems rely on power management schemes and features that vary with the target application.

System Resources and Features

General-purpose and embedded computer systems differ most in the variability of system resources and features rather than in their quantity. Embedded computer systems are typically designed and deployed with a relatively static and predetermined set of system resources and features.

This fact simplifies systems software and certain system processes, such as booting the system or diagnosing problems. For example, the boot process for an IA-32-based general-purpose computer, and the design of the software that implements that process, must be organized to contend with an unpredictable set of memory and I/O resources when the system starts. This resource uncertainty is not present in most embedded computer systems; hence, embedded system boot processes are shorter and simpler.

User Assumptions

General-purpose computers enjoy generous assumptions about the behavior of users. In fact, few classes of electronics have a user profile more convenient than that of the computer user. Outside of microwave ovens and A/V remote controls, few electronics products place such a substantial burden on the user to work around system problems and inefficiencies. While the user experience has improved dramatically in recent years, the typical computer user is prepared to experience routine system failures, frequently reinstall or update software packages, experience compatibility problems following installations and updates, wait patiently for inexplicable hourglasses to disappear, and, generally speaking, learn a great deal about how to use the system and cope with its deficiencies.

On the other hand, most embedded systems have a much narrower range of assumptions about user behavior. Most embedded systems are parts of devices or infrastructure and are expected to function reliably and deterministically. Users expect devices such as media players and telephones to respond without any latency. Infrastructure and industrial equipment are often designed to reliably honor service-level agreements. These tighter usage requirements impact systems software and overall system feature selection, as we will discuss in detail in later chapters.

Why is this Transition Inevitable?

Of course, in this day and age, it is easy for many to accept without argument that all electronics will be connected and software based. But why is this so? Does my light switch need an IP address? Isn’t it hard to write bug-free software? So why pollute the everyday reliability of traditional electronics with unpredictable software bugs?

Perhaps the most persuasive explanation comes not from a technical perspective but from considering some of the business dynamics that influence electronic product development. Technological progress in the presence of genuine commercial competition demands that, over time, new products increase in value while maintaining, or reducing, the price for those products. In the computer business, for example, it is easy to see that average sales price points have been declining over time as performance has increased. New products must, quite literally, do more for less. (Why? Because if you do not offer new features at better prices, then your competitors will put you out of business.)

How is this economically sustainable? This trend—doing more for less—is only economically sustainable if new features can be developed and deployed profitably, that is, if new features can be developed and added at an aggregate cost that is less than the increase in revenue that results from the new features. In business terms, profitability is a synonym for economic sustainability.

How can new features be developed profitably in a context of declining prices? In a word: reuse! Reuse the results of prior development to lower or eliminate the cost of future development. And no technology enables reuse quite like software.

If past development investments can be amortized into the future, across future product generations, then marginal investments can fund feature development. This is precisely what software enables under ideal circumstances. A software-based, extensible product core enables past development effort to be amortized across future offerings, while enabling the cost-effective development of new features and services. Software-defined feature sets enable electronics of all kinds to exhibit qualitatively superior cost savings relative to hardware-based feature sets.

And what about deploying new features? This is an important aspect of Internet connectivity. As an example, consider that recent generations of set-top boxes and game consoles have demonstrated the dramatic effectiveness of being able to enable new features in deployed systems.

As of January 2010, all three of the major current-generation video game consoles provide access to the Netflix video streaming service via the Internet. However, none of these platforms initially shipped with this capability, nor, apparently, had any business arrangements between Netflix and the console vendors been made or discussed during the console design phases. With Internet connectivity and a software-based feature set, there is no need to work out all such arrangements in advance of the deployment of the hardware; such agreements can be made and enacted according to the flow of business, provided that the platform has a software-defined feature set with Internet connectivity.

Of course, Internet connectivity enables not just feature deployment, but all other communications-oriented activities. Cameras can upload data directly to online storage accounts. Video games can be structured to provide online play features, such as access to new content or multiplayer modes. Medical devices, industrial equipment, and building automation systems can receive control commands and report back periodically with data and diagnostics information.

More broadly, Internet connectivity enables the command and control of deployed electronics. In many cases, this enables a qualitatively better mechanism for resource control. Take as an example building automation, in which systems such as lighting, climate, and security can be monitored and managed remotely. Lights can be turned off and temperatures can be adjusted in rooms and buildings that are known to be empty, without requiring a physical presence in the room.

When applied broadly across many types of electronics, the remote monitoring and control of resources can have a wide impact on resource management.

What Range of Embedded Systems Exists?

In this book, we take what we consider to be a modern definition of embedded computer systems, one that is somewhat wider in scope than those found previous books.

In particular, our definition of embedded computer systems as computers with constraints admits considerably more high-performance systems than most embedded systems textbooks would include in the scope of their discussion. Most embedded textbooks have their roots in small-scale, microcontroller-style systems. Our perspective is oriented toward larger-scale systems with feature sets and ambitions more aligned with general-purpose computers than with microcontrollers.

For the purpose of illustration, Table 1.1 includes some examples of embedded systems and their corresponding descriptions.

Table 1.1. Samples of Embedded Applications

Embedded Application Sample Description
Digital signage Public video displays, primarily for advertising or entertainment
Digital storage Network-attached, power- and area-efficient storage for enterprises, small business, and homes
Factory automation Management and control of manufacturing facility assets
Gaming Video game and other leisure gaming platforms
Building automation User-facing controls for residential and commercial building systems such as climate, lighting, air quality, and security
In-vehicle infotainment Converged platform for GPS navigation, A/V entertainment, climate control, and external communications
IP camera Feature-enhanced video security system
IP media phone Telephony device with converged messaging, contacts, audio and video communications, and web/media display
Medical Platforms for medical imaging and managing patient records
Military/Aerospace Ruggedized, standardized computer, communications and storage elements amenable to interoperability and large-scale systems integration
Point of sale Connected cash registers, ATMs, and transaction terminals
Printers Support connected operation and converged fax, scan, and conversion features
Robotics Control and operation of industrial and retail robots
Network infrastructure Routers, firewalls, intrusion detection and prevention systems
Sensors Environmental and industrial process quality control sensors
Transportation In trains, for example, control of power train along with in-cabin climate control, data communications, and media display
Wireless infrastructure Modular compute, communications, and storage elements for extensible wireless infrastructure

What to Expect from the Rest of this Book

The stage is set. Modern embedded systems are computers with unique constraints. The continuing industrial trend toward designing electronic devices around embedded computer systems will result in a sustained and dramatic increase in the number of Internet-connected devices with software-defined feature sets.

Developers and programmers of these systems face a new set of opportunities and challenges. The remainder of this book explores both the principles that form the foundation of modern embedded systems design and the detailed skills and knowledge required to design and program these systems effectively.

Wherever possible, we will keep the discussion concrete. To do so, we illustrate concepts and provide software that targets the Intel® Atom™ embedded processor. The Intel Atom is a relatively recent entrant in the world of embedded systems, but it, in our opinion, best illustrates the challenges and opportunities that follow from our view of modern embedded computer systems.

This book contains a considerable amount of source code that may prove useful in your projects. In order to make it easy to follow along, we have also made available a reference hardware platform; it is the system we have used to develop the software, so it is the platform we recommend using as you work your way through the text.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.223.106.100