![]() |
Embedded software papers |
Modern embedded and hardware based solution have become more and more a complex mix of hardware and software: pure Application-Specific Integrated Circuit (ASIC) or Field Programmable Logic Arrays (FPGA) devices are not capable of capturing complex control logic that is evident in micro-controller based software. The other perspective is also true: even though high end processors have since years broken the Gigahertz threshold, they cannot offer the raw performance which results from the massive inherent parallelism offered by FPGA solutions running at relative low speeds (100-200 MHz). Somewhere in the middle, the {em Multimedia} Digital Signal Processors (DSP) are found. These DSPs combine parallelism (to a limited degree) with a high clock ratefootnote{Texas Instruments is shipping 1 GHz DSPs since Q3 2004}. As a result, state-of-the-art, high performant and flexible embedded solutions should use the strengths of each of the available solutions. In this paper, we will explain a system, that is currently in production and does exactly this. We will explain how a tiny GNU/Linux based system controls the system and pre-parses the data. Finally, we will go into the detail how we replaced a sub-optimal commercially based system to a completely free system and detail the gains.
Presentation in PDF formatBuilding a complete Linux distribution from scratch is a complex and tedious task. You have to deal with a variety of toolchains, upstream locations, source formats, build systems, dependencies, packages not very suitable for cross compiling, different package and image output requirements, and more.
The BitBake build system and the OpenEmbedded build classes and metadata greatly simplify this task. They have been designed to handle different hardware architectures, to support multiple releases for those architectures, and to utilize tools for speeding up the process of recreating a complete distribution after changes have been made.
BitBake itself is a simple but flexible tool for the execution of tasks, such as fetching a source from an upstream location, patching a source tree, configuring, compiling, and packaging. OpenEmbedded defines a set of reusable build classes and metadata to create customized Linux distributions, especially suited for embedded devices such as PDAs, WebPads, Set-Top-Boxes, Routers, etc.
BitBake and OpenEmbedded have been adopted by both commercial and non-commercial interest groups - among the latter are the OpenZaurus, OpenSIMpad, Familiar Linux, and OpenPsion teams. With BitBake and OpenEmbedded it is possible to build a complete distribution from scratch - requiring just a customized configuration file and one command, e.g. "bitbake opie-image". It also builds necessary host utilities such as toolchains or native versions of dedicated packages.
This presentation gives an overview over the basic concepts of BitBake and OpenEmbedded. In particular it is shown how to add a reusable build class and how to add support for a new machine to OpenEmbedded.
Presentation in PDF formatHedgehog is a very concise implementation of a Lisp-like language for low-end and embedded devices. It consists of a compiler to byte code and a corresponding interpreter. The byte code interpreter is written in standard conforming C, is efficient and easily portable, and can be compiled to a very small executable of only some 20-30 kilobytes.
The Hedgehog Lisp dialect has proper support for first class functions, lexical scoping, variable argument functions, garbage collection, exceptions, macros, and over a hundred predefined functions or special forms. The built-in types are lists, symbols, strings, 32-bit integers, AVL-trees, and tuples up to 16 elements wide. Proper 32-bit wide integers are necessary for various bit-level operations in embedded systems.
Hedgehog was developed by Oliotalo, a company specializing in machine-to-machine communication. It has used Hedgehog for such diverse telemetric applications as sensing whether trash compactors are full and need to be emptied, whether tanks of gas or liquid are empty and need to be filled, and reporting the position and usage patterns of various kinds of vehicles. Hedgehog is used to measure things locally and to send the data over wireless networks (SMS, GPRS, Bluetooth) to a server.
In this paper, we discuss why Oliotalo decided to develop Hedgehog, what requirements on the implementation different applications put on Hedgehog, what it is like to write embedded applications in Lisp, how Hedgehog has been implemented, and what positive and negative experiences we have had with Hedgehog.
Presentation in Openoffice formatOver the last few years, ARM processors running Linux have been appearing in a variety of applications including but not limited to consumer electronics, telematics, industrial control, and network processing. As the demand for ARM-based applications has increased, the Linux community has been flooded with questions from those porting the kernel to new systems for the first time due to a lack of clear step-by-step HOWTO explaining how the task is done. While there is no silver bullet and there is much to learn from simply attempting a new board port, in this presentation I will provide an overview of the steps needed to get a kernel booting on a new board to the point that you can get a login prompt. Topics covered will include bootloader requirements, IRQ setup, configuring memory, writing an MTD driver, PCI configuration on ARM platforms, required platform-level hooks, MMU setup, system timers, and other issues that need to be dealt with during the porting process.
Presentation in PDF (also presented in Bangalore)eCos is an open source, royalty-free, real-time operating system intended for embedded applications. This talk covers an example eCos application, "Scivoli".
Scivoli consists of the OS itself, plus the code for the application application (which occupy very little), and a series of jpeg images all written to a floppy. The system boots and displays the images as a slide show on the screen. The application is simple, but a good demonstration of the capabilities of eCos.
The presentation gives a brief overview of the eCos operating system and its role in the embedded world, and continues with the challenges involved in the creation of the Scivoli application.
We cover the development of a device driver for eCos, which is an adaptation of the Minix floppy driver for use with our system. We discuss the use and installation, and development of simple interrupt handlers for keyboard interraction with Scivoli.
Scivoli was written for the x86 platform in order to be easy for most people to test out, although with the appropriate drivers, it could be ported to virtually any system.
Presentation in Openoffice formatScratchbox is a cross-compilation toolkit that makes the development and building of embedded Linux software faster and easier. It does this by providing a sandbox environment that emulates some characteristics of the target system: dependencies are not mixed with host system's libraries, build scripts that do not support cross-configuration or make it difficult need no tweaking, and compilation is fast on a cheap x86 box.
Scratchbox 1.0 simplifies the especially difficult task of cross-compiling Debian packages. Developers need not be experts of the target systems; installing dependencies, fetching sources, configuring, building, packaging and installing is as easy as doing it natively. You can also run the software inside Scratchbox.
It is not just about Debian and ARM; you can extend Scratchbox to support more architectures, distributions and build tools.
Presentation in PDF formatThis talk will cover the various issues that are encountered when doing GNU/Linux development for commercial products of big companies. How do you convince companies like that, where do you find and how do you recruit people for that? What are the contractual implications? In this case there were also several technical challenges, like the use of cutting edge software, JFFS2 on NAND flash, bugs in major applications when trimmed down. How do you get the maintainers and relevant experts of those projects to co-operate? Also very important is the inter-developer communication. What happens when the project gets dropped? The port of Open Office to ARM architecture, is at least one of the things that will be saved, and contributed to the Free Software world.
Dillo is a very fast, extremely small web browser that's completely written in C. The source and binary are less than 400KB each (currently, the binary is around 350KB). It is a graphical browser built upon GTK+ (GNOME is NOT required), and it renders a good subset of HTML -- excluding frames, JavaScript, and JVM support. Dillo aims to be a multi-platform browser alternative that's small, stable, developer-friendly, usable, fast, and extensible. Best of all, Dillo is a 'free software' project, released under the terms of the GNU general public license (GPL).
Note that dillo is NOT designed solely for embedded systems -- however, its extraordinary efficiency and low library dependencies are what makes it suitable for such environments. For instance, the stripped binary on an x86 machine is around 350KB, and the main library dependency is GTK+. Memory requirements are lower than for lynx at start time, and the low CPU performance requirements let it run snappily on a 75 MHz pentium, 37 MHz ARM (Psion), or 25MHz 486 with 8MB of RAM.
gzipped magicpoint presentationThe GPE (GNU Palmtop Environment) is an entire environment of components which make it possible to use your GNU/Linux handheld for standard tasks such as Personal Information Management (PIM). In this sessions a lot of GPE developers will discuss GPE issues, but they will also be available for questions and demonstrations. Expect a lot of gadgets on demo and feel free to hop in whenever you like.
No presentation was given, so there is none available :-)