Software Platform

The Maemo platform is the core software stack that runs on mobile devices such as the Nokia N900. The Maemo platform is built in large parts of open source components. The Maemo SDK provides an open development environment for applications on top of the Maemo platform.

Maemo Value small.png

The Maemo platform consists of the software stack from the Linux kernel to the Maemo APIs and the Hildon UI framework. Commercially available devices running on Maemo come with the pre-installed Hildon UI and a set of applications delivered by Nokia. It is possible to develop other UIs on top of the Hildon UI framework.

Maemo platform is based on Linux operating system which itself inherits its architecture from the Unix operating system. Linux and other open source projects contributing to the Maemo platform embrace sharing of source code, collaboration and open development model. The Maemo community promotes these values by keeping the Maemo platform open wherever feasible, by sharing source code, and by contributing code directly to the upstream projects.

Key Components of the Maemo Platform

The Maemo platform is based on the Linux operating system kernel. Linux is a monolithic kernel that supports multiple hardware platforms and is able to support a wide range of different kinds of devices from wrist watches to large server systems. Currently all devices running on the Maemo platform have an OMAP chipset, which contain a general-purpose ARM processor and a DSP unit.

Maemo Architecture

The user interface architecture of Maemo 5 is based on GNOME framework, especially the GTK+ widget set. GNOME is a leading application framework for desktop Linux systems. Maemo platform has inherited many central components such as GTK+, the GStreamer multimedia framework, the GConf configuration management, and the XML library. The Maemo platform extends GTK+/GNOME technologies by providing extensions for a mobile desktop.

Linux kernel

The Linux kernel is the central software component of the system. It provides the hardware abstraction layer for the system devices, memory management, process management, networking services including link and transport layer protocols like TCP/IP, file management including file systems and various other services. Maemo 5 is based on Linux 2.6 operating system.

The ARM/OMAP-based Linux kernel of the Maemo platform implement hardware-specific device and bus drivers on top of the core kernel's virtual services. The device drivers include USB, LCD, WLAN, camera and audio, for instance. The bus drivers include Flash bus, SPI, I2C, and serial bus, for instance.

System Libraries

Maemo platform is based on the standard GNU C library. For networking, Maemo platform uses a OpenSSL library that provides network security and libcurl that provides the HTTP access for applications.

For hardware abstraction, the Maemo platform provides a Hardware Abstraction Layer (HAL). The HAL provides a shared library that has an API for device objects. A device object has properties and it is up to an actual device driver which properties it supports. HAL is thus capable of loading the right device driver when a new device is detected, creating and maintaining /dev files, tracking the status of devices and providing a means to uses each device.

Debian Package Management

The package management framework, the file system hierarchy, and general design policies are derived from the Debian distribution.

System Services

The primary communication channel between applications is DBUS. DBUS also provides a channel for interaction between the system and applications. DBUS is used to invoke all the applications by sending messages.

System Services provide a SQL database (SQLite 3) that can be used to store user application data. SQLite database is accessed through a library interface.

System Services provides also system-wide services to applications and end users. The services include device state management (DSM), mode control (MCE), battery management (BME) and few graphical user interface elements to manage the behavior of the services.

Maemo Launcher

Maemo Launcher launches all applications on the Maemo platform. It is there to speed up application startup by sharing some of the initialization data of an application startup. Maemo Launcher is composed of two parts: the Maemo-invoker, which is executed by a DBUS daemon or scripts to start the given service, and the Maemo-launcher, a server that has initialized most of the data used by the applications. The Maemo-invoker asks Maemo-launcher to start the actual application.

Hildon UI Framework

The user interface framework is based on the X Window System having the Matchbox window manager. The API on top of X is the GTK+ widget toolkit with so-called Hildon extensions. GTK+ is the UI framework developed in the GNOME project. The Hildon UI framework provides components on top of the GNOME components to support control panel, status bar, task navigator, and home applets.

Maemo SDK

The Maemo SDK contains the tools needed to create and port integrated applications, replicating the Maemo platform environment in your PC. Supported Maemo APIs are provided for the C language. The Maemo community also has C++ and Python bindings for the core Maemo APIs.

The cross-compilation environment of the Maemo SDK is based on Scratchbox. Cross-compilation is a problematic issue in Linux systems, since build scripts typically utilize Autotools which have not been designed well for cross-compilation in mind. Thus, many Linux distributors solve the cross-compilation problem by avoiding it, and use dedicated hardware to run native compilations. This is a big limitation since sometimes native hardware build environment is difficult to arrange. And even if it were available builds run typically multiple times slower than in cross-compilation. Scratchbox solves this problem problem by totally isolating the target and host environments. Autotools based build scripts can be run on Scratchbox without modifications to build target platform binaries on a host system having a hardware platform other than the target.