Introduction

When I got started in embedded Linux nearly a decade ago, the question was, "Should I even use an operating system?" Going with Linux frequently meant porting the operating system to run on your target hardware and building to the tools to do so. Much has changed over the years, to the point that Linux is selected by default for many projects, and the decisions revolve around what features of the operating system can be used on the project. The question today is, "How should I configure my Linux distribution?" In technology terms, this is a seismic shift in developer attitudes in a very short time frame.

Linux is so pervasive in the embedded space that embedded processors and boards ship with Linux by default. Buyers simply expect that the board will boot Linux and they'll have the tools they need for embedded development provided along with the hardware. Unlike in the early days of Linux, as a developer, you won't be porting Linux to your board but rather configuring an already-running Linux kernel and root file system so that they suit your application.

With this background in mind, I wrote this book from the perspective of a user who is starting their project with a Linux distribution already running on the board. It may not the the distribution that eventually ships with the product, but it will likely serve as a starting point. Tasks like building the cross-compiler from scratch are documented in the book so you understand the process, but you will probably use a cross-compiler that has been provided with the board so you can concentrate on the application. However, learning how to build and configure the tools for a Linux system isn't a wasted effort, because when you need to squeeze every bit of memory out of your system, this is an essential skill.

Furthermore, with new System on a Chip (SOC) designs, the Linux distribution that comes on the board has all the drivers necessary for the devices on the chip. Only in the rarest events is driver development necessary. This means that most engineers spend time customizing the kernel rather than building new kernel components, and the total time spent doing any sort of kernel configuration or development is a fraction of what it was in years past.

As the processors in embedded devices become more powerful, developers are finding they can use languages other than C for development. It's common for C++ to be used for development as well as other higher-level language like Python, TCL, Java, and even Perl or PHP. To somebody who started doing embedded in assembly, using a language like Perl on an embedded target is nearly heresy, if not outright apostasy; however, these higher-level languages greatly increase the productivity of embedded development. In an industry where time-to-market is paramount, higher-level languages will become more mainstream.

Embedded projects have a development process unlike other software projects. First there is the design process, which usually involves creating a special enclosure and a user interface that's probably a small LCD display and some buttons; but more important are the deployment and update of the software. The code for the project isn't put on a CD or a web site but must be downloaded on the board along with the Linux distribution. After the initial installation of the software, you'll likely want to update the software with new versions that contain bug fixes and other goodies. Depending on how your system is configured, updating your system may be a project in itself.

If you're starting an embedded project for your work or have purchased one of the many, now very inexpensive board targeted to hobbyists, I wish you the best of luck in your endeavors. Using Linux in an embedded project is easier, and more fun, than ever.

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

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