This document strives to give an overall picture of the maemo platform to developers willing to bring their applications to the Nokia Internet Tablets. These mobile devices run a Linux-based operating system on ARM architecture. The maemo software development kit (SDK) is currently provided natively for desktop GNU/Linux distributions, such as Debian and Ubuntu. The SDK can also be used in other operating systems through a virtual environment.
The main focus is to explain the basics necessary to create and port maemo-compatible software. It is simple to get started, even if concepts such as cross-compilation or touchscreen user interface design are not familiar. Those who are familiar with GNU/Linux, GTK+ toolkit and C programming language will feel right at home.
This document is also a good starting point for software development for any platform or device related to the GNOME Mobile family. As well as giving an introduction to the new frameworks, libraries and tools provided by maemo, it explains the overall design concepts for this new generation of Internet-capable devices.
History and Philosophy
Maemo uses known open desktop frameworks to enable easy software portability and familiarity. This strategy is quite different compared to many Linux-based media players and phones that are closed, or require special development tools. About 90% of the maemo platform is open, and the majority of that comes from upstream open source projects. The rest that is closed consists of e.g. parts of the user interface and device drivers, owned either by Nokia or third-party providers.
One important philosophy is to enable easy development and hacking. Developers can make modifications to the platform, e.g. to introduce their own kernel modules. Nokia also hosts an active open source maemo community around the platform (maemo.org).
Internet Tablet Overview
The devices are smaller than a laptop, larger than a PDA, and quite lightweight. Some of them (e.g. Nokia N810) have a small keyboard, and all of them have a stylus and a touch-sensitive screen. The stylus-driven GUI will cause some design challenges later on, since software will need to be designed with this in mind. There is also a possibility of using an on-screen keyboard with the stylus, including handwriting recognition and a predictive input system to aid the user. In all devices, there is a limited set of hardware buttons available for applications.
The Virtual Keyboard (VKB)
As programmers appreciate knowing a bit about the fundamentals of the devices for which they program, table 1.1 presents a short list of the most important components.
Internet Tablet components
|an 800x480 pixel, 225 pixels-per-inch (PPI) wide-screen touch screen display with 16-bits per pixel color depth
|Hardware buttons with a layout optimized for Web surfing
||Small slide-out keyboard (& VKB)
||WiMAX 802.16e / 2.5GHz
|External GPS via Bluetooth
||Integrated GPS (external also supported)
|1500 mAh battery
|3.5 mm stereo audio out socket (works also as mic input on N800/N810)
|Built-in VGA resolution webcam
|USB 2.0 port (in target mode by default)
|128 MiB of RAM
|256 MiB flash memory with JFFS2 file system
|Two memory card slots, SD, MicroSD, MiniSD, MMC, and RS-MMC (some types with extender).
||One memory card slot, compatible with MiniSD and MicroSD (with extender).
|TI OMAP 2420 multi-core processor with maximum clock frequency of 400 MHz, with:
- TMS320C55x DSP logic (Backward compatibility with the 54x-series)
- ARM1136 core ("ARMv6") with an MMU (Backward compatibility with ARM926)
The USB port normally acts as a USB target, although the direction can be reversed, and the device can be the USB host (i.e. initiator). The port is not capable of providing USB power, so an external power feed is necessary. This allows various usage scenarios, when the R&D mode is enabled on a device. The default version of Internet Tablet software runs in target mode only.
Some noteworthy points about the hardware and software:
- There is not a lot of RAM (compared to a "modern PC"), and the memory is shared between all the applications that are running at any given time.
- The system runs a modified Linux kernel 2.6 (omap-port).
- The system library is GNU libc 2, meaning that most software can be ported without too much effort (even networking software).
- To conserve battery power, one needs to be careful with application core logic (loops, delays, timeouts, threads, etc.)
- There is no hardware acceleration for graphics operations (2D or 3D).
- The built-in flash contains approximately 64 MiB of shipped software. 192 MiB available to be shared between apploications covers also data those applications use. Using tablet as memory stick is not so common use case.
- The built-in flash uses a file system specifically designed for flash memory, and contains transparent compression and decompression. This means that sometimes optimizing for space requirements is not sensible. Compressing an image as a .gif is not very good idea, as it would have been compressed anyhow. However, the RS-MMC card uses FAT/VFAT file system. The compression rates may vary, and if space conservation is important for an application, it is abvisable to test the specific use scenario properly.
- There is some support for Java acceleration in the ARM core, but this is not utilized, since there is no supported JVM to execute Java code.
N.B. The above feature list holds for the "end user" version of the software that is shipped with Internet Tablets.