Explanatory list of commonly used Linux projects


Commonly Used Projects

This part lists the more frequently used open source projects for embedded Linux projects. This is by no means an exhaustive catalog, but if you wonder what's available to you as a Linux engineer, it serves as an excellent starting point. One project not listed is BusyBox, because it merits a article unto itself.

DirectFB

DirectFB is a graphics library that runs directly on top of the framebuffer device and provides functionality similar to X windows. DirectFB doesn't have the device management, extensibility, or hardware support as X windows.

Dropbear

This project offers a complete SSH 2 server and client in as little as a few hundred kilobytes. The project was created for small systems and has maintained a very small footprint over the years. Despite its small amount of memory, Dropbear has some extra features like X11 forwarding; you can even configure the program to use public keys for easy login. Even if the device isn't on a public network, having ssh running makes diagnostics easier, because you have an easy way to access the device. Dropbear's maintainers have accepted patches so that the program cross-compiles nicely with small C libraries like uClibc and dietlibc.

QT/Qtopia

QT is a product that offers a graphics environment for embedded devices. The QT environment provides much more than just graphics: hidden within the QT library, you can find an impressive collection of general-purpose tools like XML parsers and, with the new version, a small browser. QT was designed from the start to be a toolkit for embedded developers: the project gives you plenty of flexibility when building the project to minimize the size, and cross-compilation works like a charm. Unlike many of the projects here, QT doesn't use the standard GNU configuration and build scripts; the project instead uses its own code to prep the code for compilation. QT includes everything necessary to run a GUI. Applications just need to link against the QT libraries. One item in the minus column is that QT uses C++, which isn't always available for a target board. Also, some embedded engineers scoff at the idea of using C++ for their projects. The licensing for QT is a bit vexing and boils down to the following: buy a license for QT, and you needn't concern yourself with complying with an open source license. For many companies, not having the perceived risk of an open source license (along with the support) justifies the expense.

JamVM

JamVM is a Java virtual machine. Although it isn't targeted specifically at embedded devices, it crosscompiles against a wide range of platforms, and it's described at compact. JamVM contains nearly all of the features found in Sun's Java, such as JIT code compilation, mark-and-sweep garbage collection, and a complete JNI interface for when a native language is necessary. One advantage of JamVM is that it's written in C and assembler, so if you have a toolchain good enough to compile the kernel, you can compile JamVM.

Rzsz

This library contains the x-modem and z-modem serial communication protocols popular from the bulletin board days of yore. These protocols allow for the dependable transfer of data over a serial connection with very low system overhead in terms of processing power or memory. Even though many embedded devices contain Ethernet networking, the serial port is still the lowest resource way to transfer data. The protocols in this package basically do what TCP does for an Ethernet network: convert a stream of data into packages, transmit the packets, and ensure that they're received in the order sent with perfect fidelity. If there's an error, the protocol requests a retransmit of the data and retries several times before giving up.

Netcat

This amazingly useful utility can be used to stream data over a socket the same way that cat streams data over a pipe. Netcat can be used for both sending and receiving data. And because it's an executable that can be run from a shell script, very little programming is necessary to create a simple yet robust way to communicate over the network.

TinyXML

This is a library that is designed to parse and XML file and do so with the minimum amount of resources. XML is a commonly used way for disparate systems to communicate, and many networked devices need to understand XML because it's the format used by the programs issuing commands to the device. Although you could write a simple parser, having a complete parser makes for much less work and testing. The XML language is simple, but it uses some rather complex constructs like schemas and document type definitions (DTDs) to describe the contents of the file and render data like XSL for layout. The TinyXML parser doesn't do much more than get the entities and properties stored in the file, but it does this very well and requires only about 60KB of program space.

Micro_httpd

This is one of the many tools available at Acme Software's site and deserves special mention. It's a simple HTTP server written in C and is just a few hundred lines. This is the perfect project for when your device needs to serve web pages that do some processing. Instead of writing a CGI script, modify the HTTP server and link your code directly into the server. Then, all you need to do is watch for when the user passes in the URL that should run your code. The server runs as an inetd service, so it expects to receive its input from stdin; data is sent by writing it to stdout. If you're unfamiliar with inetd, it's a program that listens for incoming connections; when a host initiates attempts to open a socket on a port, inetd fulfills the request and then maps the socket to the standard in and out of a process. This makes testing easy as well, because you can write a script that pipes data into the server and captures the output.

Stupid-FTPd

Some devices need FTP for file transfer. The Stupid-TFPd3 server isn't fast, configurable, or secure like the VSFTPs and PROFTPs of the world, but it's small and simple to configure. By setting a few options in a file, you're off and running. Even without a configuration file, the software still runs with reasonable parameters.

Quagga

This software is the ancestor of the Zebra routing software suite of tools. If the target device is one that will be offering network services like Routing Information Protocol (RIP) or Open Shortest Path First (OSPF), Quagga offers an open source solution. These tools don't change the features that already exist in the Linux kernel for managing software routes; they offer a layer on top of kernel to make managing routes easer and to let routers talk to each other so that routing information doesn't need to be configured manually.

Tslib

The tslib system is designed to provide a common interface for touch screens and is used in conjunction with QT or X Window.

fgetty

Linux has many programs that acquire a tty and run the login process, but fgetty is the smallest of the bunch. This program is great for systems that need getty functionality but aren't using BusyBox, which supplies a larger program that does the same job.

Legal Disclaimer

Our website is not responsible for the information contained by this article. Articleinput.com is a free articles resource thus practically any visitor can submit an article. However if you notice any copyrighted material, please contact us and we will remove the article(s) in discussion right away.

Note: This article was sent to us by: Saver F. Lauton at 02012010

Related Articles

1. Why is Linux such an incredible piece of sowtware
Embedded Linux Linux is an incredible piece of software. It’s an operating system that’s just as at home running on IBM’s zSeries supercompute...

2. Explanation of the Embedded Linux development process
Embedded Linux is a topic with many interdependencies; this article lays out the big points and purposely lacks detail so you can see the big picture without getting dist...

3. Basics to understanding the structure of an embedded Linux system
Anatomy of an Embedded Linux System At runtime, an embedded Linux system contains the following software components: • Boot loader: What gets the ope...

4. The resemblance between the GCC compiler and the kernel in Linux
The GNU Compiler Collection The GCC compiler, like the kernel, is designed for portability. Like all open source programs, GCC is available in source form, and ...

5. Automake and Autoconf discover the state of the target environment
Automake/Autoconf Open source software is designed to be distributed in source code form so that it can be compiled for the target platform. When target platfor...

6. How and where does a software developer get help
Where to Get Help All software developers depend on little helpers, whether visible or invisible. Open Source developers tend to call upon a large number of res...

7. Necessary additional steps to get Linux running
Host Services After the software is installed, some additional configuration steps are necessary to get the packages in running order. This part goes through co...