Another reason why Linux is popular is that its tools are open source too: the GNU of FSF. Because the tools and kernels are open source packages, the Linux can be ported to many platforms very quickly. As my experience of promoting embedded processor, tools are always the bottleneck for marketing. Development tool vendors are always waiting for your processor being a popular one. While you have to get their help to make your processor being a popular one. It is a dead loop.
As a result, the open source GNU tool chain helps Linux to be widest deployed OS in embedded systems. The basic binary tools are ld, gas, ar, gcc, glibc and many others.
GNU cross-compiler
Off-the-shelf cross-compilers
There are many off-the-shelf cross-compilers available. Usually these compliers can be easily found in Internet, especially the open source communities, silicon suppliers, Linux distribution suppliers. Please remember every cross-compiler has own configuration for host processor, host OS, host compiler, header files, libs, and target. We should record it and track it. The cross compliers are possible impact the development of a project.
Build from Source
If you can not find a handy compiler for your specific platforms, you should build the GNU cross tool chain from source code. And in order to build a cross tool chain, a native GCC should be available locally. Many Linux distributions have already integrated GCC in the package, but you must take care of the native GCC version as well. Additionally, you might be confused during the whole process of making a cross tool chain. Possibly you have to repeat the process to build libc first, and then use this libc to build cross-compiler. If you are using wrong environment setup or wrong patches, or different kernels, you will lose yourself in the source code. This GNU site offers some useful information for building cross tool chain.
Alternatives for glibc
Considering limited footprint of embedded systems, GNU glibc is too large to fit into some applications. Developers can use alternative libc for cross tool chain.
uClibc
C library optimized for embedded systems. uClibc is developed for uClinux project.
diet libc
Another C library developed by Felix von Leitner. This library was developed from scratch. The diet libc only supports ARM/MIPS/x86/PPC.
Java
Java becomes one of most important languages for computer, including embedded systems. Embedded Java is also a hot topic. Java is made up of Java language, Java VM and Java runtime. Java runtime is a collection of Java classes.
Blackdown
Blackdown project ports Sun's Java tools to Linux, which is fully based upon Sun's source code. But the source code is not open. Blackdown includes JDK and JRE for Linux.
Open source Java VM
There are many open source Java VMs available. Kaffe is one of the most famous one.
GNU Java Compiler
GCJ is part of GNU. It is an extension of GCC for processing Java source code and Java byte code. Especially it can compile Java source or Java byte code into native machine code.
Perl
Perl is a good language for event processing, widely used in server or scripting. Perl can not be ported to embedded systems since it can not be cross-compiled so far. But we found alternatives.
microperl
By Simon Cozens, smallest perl interpreter. It is all right to execute perl application software, but it can not support modules.
miniperl
miniperl is more like a standard perl with some limitation. But you have to setup a connection between host and embedded system during installation miniperl.
Python
Python was not designed for cross-compiling. But it can be cross-compiled anyway. But there is not standard solution for embedded Python. Check out the Klaus Reimer's blog.
IDE
At beginning of Linux, most problems about Linux development are lacking of IDE and debug tools. Now more and more IDEs are available for Linux development.
Anjuta, Anjuta is a very versatile Integrated development environment for c and c++ (Linux). Written in gtk/gnome and written for gtk/gnome.
Eclipse. A project aiming to provide a universal toolset for development. Open Source IDE, mostly provided in Java. Currently major IDE used in many projects of different kinds.
Glimmer. At the current time, Glimmer has syntax highlighting support for the following languages: Ada, Bash/Sh, C/C++, DTML, HTML, Java, Latex, GNU Make, x86 assembly.
KDevelop. Provides an easy to use Integrated Development Environment for Unix/X11 with support for KDE related development.
SourceNavigator, it is a source code analysis tool from Redhat. With it, you can edit your source code, display relationships between classes and functions and members, and display call trees.
Terminal Emulation
The embedded systems usually communicate with external computers with serial port, Ethernet. The terminal emulation software is used to communication with target systems. However not any terminal emulation software is working fine in any combination. For example, minicom can not work properly with U-Boot during file transfer. So the developers have to try different terminal emulation software sometimes. There are three choices in Linux: minicom, cu and kermit.
|