Book Image

Mastering Embedded Linux Programming

By : Chris Simmonds
Book Image

Mastering Embedded Linux Programming

By: Chris Simmonds

Overview of this book

Mastering Embedded Linux Programming takes you through the product cycle and gives you an in-depth description of the components and options that are available at each stage. You will begin by learning about toolchains, bootloaders, the Linux kernel, and how to configure a root filesystem to create a basic working device. You will then learn how to use the two most commonly used build systems, Buildroot and Yocto, to speed up and simplify the development process. Building on this solid base, the next section considers how to make best use of raw NAND/NOR flash memory and managed flash eMMC chips, including mechanisms for increasing the lifetime of the devices and to perform reliable in-field updates. Next, you need to consider what techniques are best suited to writing applications for your device. We will then see how functions are split between processes and the usage of POSIX threads, which have a big impact on the responsiveness and performance of the final device The closing sections look at the techniques available to developers for profiling and tracing applications and kernel code using perf and ftrace.
Table of Contents (22 chapters)
Mastering Embedded Linux Programming
About the Author
About the Reviewers

About the Reviewers

Robert Berger has been gathering practical and managerial experience in software design and development for embedded systems with and without hard real-time requirements since 1993. Since the beginning of the 21st century, he has been using GNU/Linux on desktops and server class machines, but mainly for embedded practices (automotive, industrial control, robotics, telecoms, consumer electronics, and so on). He regularly attends international events, such as Embedded World, Embedded Software Engineering Congress, Embedded Systems Conference, and Embedded Linux Conference as an expert and lecturer. His specializes mainly in training, but also in consulting (in German or English) worldwide. Robert's expertise ranges from the smallest real-time systems (FreeRTOS) to setups with multiple processors/cores and embedded GNU/Linux (user-, kernel-space, device drivers, hardware interfacing, debugging, multi-core, and the Yocto project) with a focus on free and open source software. He is a globetrotter. He is the CEO and embedded software specialist at Reliable Embedded Systems, which is based in St. Barbara, Austria. When he is not traveling, he lives with his family in Athens, Greece. Feel free to contact him on his website at

He has reviewed the book Embedded Linux Systems with the Yocto Project (Prentice Hall Open Source Software Development Series) by Rudolf J. Streif.

Tim Bird works as a senior software engineer for Sony Mobile Communications, where he helps Sony improve the Linux kernel for use in Sony's products. He is also the chair of the Architecture Group of the CE Working Group of the Linux Foundation. He has been working with Linux for over 20 years. He helped found two different embedded Linux trade associations and is the creator of the Embedded Linux Conference, which he still leads. Earlier in his embedded Linux career, Tim coauthored the book Using Caldera OpenLinux.

Mathieu Deschamps is the founder of ScourGE (, which provides open source software/hardware innovation services to its clients. They are leaders in the fields of telecommunication, mobile communication, industrial processes, and decision support systems.

He is an R&D business consultant and a trainer. Also, since 2003, he has been an independent tech-driver, involved in many large and small scale projects around GNU/Linux, Android, embedded systems engineering, and security.

Mark Furman, author of OpenVZ Essentials, currently works as a systems engineer for Info-Link Technologies. He has been in the IT field for over 10 years and specializes in Linux and other open source technologies. In his spare time, he enjoys writing and reviewing books on Linux and other open source technologies as well as tinkering with Arduino, Python, and Raspberry Pi projects at Knox Labs, a Hackerspace located in Knox County, OH.

Klaas van Gend graduated in systems and control engineering at Eindhoven University of Technology in the Netherlands. He worked for companies, including Philips, Siemens, and Bosch, writing software for printer prototypes, video encryption, car infotainment, medical equipment, industrial automation, and navigation systems. In 2004, he switched over to MontaVista Software, which was the market leader for embedded Linux. As a systems architect and consultant, he worked with many companies all over Europe, integrating embedded Linux into their products.

For the last few years, he has been working as a trainer and consultant for Vector Fabrics, a small start-up specializing in multi-core programming and software dynamic analysis. He teaches multi-core programming in C and C++ and helps customers improve software performance by utilizing hardware resources in a better way. Vector Fabrics' Pareon tool suite also automatically finds hard-to-find dynamic bugs, including data races, buffer overruns, use-after-free for heap and stack variables, and memory leaks.

He has authored over 100 magazine articles and papers on (embedded) Linux, programming, performance, systems design, and computer games. He cofounded the Embedded Linux Conference Europe and was a lead developer for several open source projects, including UMTSmon for 3G cellular networks and the physics puzzle game The Butterfly Effect.

When not at work, he reads urban fantasy or can be found at Aeroclub Nistelrode, piloting glider planes.

Behan Webster has spent two decades in diverse tech industries such as telecom, datacom, optical, embedded, and automotive writing code for a range of hardware from the very small to the very large. His Linux experience spans kernel programming, Embedded Linux, and board bring-up. Currently, he is the lead consultant at Converse in Code Inc, an embedded Linux engineer and project lead working on the LLVMLinux project as well as being a trainer for The Linux Foundation.