• Adoption of Linux among developers and manufacturers of embedded products continues to accelerate.
• Use of Linux in embedded devices continues to grow at an exciting pace.
• In this chapter, we present many of the factors driving the growth of Linux in the embedded market.
• Several standards and relevant organizations influencing embedded Linux were presented in this chapter.
1.5.1. Suggestions for Additional Reading
The Cathedral and the Bazaar
Eric S. Raymond
O'Reilly Media, Inc., 2001
Linux Standard Base Project
www.linuxbase.org
Open Source Development Labs, Inc.
www.osdl.org
Chapter 2. Your First Embedded Experience
Often the best path to understanding a given task is to have a good grasp of the big picture. Many fundamental concepts can present challenges to the newcomer to embedded systems development. This chapter takes you on a tour of a typical embedded system and the development environment, with specific emphasis on the concepts and components that make developing these systems unique and often challenging.
Several key attributes are usually associated with embedded systems. We wouldn't necessarily call our desktop PC an embedded system. But consider a desktop PC hardware platform in a remote data center that is performing a critical monitoring and alarm task. Assume that this data center is normally not staffed. This imposes a different set of requirements on this hardware platform. For example, if power is lost and then restored, we would expect this platform to resume its duties without operator intervention.
Embedded systems come in a variety of shapes and sizes, from the largest multiple-rack data storage or networking powerhouses to tiny modules such as your personal MP3 player or your cellular handset. Some of the usual characteristics of embedded systems include these:
• Contain a processing engine, such as a general-purpose microprocessor
• Typically designed for a specific application or purpose
• Includes a simple (or no) user interfacean automotive engine ignition controller, for example
• Often is resource limitedfor example, has a small memory footprint and no hard drive
• Might have power limitations, such as a requirement to operate from batteries
• Usually is not used as a general-purpose computing platform
• Generally has application software built in, not user selected
• Ships with all intended application hardware and software preintegrated
• Often is intended for applications without human intervention
Most commonly, embedded systems are resource constrained compared to the typical desktop PC. Embedded systems often have limited memory, small or no hard drives, and sometimes no external network connectivity. Frequently, the only user interface is a serial port and some LEDs. These and other issues can present challenges to the embedded system developer.
2.1.1. BIOS Versus Bootloader
When power is first applied to the desktop computer, a software program called the BIOS immediately takes control of the processor. (Historically, BIOS was an acronym meaning Basic Input/Output Software, but the acronym has taken on a meaning of its own because the functions it performs have become much more complex than the original implementations.) The BIOS might actually be stored in Flash memory (described shortly), to facilitate field upgrade of the BIOS program itself.
The BIOS is a complex set of system-configuration software routines that have knowledge of the low-level details of the hardware architecture. Most of us are unaware of the extent of the BIOS and its functionality, but it is a critical piece of the desktop computer. The BIOS first gains control of the processor when power is applied. Its primary responsibility is to initialize the hardware, especially the memory subsystem, and load an operating system from the PC's hard drive.
In a typical embedded system (assuming that it is not based on an industry-standard x86 PC hardware platform) a bootloader is the software program that performs these same functions. In your own custom embedded system, part of your development plan must include the development of a bootloader specific to your board. Luckily, several good open source bootloaders are available that you can customize for your project. These are introduced in Chapter 7, "Bootloaders."
Some of the more important tasks that your bootloader performs on power-up are as follows:
• Initializes critical hardware components, such as the SDRAM controller, I/O controllers, and graphics controllers
• Initializes system memory in preparation for passing control to the operating system
• Allocates system resources such as memory and interrupt circuits to peripheral controllers, as necessary
• Provides a mechanism for locating and loading your operating system image
• Loads and passes control to the operating system, passing any required startup information that might be required, such as total memory size clock rates, serial port speeds and other low-level hardware specific configuration data
This is a very simplified summary of the tasks that a typical embedded-system bootloader performs. The important point to remember is this: If your embedded system will be based on a custom-designed platform, these bootloader functions must be supplied by you, the system designer. If your embedded system is based on a commercial off-the-shelf (COTS) platform such as an ATCA chassis, [4] ATCA platforms are introduced in Chapter 3, "Processor Basics."
typically the bootloader (and often the Linux kernel) is included on the board. Chapter 7 discusses bootloaders in detail.
2.2. Anatomy of an Embedded System
Figure 2-1 shows a block diagram of a typical embedded system. This is a very simple example of a high-level hardware architecture that might be found in a wireless access point. The system is centered on a 32-bit RISC processor. Flash memory is used for nonvolatile program and data storage. Main memory is synchronous dynamic random-access memory (SDRAM) and might contain anywhere from a few megabytes to hundreds of megabytes, depending on the application. A real-time clock module, often backed up by battery, keeps the time of day (calendar/wall clock, including date). This example includes an Ethernet and USB interface, as well as a serial port for console access via RS-232. The 802.11 chipset implements the wireless modem function.
Figure 2-1. Example embedded system
Often the processor in an embedded system performs many functions beyond the traditional CPU. The hypothetical processor in Figure 2-1 contains an integrated UART for a serial interface, and integrated USB and Ethernet controllers. Many processors contain integrated peripherals. We look at several examples of integrated processors in Chapter 3, "Processor Basics."
2.2.1. Typical Embedded Linux Setup
Often the first question posed by the newcomer to embedded Linux is, just what does one need to begin development? To answer that question, we look at a typical embedded Linux development setup (see Figure 2-2).
Figure 2-2. Embedded Linux development setup
Here we show a very common arrangement. We have a host development system, running your favorite desktop Linux distribution, such as Red Hat or SuSE or Debian Linux. Our embedded Linux target board is connected to the development host via an RS-232 serial cable. We plug the target board's Ethernet interface into a local Ethernet hub or switch, to which our development host is also attached via Ethernet. The development host contains your development tools and utilities along with target filesnormally obtained from an embedded Linux distribution.
Читать дальше