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.
Contents
Linux
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
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 4.0 of EMAC OE 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 features 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
This paragraph is BORING to read, and confusing. It needs to be reworded. Software development for EMAC OE systems is accomplished using a Software Development Kit (SDK) provided by EMAC. This SDK is installed on a PC running Linux and used to cross-compile software for the target hardware. If a Linux PC is not available for development, a Virtual Linux system may be installed under another operating system using software such as VirtualBox. A customized distribution of the Eclipse IDE is also provided by EMAC for use with EMAC OE SDKs. EMAC OE systems do not include GCC or other development tools by default (though debugging tools such as GDBserver, Strace, and others are included). This is done to save system resources and also because most single board computers are not designed with the interfaces or resources to make on-board development efficient. Remote development using an SDK and toolchain allows use of IDEs such as Eclipse for development as well as taking full advantage of the resources of a desktop PC for compiling. Software is uploaded and tested through network FTP and SSH servers on the EMAC OE system. Remote debugging is accomplished using GDBserver in conjunction with the cross-GDB provided with the SDK. See the EMAC OE Software Development documentation pages for 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 it is released under. 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. 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.