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