What types of embedded systems are built with Linux? Why do people choose Linux? What issues are specific to the use of Linux in embedded systems? How many people actually use Linux in their embedded systems? How do they use it? All these questions and many more come to mind when pondering the use of Linux in an embedded system. Finding satisfactory answers to the fundamental questions is an important part of
building the system. This isn’t just a general statement. These answers will help you convince management, assist you in marketing your product, and most of all, enable you to evaluate whether your initial expectations have been met. This is discussed in my next few posts.
Tuesday, June 16, 2009
Real Life and Embedded Linux Systems
Posted by ankit at 9:30 PM 0 comments
Monday, June 15, 2009
What Is Real-Time Linux?
Initially, “Real-Time Linux” uniquely designated the RTLinux project released in 1996 by Michael Barabanov under Victor Yodaiken’s supervision. The original goal of the project was to provide a mechanism for deterministic response times under a Linux environment. Later, the project was expanded to support much more than the originally intended applications, and today supports a variety of non-embedded uses, such as
real-time stock market trading systems and other “enterprise” applications. RTLinux was sold to Wind River in early 2007.
Today, there are several other big name real-time projects for Linux, including one that is aiming to add real-time support to the official Linux kernel. You will learn much more about these projects in the latter including coverage of some of the innovative concepts and development ideas being worked on. Of course, by the time you read this book much of this technology may be even more commonplace than it is now, especially once real-time capabilities are available in every kind of Linux system installed from here to Timbuktu.
Posted by ankit at 9:28 PM 0 comments
Sunday, June 14, 2009
What Is Embedded Linux?
Embedded Linux typically refers to a complete system, or in the context of an embedded Linux vendor, to a distribution targeted at embedded devices. Although the term “embedded” is often also used in kernel discussions (especially between developers who have “embedded concerns”—words often used in the community), there is no special form of the Linux kernel targeted at embedded applications. Instead, the same Linux kernel source code is intended to be built for the widest range of devices, workstations, and servers imaginable, although obviously it is possible to configure a variety of optional features according to the intended use of the kernel. For example, it is unlikely that your embedded device will feature 128 processors and terrabytes of memory, and so it is possible to configure out support for certain features typically found only on larger Linux systems. In the context of embedded development, you will typically encounter embedded Linux systems—devices that use the Linux kernel and a variety of other software—and embedded
Linux distributions—a prepackaged set of applications tailored for embedded systems and development tools to build a complete system. It is the latter that you are paying for when you go to an embedded Linux vendor. They provide development tools such as cross-compilers, debuggers, project management software, boot image builders, and so on. A growing number of vendors have chosen to integrate much of this functionality into customized plug-ins for their own versions of the communitydeveloped Eclipse graphical IDE framework.
Whether you use a vendor is entirely up to you—few of the examples mentioned will make any assumption as to your reliance or otherwise on a Linux vendor. In fact, much of this book is intended to equip you to build your own tools and tailored Linux distributions. This helps both those who want to use vendor supplied tools and those who do not. Understanding is key in either case, since greater understanding will help you to get more done faster. The bottom line is, of course, about time and resources. Even though this book will help you, should you wish to go it alone, you may choose to buy into an embedded Linux vendor as a way to reduce your product time to market (and to have someone to yell at if things don’t work out according to plan).
In general, we will refer to the host system used for developing the embedded Linux system as the “host system,” or “host” for short. The target, which will be the embedded Linux system, will be referred to as the “target system,” or “target.” Distributions providing development frameworks will be referred to as “development distributions” or something similar.This kind of nomenclature should be familiar to anyone who has experience working with embedded systems. Distributions that provide tailored software packages will be referred to as “target distributions.”
Posted by ankit at 9:21 PM 0 comments
Saturday, June 13, 2009
What Is Linux?
Technically speaking, Linux refers only to an operating system kernel originally writtenby Linus Torvalds. The Linux kernel provides a variety of core system facilities required for any system based upon Linux to operate correctly. Application software relies upon specific features of the Linux kernel, such as its handling of hardware devices and its provision of a variety of fundamental abstractions, such as virtual memory, tasks
(known to users as processes), sockets, files, and the like. The Linux kernel is typically started by a bootloader or system firmware, but once it is running, it is never shut down (although the device itself might temporarily enter a low-powered suspended state).
These days, the term “Linux” has become somewhat overloaded in everyday communication. In large part, this is due to its growing popularity—people might not know what an operating system kernel is or does, but they will have perhaps heard of the term Linux. In fact, Linux is often used interchangeably in reference to the Linux kernel itself, a Linux system, or an entire prebuilt (or source) software distribution built upon the Linux kernel and related software. Such widely varying usage can lead to difficulties when providing technical explanations. For example, if you were to say, “Linux provides TCP/IP networking,” do you mean the TCP/IP stack implementation in the Linux kernel itself, or the TCP/IP utilities provided by a Linux distribution using the Linux kernel, or all of the above?
The broadness of the usage of the term has led to calls for a greater distinction between uses of the term “Linux.” For example, Richard Stallman and the Free Software Foundation often prefix “GNU/” (as in “GNU/Linux”) in order to refer to a complete system running a Linux kernel and a wide variety of GNU software. But even terms such as these can be misleading—it’s theoretically possible to build a complete Linux-based system without GNU software (albeit with great difficulty), and most practical Linux systems make use of a variety of both GNU and non-GNU software. Despite the confusion, as more people continue to hear of Linux, the trend is toward a generalization of the term as a reference to a complete system or distribution, running both GNU and non-GNU software on a Linux kernel. If a friend mentions that her development team is using Linux, she probably means a complete system, not a kernel.
A Linux system may be custom built, as you’ll see later, or it can be based on an already available distribution. Despite a growth in both the availability of Linux distributions targeted at embedded use, and their use in embedded Linux devices, your friend’s development team may well have custom built their own system from scratch . Conversely, when an end user says she runs Linux on the desktop, she most likely means that she installed one of the various distributions, such as Red Hat Enterprise Linux (RHEL), SuSE Linux Enterprise Server (SLES),
Ubuntu Linux, or Debian GNU/Linux. The end user’s running Linux system is as much a Linux system as that of your friend’s, but apart from the kernel, their systems most likely have very different purposes, are built from very different software packages, and run very different applications.
When people use the term Linux in everyday conversation, they usually are referring to a Linux distribution, such as those just mentioned. Linux distributions vary in purpose, size, and price, but they share a common goal: to provide the user with a prepackaged, shrinkwrapped set of files and an installation procedure to get the kernel and various overlaid software installed on a certain type of hardware for a certain purpose.
In the embedded space, a variety of embedded Linux distributions are available, such as those from MontaVista, Wind River, Timesys, Denx, and other specialist vendors. These specialist embedded Linux distributions are generally not targeted at generic desktop, workstation, or server use like their “mainstream” counterparts. This means that they typically won’t include software that is not suited for embedded use.
Beginning with the next chapter and throughout the remainder of this book, we will frequently avoid referring to the word “Linux” on its own. Instead, we will generally refer directly to the object of discussion, so rather than talking about the “Linux kernel,” the “Linux system,” and the “Linux distribution,” we will generally refer only to the “kernel,” the “system,” and the “distribution,” respectively. In each of these circumstances,
“Linux” is obviously implied. We will use the term “Linux,” where appropriate, to designate the broad range of software and resources surrounding the kernel.
Posted by ankit at 9:18 PM 0 comments