MeeGo Software Architecture Overview
The MeeGo platform has been carefully created to provide the components necessary for the best device user experience. As shown in the MeeGo Reference Architecture Overview diagram below, the MeeGo architecture is divided into three layers:
- The MeeGo OS Base layer contains the Linux kernel and core services along with the Hardware Adaptation Software required to adapt MeeGo to support various hardware architectures.
- The MeeGo OS Middleware layer provides a hardware and usage model independent API for building both native applications and web run time applications.
- The MeeGo User Experience layer provides reference user experiences for multiple platform segments; the initial MeeGo release will contain reference user experiences for handhelds and netbooks and additional platform segments will be supported over time.
Each of the subsystems and functional blocks are described in the following sections. Note: Items with a black dotted border are not included in the 5/26/2010 stack.
MeeGo OS Base
Hardware Adaptation Software
There are multiple software components that a hardware vendor must provide for MeeGo to run successfully on their platform architecture, including platform kernel drivers, core architecture additions, kernel configuration, X software additions and configuration, modem support, and hardware specific media components. You can learn more about the hardware enabling process here . These specific software components are called the hardware adaptation software and are detailed below.
The kernel is the heart of Linux, and acts as the bridge between applications and the actual data processing done at the hardware level. There are three general categories of additions that MeeGo requires for each supported hardware platform.
- Kernel Drivers: This is the set of software drivers needed to interact with the hardware device. Some examples are drivers for wireless, camera, USB, 3G, Bluetooth, and touchscreen.
- Core Architecture Additions: These are additional packages added to the Kernel to enable certain architecture features. An example would be firmware.
- Kernel Configuration File: This file determines the options needed to get the hardware device working properly. This configuration file is in addition to the general kernel configuration file that is provided within MeeGo, and is specific to the hardware vendor platform. This file details the specific configurations required for the specific device. Examples include device architecture, processor type, device driver configuration options, network support, and kernel debugging options.
X Window System
The X Window System (also known as X11 or simply X) provides the graphical interface and the basic framework for building this interface. There are two general categories of X additions that MeeGo requires for each supported hardware platform.
- Core Architecture Additions: These are additional packages to be added to X to enable certain architecture features. Examples include the graphics controller, display, and acceleration.
- X Configuration file: This file provides configuration and runtime parameters for initializing the X windows system. If there are hardware-specific configuration options required for the X windows system, these details must be added and supplied to the specific hardware platform X configuration file. Examples include the display output and resolution.
- Bootloader: The bootloader program's only job is to perform the necessary initializations to prepare the hardware for the operating system, and it contains board- and/or processor-specific code. The bootloader provides the necessary glue between the firmware and the kernel.
- Image Device Format Tool: This provides the details on how to write an image for a specific device. It is a tool used to create a device executable in the appropriate device format.
- Modem Support: telephony framework plug-ins for specific cellular modems
- Hardware-Specific Media Codecs: Codecs that are hardware specific (such as codecs with hardware assist/offload)
MeeGo uses a Linux kernel from kernel.org, with architecture specific configuration and patches (as needed). Drivers are provided for each supported platform.
MeeGo OS Middleware
The Comms Services enable managing voice and data connectivity for the platform. Functionalities are provided to manage cellular and IP voice and data connectivity across a range of communications technologies, including WiFi, 3G, WiMax, and Bluetooth.
- Connection Management (ConnMan)
- Telephony APIs (oFono)
- IP, VOIP, IM, Pres (Telepathy)
- Bluetooth (bluez)
The Internet Services enable rendering web content, providing web run time support, exchanging data with web services, and determining location.
The Visual Services enable the core 2D and 3D graphics capabilities for the platform, including support for rendering internationalized text and taking advantage of underlying hardware platform acceleration for graphics.
- 3D Graphics (OpenGL / OpenGL ES)
- 2D Graphics (Cairo QPainter)
- i18n Rendering (Pango, QtText)
- X Window System
The purpose of media services is to provide audio/video playback, streaming and imaging functionality to the system. In general, media services take care of the actual audio/video data handling (retrieval, demuxing, decoding and encoding, seeking, etc.).
- Media Framework (GStreamer)
- Camera (GStreamer plugin)
- Codecs (GStreamer plugins)
- Audio (PulseAudio)
- UPnP (GUPnP)
The Data Management subsystem provides services for extracting and managing file meta-data (for example to support extracting and searching metadata for media files), retrieving data about the device context (such as device position, cable status), and managing the set of installed packages on the device.
The Device Services subsystem contains a set of services for managing device state, including everything that is needed to make a device safe to use for a consumer, and exchanging data with the device, sensor data extraction, overall system policy, device data synchronization, and device data backup and restore.
The Personal Services enable managing user data on the device, including personal information management (that is, calendar, contacts, tasks) and managing user accounts to enable single-sign-on for web services.
MeeGo Security Architecture
MeeGo uses a scalable security framework that provides security via role based access control that applies to a wide range of systems, from completely open systems to systems that need to be partially locked down. This is achieved by having a flexible and updatable policy that is enforced by key pieces in the software stack.
MeeGo Security is not part of MeeGo 1.0 release.
The MeeGo API provides the interface for application development. The current release includes Qt 4.6.2. Additional features are under development. For more details, see the MeeGo API page .
Qt provides application developers with the functionality to build applications with state-of-the-art graphical user interfaces. Qt is fully object-oriented, easily extensible, and allows true component programming.
Component(s): QtGui, QtCore, QtDBus, QtMultimedia, QtNetwork, QtOpenGL, QtScript, QtSql, QtSvg, QtWebKit, QtXml, Qt3Support, QtDeclarative, QtHelp, QtScriptTools, QtTest, QtXmlPatterns
References: Qt 4.6.2 API Documentation