Open Source Softwares for Embedded Systems Development

 

 

One common perception regarding Open Source softwares is that they are free-of-charge (i.e. a free software, normally known as freeware). While this is generally true, the important distinction of Open Source software from freeware is the availability of the source code, which provides the freedom for the software to be examined, modified and used for all purposes (including commercial) without restriction. This is particularly important for embedded system development where adaptations for customized design are an integral part of the development process.

 

Although Open Source is still generally associated with Linux, there are now many other software packages and development tools that are available under similar terms for embedded system development and applications deployment. This article briefly presents some of these ‘free’ software packages that are suitable for embedded systems development work.  

 

While Linux is generally perceived to be targeted for x86 based desktop and servers, it is also increasingly being used for embedded systems. It comes in the form of Embedded Linux optimized to suit different embedded processor architectures and families, with the most familiar one being the Android. For more application specific embedded system with tight real time and footprint requirements, there are the eCos (embedded Configurable operating system) and the FreeRTOS where the applications are compiled and integrated together with the operating system.

 

For development tools, the most familiar one will be the GNU package usually associated with Linux, which includes the GCC compiler, Binutils linker and assembler, Glibc C library,  and Coreutils core utilities tools. While the GCC and Binutils can generally be adapted for embedded systems with appropriate switches, Glibc C and the Coreutils would usually be too large to fit well with typical embedded resources. As such, there are equivalent but shrink down version like uClibc and Busybox that are specifically targeted for embedded applications. Furthermore, these are combined together in package like Buildroot that simplifies the generation of an embedded Linux based root file system for specific target.

 

For software development and debugging environment, there is the Eclipse that comprises of a full GUI based IDE with different plug-ins available to support various programming languages (e.g. Eclipse CDT for C/C++ program). Coupled with GDB and OpenJTAG compatible JTAG debugger, it provides a development and debugging environment that is as powerful as most of the commercial versions available in the market, but come at minimal or no cost.

 

And last but not least, there are the bootloaders like the U-boot (the Universal Boot Loader) and the RedBoot (derived from eCos) where the source code can be studied and modified to suit the specific need of a customized embedded platform.

 

 

 

Assoc Prof Nicholas Vun

DreamCatcher Technical Training

May 2010