Embedded Linux

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box
Tux.png Applies to Linux

Introduction

By definition Embedded Linux is just a particular use of the well-known GNU/Linux duo. So most of documentation about GNU/Linux is meaningful for embedded Linux systems too. However, embedded Linux systems have some peculiarities you will not find on a desktop PC. This page aims to provide useful links and information about these issues. It also includes a section related to frequently asked questions that have a general validity across different embedded Linux platforms.

Books

Reading of this book http://shop.oreilly.com/product/9780596002220.do is strongly recommended. Practically speaking, that book covers all the issues involved in developing software for such systems (from tool chain organization to the most famous file systems running on top of MTD). It is not a reference guide, but it provides a complete and exhaustive overview that makes the developer to save a lot of time in searching such information over the Internet.

Links

If you need a brief but still exhaustive overview of the Linux and Embedded Linux world, please have a look at the excellent training section of Free Electrons web site: http://free-electrons.com/docs/.

Another rich source of information is the web site http://elinux.org.

This link points to a document writtend by Texas Instruments for a student workshop. Even if it addresses Texas Instruments processors, it provides a lot of useful information that are platform-independent.


Embedded distributions

The following picture shows the available choices for Linux Embedded distributions, ranging from a full custom solution (for skilled users with time to spend on the build tasks) to a commercial solution (you should pay for the service):

Embedded linux distros.png

Ubuntu on ARM

Please refer to the Running Ubuntu Core page to learn how to run an Ubuntu-based root file system for ARM architecture.

FAQs

Q: How to run automatically run applications on startup?

A: Generally speaking, several initialization systems are available on Linux platforms. By default, reference root file systems provided by DAVE Embedded Systems make use of System V init scripts. As such, user space application/services are automatically launched at boot time by the Init process (http://en.wikipedia.org/wiki/Init).

Init is configured customizing the /etc/inittab file and all the related scripts/links contained in the /etc/init.d and /etc/rc*.d directories. The system starts with a default runlevel (es: 5) and launches all the scripts contained in /etc/rcX.d/ (with X matching the runlevel), which are symbolic links to the scripts stored in /etc/init.d.

It is advised to take advantage of this mechanism, creating and putting in place the scripts that launch your application. It is also possible to invoke the scripts directly from the /etc/inittab file but this approach is discouraged.

For detailed information, please refer to the following links:

It is worth remembering that if Yocto build system is used to generate the root file system, different initialization schemes may be chosen, such as systemd.