EMAC OpenEmbedded Fact Sheet
This page contains some basic information and frequently asked questions about EMAC OE Linux and embedded Linux in general. This information is helpful in deciding if EMAC OE will be a suitable OS choice as well as understanding what to expect from the system and its capabilities.
Linux is an open source operating system kernel. The project was originally started by Linus Torvalds and now has a very large community of developers and users all around the world. Linux is used in an extremely wide variety of devices such as industrial embedded systems, appliances, cell phones, desktop systems, and mainframe servers. Unix-like operating systems utilizing the Linux kernel are loosely referred to as Linux systems. Most Linux systems are a combination of the Linux kernel, GNU Utilities, and other software libraries and Open Source projects. These systems are also referred to as GNU/Linux.
 Embedded Systems
An embedded system is a device designed and configured for a specific purpose. These systems may or may not have an operating system but are generally controlled by a microprocessor or microcontroller.
OpenEmbedded is a build framework for embedded Linux that allows complete Linux systems to be compiled from source. OpenEmbedded is designed to work on any Linux distribution and has support for compiling systems for many different architectures. OE has support for 1000's of packages. See the OpenEmbedded Wiki for more information.
 EMAC OpenEmbedded Linux
EMAC OpenEmbedded is the Linux distribution used on the majority of EMAC products. The current version of EMAC OE, version 4.0, is primarily based on the 2009 stable branch of OpenEmbedded. EMAC customizes OpenEmbedded by adding support for EMAC hardware, patching software, and controlling the configuration of the operating system to create EMAC OE Linux. While EMAC OE is designed for embedded systems, it also serves as a full-featured Linux system, including common GNU utilities provided by Busybox and other projects, servers, networking, filesystem support, hotplugging support, and other applications.
 EMAC OE vs Desktop Linux
There are many high quality Linux distributions available for desktop systems, such as Debian, Ubuntu, Gentoo, etc. However, these operating systems are not well-suited for use in an embedded system for several reasons. Because extreme reliability is a necessary quality for embedded systems, the operating system must be a controlled environment with no chance for changes that are untested on the target hardware. In addition, embedded systems generally have no moving parts, utilize flash memory, and must be able to reliably recover from unexpected loss of power. The use of flash memory requires that writes to the flash are reduced and filesystems utilizing wear-leveling are utilized to prevent wearing out the flash. The following qualities of EMAC OE make it well suited for use in embedded systems:
- EMAC OE is built completely from source, allowing control over exactly which software packages are included, which versions and patches are used, and how they are installed on the system.
- EMAC OE systems are designed to avoid writing to the root filesystem under normal operation. Volatile files such as log files and dynamic settings are stored on a temporary RAM filesystem. The root flash is mounted readonly by default on most systems. This allows for protection of flash memory and corruption prevention from power failure.
- EMAC OE utilizes robust journaling filesystems such as ext3 on Compact Flash disks and JFFS2 on raw flash devices. This adds to the performance of the systems and increases flash life on flash that does not have hardware wear-leveling.
- The Linux kernels developed for EMAC products are configured to only include support for commonly needed hardware and a select set of necessary features. This improves system performance and boot time by reducing resource usage.
 Using Other Linux Distributions on EMAC Hardware
Given the above comparison of EMAC OE to Desktop Linux distributions, installing a Desktop Linux distribution on EMAC systems is not generally recommended. However, this is usually possible and in some cases may be a valid design decision. Linux distributions are readily available for x86 hardware as well as ARM systems, though customization may be required depending on the target hardware. If the system will be used as a general-purpose system without the need for extreme reliability that an embedded system requires, a desktop Linux distribution may be an appropriate choice. Keep in mind that utilizing flash memory still requires controlling the number of writes to the disk to prevent flash burn out. An advantage of desktop Linux distributions is that they are inherently more flexible than embedded operating systems. Also, other embedded Linux systems may be used on EMAC hardware if EMAC OE does not suit the needs of the project.
 Developing Software for EMAC OE
In order to make software development easier for EMAC OE systems, EMAC provides a Software Development Kit (SDK) used to cross-compile programs for the target hardware. There are several ways of setting up the SDK for development, including: installing the SDK on an existing Linux PC, installing the SDK on a virtual Linux machine running on top of another operating system, and purchasing a pre-built Linux Development Computer (LDC) from EMAC.
The EMAC SDK uses a customized version of the Eclipse IDE as the development environment. Remote development using the EMAC SDK and toolchain is necessary because EMAC OE systems do not include GCC or other development tools by default. This is done to save system resources and because most single board computers are not designed with the interfaces or resources to make on-board development efficient. Beneficially, this makes developing software for EMAC OE systems feel similar to developing desktop software. This is because the Eclipse IDE automatically handles sending the compiled program to the remote system and running it on the remote system. Eclipse also allows debugging the remotely executing program while the local Eclipse GUI displays the view of the watches, breakpoints, etc., just like in desktop development.
Remote debugging can also be done manually using GDBserver paired with the cross-platform-GDB provided with the SDK. See the EMAC OE Software Development documentation pages for instructions and more information.
 Building EMAC OE From Source
While most customers do not utilize the option, it is possible to create an EMAC OE development environment and build the EMAC OE image and other OE packages from source. A Linux PC or virtual machine is required for this task. EMAC provides the custom additions to the standard OE stable repository on our public SVN server. Scripts are also provided for setting up the development environment and building images. Support for building any packages that are not a part of the standard EMAC image for the target hardware will be provided on a contractual basis only. See the EMAC OE Development documentation for more information.
 Open Source Licenses
Part of using an Open Source operating system in a commercial environment includes understanding the licenses used for the software on the system. The software must be used under the terms of the license under which it is released. For example, a different set of rules apply to using a library released under the GPL to one released under the LGPL. The Linux kernel is released under the GPL (GNU General Public License). Common open source licenses are the GPL, LGPL, MIT, BSD, and many others. Please note that developing software for a Linux system does not mean that you need to release your source code. The terms of the licenses of the software to which your software links usually determines the terms to which you are bound. Usually, developing software for an embedded Linux system will not require you to release any of the source code you wrote. While licensing requires evaluation, open source software is used very commonly in commercial environments without issue. EMAC will provide source code and configuration to customers for all open source software that has been delivered in binary form. The Open Source Initiative maintains a list of approved Open Source licenses here: www.opensource.org/licenses. Note that this may not be an exhaustive list of all open source licenses encountered depending on the software packages utilized.
 Additional Information
For additional information not covered here, contact EMAC Support at www.emacinc.com/support.