The OE 5.X release represents the next generation of embedded Linux. The new crop of embedded machines on the market have become powerful enough to justify bringing some of the best parts of Linux distributions that are targeted towards servers and desktops into the embedded realm. OE 5.X is designed to make developing software for embedded Linux easier than ever before.
Quite a few new features are being introduced with OE 5.X to support the goal of streamlining the development process and improving the embedded Linux software development experience. These features can be broken down into the following categories.
The underlying operating system, Linux, has seen a refresh to the much more modern 3.10 kernel on ARM, and the 3.14 kernel on x86 systems. This updated kernel provides improved support for the ARM architecture, new drivers for new hardware, and the Device Tree File System for ARM hardware. Device Tree is a new way of specifying hardware parameters which pulls memory offset specifications (and similar) out of the kernel binary and puts them into a separate file which can be maintained independently of the kernel.
OE 5.X uses more modern filesystems to enable faster access to files, larger maximum filesystem sizes, and improved wear leveling on the underlying flash devices. The following filesystems are now a part of OE 5.X:
- ext4 - for eMMC/mSATA/SD/CF devices
- JFFS2 - for NAND flash devices
The filesystem is now generated using the Yocto build system, which enables a more streamlined and simpler process for generating custom filesystems based on our available base images. The Yocto Project is hosted by engineers at Intel, and is built upon the time tested OpenEmbedded project.
EMAC OE 5.X includes a new SDK with an updated GNU gcc compiler (version 4.9.1) which brings enhanced optimization capabilities, advanced code generation, and improved (preliminary) support for C++11 features. The gcc cross compilers come bundled with support for the CMake build system which greatly eases the work involved in creating a build system for today's complex software. The CMake system can be used from the command line as well as from the IDE, and is the default build system for new projects. EMAC OE 5.X provides tools for generating the base CMake files from the commandline or from the IDE, allowing you to get started quickly whether you choose to use the commandline or an IDE for your development work.
EMAC OE 5.X now includes the Qt Creator IDE as the standard development environment. This IDE provides a polished, sophisticated development environment which can be used for developing any type of application in C or C++. For Qt, it provides a sophisticated GUI editor and code generation wizards to enable RAD. The integrated help system is of use whether the issue with the application under development is related to Qt, Linux, or just standard C/C++.
EMAC OE 5.X now includes a wealth of tools to enable development to proceed faster than ever before. These tools ease the effort required for numerous development tasks.
Some of the development work in a typical project requires performing complex tasks which are done so infrequently that most developers need to look them up each time they're performed. These tasks typically have eaten into a project's time by taking much longer than anticipated to perform. EMAC OE 5.X includes tools to make these tasks quick, simple, and intuitive. These tasks include:
- Timezone Configuration.
- Splashscreen Configuration.
- Touchscreen Calibration.
- Configuring software to automatically start on boot.
- Finding the serial ports on the development desktop from among the dozens of device nodes which could all be ports.
- Creation of desktop icons for opening serial terminals for your devices.
- Configuring a system to log messages to a remote syslog server to enable capturing everything that happened on a machine right up to the point where it froze (without losing any messages).
Other tasks, which are performed often by developers, can be cumbersome. EMAC OE 5.X provides tools to make these chores easy, too:
- Sending a compiled binary to a remote board and executing it.
- Debugging a program on a remote board.
- Ensuring the root filesystem is writeable before attempting to copy files to it, or changing files that are already there.
- Maintaining a list of remote machines, with their IP addresses automatically updated as they change (usually due to DHCP leases handing out different addresses). The remote machines can be addressed by a name assigned by the developer, or by MAC or IP address, to perform any of the above tasks, plus:
- Copy files to/from remote machines.
- Browse the remote filesystem.
- Ping the boards to see if they're alive.
- Run programs on the remote board (any program).
- Support developer scripts to automate routine tasks during the development process.
Using these tools, the developer can easily create scripts to perform the following routine tasks without having to enter a password for the remote board a single time while running the script. A typical script might perform the following tasks:
- Shut down the webserver on the remote board.
- Remove all the web files from the remote board (to ensure there won't be stale files left behind), then replace them with the current locally held set of web files from the developer's desktop.
- Remove and replace custom binary executables on the remote board.
- Update the autostart scripts for executing programs on boot to ensure that they will start the current crop of programs that need to be run.
- Copying configuration files into place on the remote board.
- Copying content files (pictures, documents, videos, sound clips, database files, etc.) onto the remote board.
- Send to the board a script to verify consistency of the files installed and/or to perform some final installation steps, and execute it out of a RAM disk.
- Reboot the machine so that the developer can ensure it will come up into the desired state through every step of the development process.
The above tasks have typically been very time consuming tasks, which has led to developers usually only performing a minimal subset of these tasks during each phase of the development cycle.
EMAC OE 5.X tools make it easy to provide these tasks every time, which, in addition to highlighting the cause of a problem as soon as possible after a change causes it, enables the following additional benefits:
- The script can be used to program a new board, and continue development painlessly, when the previous development hardware has been compromised by an unexpected event caused by a bug in some part of the system under development or by some other spurious event.
- Additional units can be programmed to provide the necessary equipment for other developers on a team.
- Multiple units can easily be updated simultaneously. With the IP address tracking of OE PhoneHome, no scripts will need to be edited to account for changing IP addresses so long as the boards are referred to by name or by MAC address in the script which uses OE PhoneHome.
- Small production runs can be filled easily in house without the need to have a custom image at EMAC's facility, since the script can be used to apply your latest and greatest version of your software to the standard or customized EMAC OE Linux image which was provided to you by EMAC. This can often prove useful to start pushing hardware out the door with your latest software to the customers who've been waiting for it the day you've finished it, while you wait for a larger shipment of pre-programmed hardware to come from EMAC with your updated filesystem image.
Easy Installation on Ubuntu Linux
EMAC OE 5.X software and documentation can now be installed more easily than ever before! No longer is the process a long, drawn out, cumbersome task. With EMAC OE 5.X, you can now get up and running with EMAC's offerings before you even take your first break in the morning.
EMAC OE 5.X features packages prebuilt for our supported Linux distributions, Ubuntu 12.04 LTS and Ubuntu 14.04 LTS. These versions of Ubuntu were chosen for their stability and high overall quality. With the Ubuntu repository server at EMAC's facility, the EMAC SDK, IDE, tools, examples, and documentation packages can now be installed as easily as any other software provided by Ubuntu. Simply apt-get install or use the Ubuntu Software Center to install and/or update these packages from EMAC (after you have configured your machine to point to EMAC's apt repository).
EMAC has completely revamped its release testing for the EMAC OE 5.X release series. The new testing process provides a far more comprehensive and exhaustive method of testing our software and hardware together to ensure the highest quality experience possible. Throughout the 5.X release series, we will continue to improve and refine this testing process to ensure that each release is even better than the previous.
EMAC OE 5.X provides a number of software packages which weren't provided with previous versions of EMAC OE. These new packages provide additional capabilities and extend existing capabilities. These packages were carefully chosen to ensure that the best available tools are provided across the full range of tasks which need to be performed on EMAC OE machines.
The following list shows the new tools which have been added or updated, and what you will gain from each one.
- ethtool - This tool will allow you to inspect the network interfaces at the hardware level, allowing you to see if the physical link is good and, if so, what speed it's running at. No more guessing as to whether your networking issue is a hardware or software issue. If this shows your hardware is working correctly, you know it's a software configuration issue.
- lighttpd - This is a much more sophisticated web server than the one provided by Busybox. It was a very popular custom package for the 4.0 series, so it is now included by default in 5.X.
- vim - The real vim, not the Busybox version of vi. This provides syntax highlighting, undo, redo, macros, last position memory, and all of the other powerful features of vim that are missing from Busybox vi.
- wget and ftpput - These provide a simple way to retrieve files from a webserver and to push them to a webserver. This can make retrieving updated files much simpler.
- strace - Shows the system calls made by any executable which is run through it. This is a very powerful tool for debugging.
- ntp and ntpdate - These tools provide a method to update the system clock to the time provided by the atomic clocks which share their time over the Internet. These full versions are more reliable and more sophisticated than the Busybox version.
- minicom - Much more sophisticated than microcom, this tool provides the same powerful terminal client you use on your desktop.
- htop - This tool provides a sophisticated view into what's running on your system.
- sudo - This tool allows for execution of a program with the elevated privileges of the superuser.
- rsync - This tool allows for easy remote file synchronization between two computers.
- file - This tool lets you inspect files to determine what type they are and various properties of them.
- evtest - This tool provides a way to diagnose issues with input events.
- bash - The real bash shell. Much more powerful than the Busybox shell, and much better for scripting.
- procps - The full suite of process utilities, such as ps, kill, watch, uptime, free, pgrep, sysctl, and top, the full versions of these tools provide the useful functionality which was missing from the Busybox versions.
- inotify-tools - These tools provide filesystem notifications which enable scripts and programs to only perform events after a file or directory has been modified/created/deleted/etc. No polling required.
- tftp client - Easily download files from a tftp server with the integrated tftp client.
- iptables - The standard tool for configuring firewalls on Linux.
- tcpdump - An invaluable tool for debugging firewalls and TCP/UDP/IP connections of any kind.
This partial list shows just the highlights of the new software that's part of EMAC OE 5.X. All of the software previously provided in OE4 is available in 5.X as well.
Other software provided by OE 5.X includes:
- nano - Basic text editor.
- amidi/aplaymidi/arecordmidi - Simple MIDI music player/recorder/controller.
- candump/canecho/cansend/cansequence - Tools for working with a CAN bus (included only on systems which have CAN support).
- Tools for working with flash memory.
- opkg - Package management tools.
- mpg123 - MPEG Audio Decoder/Player
- Memory testing tools.
- Busybox - The embedded "Swiss Army Knife"
- Openssh sshd - SSH server (and client).