Openmoko/de

From Openmoko

(Redirected from OpenMoko/de)
Jump to: navigation, search


Openmoko ist eine Distribution die wir für Mobiltelefone und mögliche andere mobile Endgeräte entwickelt haben. Die Distribution hat den folgenden Software Aufbau:

http://people.openmoko.org/sean/specifications/images/software_stack2007.png

Eine Druckversion findet man hier.


NOTE: Dieser Artikel benötigt ein Überarbeitung um unsere aktuelle Architektur wiederzuspiegeln.

Contents

Kernel Space

Der Kernel Space besteht aus dem Bootloader, dem Kernel, und dem Power Management.

Bootloader

Der verwendete Bootloader ist u-boot. Es gibt folgende Anforderungen:

  • Firmware Update – Need a way to download executible code using USB DFU
  • RAM Loader – Provide a method to run code directly from the device’s RAM
  • Secure Memory Interface – Provide a method to secure the interface to write into both RAM and FLASH. This is for the end user to prevent other users from modifying their own handsets. It’s not for vendor lock-in.
  • Backup – Provide a method to backup the data from flash. This could possibly allow for the sharing of images between users.

Kernel

Der Kernel basiert auf der Version 2.6.x und benutzt die moko Patch-Sammlung. Es war geplant die Patches von TomTom zu nutzen, da diese weitgehend mit dem Samsung 2410 Anwendungsprozessor zusammenarbeitung und eine gute Unterstützung für SD-Karten bieten. Im Moment unterstützen deren Patches alle Anbieter von SD-Karten. Die Aufgaben des Kernels sind in folgende Komponenten unterteilt:

Flash

The flash will function as a MTD using the standard Linux access. It will run the JFFS2 filesystem over the entire flash. We would like to have some type of encryption on the user’s data. This will be configured in the User Interface at a later time. But for now, we should build the supporting framework.

Audio

Der Audio-Treiber für den Codec benutzt die Advanced Linux Sound Architecture (ALSA). Dies ist der Standard für Soundkarten unter Linux.

Hintergrundbeleuchtung

This will be a LCD backlight class driver.

Tastatur

Der Tastatur-Treiber wird das Standard-Eingabegerät /dev/input nutzen.

Touch Screen

Der Touchscreen-Treiber nutzt das Standart-Eingabegerät /dev/input/touchscreen0.

USB

Wir benötigen USB host / client Unterstützung für Linux, OS X und Windows. Es sollten die folgenden Funktionen unterstützt werden:

  • Mass Storage – To be mountable from another device
  • Host Network – To provide networking support over USB
  • Linux USB Gadget – The standard method for having the device act as a slave

NFS Root Support

This will serve as one of our methods to develop code for the device. It will allow us to have a filesystem larger than the actual flash size.

Bluetooth

Die Bluetooth Unterstützung wird auf dem Linux Standard BlueZ basieren. Wir werden die folgenden Profile unterstützen:

  • Headset – Für Funk-Headsets
  • OBEX – Für Datei Transfer
  • HID – Für Bluetooth-Eingabegeräte wie Tastaturen und Fernbedienugen
  • Network Emulation – Für Bluetooth-basierte Netzwerkunterstützung

TS07.10

This is the GSM interface part. It is based on the idea of creating multiple serial devices out of one physical serial device. This code will be based work from the openEZX project and the original Motorola architecture. It will also provide ipsec for secure VPN connections. The following diagram depicts the general architecture:

http://people.openmoko.org/sean/specifications/images/gsm_interface.png

Eine Druckversion findet man hier.

Vibration

Wir werden unsere eigene Schnittstelle definieren müssen. Im Moment gibt es noch keinen Weg um dies standardmäßig in Linux zu realisieren. Mickey hat vorgeschlagen die neue LED class Schnittstelle zu benutzen/missbrauchen.

Power Management

The Power Management Unit will interface with the standard kernel I2C interface. The actual power states transitions are TBD.

User Space

NOTE: We will use glibc (not uClibC) and libX11 (full, not diet) for the first incarnation of this product. The alternatives may save more space and be more optimized, but are more likely to give us integration headaches. We will have to reconsider this decision for later releases.

Linux Core Services

Most of these core services include a daemon and a library.

sshd

sshd ermöglicht ein Remote Shell Login über das Netzwerk.

udev

udev is responsible for managing the device nodes in the /dev pseudo file system.

bluez

bluez ist das Linux Bluetooth Subsystem.

dbus

dbus is an interprocess communication subsystem.

GSM

  • GSM - handhabt die Kommunikation mit dem GSM-Modul.
  • gsmd - ist verantwortlich für das Management des GSM Backends.
  • libgsm - kommuniziert mit dem gsmd und gibt eine API für Anwendungen aus.

GPS

  • GPS - handhabt die Kommunikation mit dem GPS-Modul.
  • gpsd - ist der Daemon für das Management des GPS Backends. It will export the standard gpsd interface. There is a plugin to support the hardware in the Neo1973.

Linux User Interface

Matchbox

Ein leichtgewichtiger Fenstermanager von O-Hand

KDrive

KDrive-fbdev ist ein leichtgewichtiger X11 Server der direkt im Linux FrameBuffer läuft.

libX11

Die X11 library.

GTK+

GTK+ ist ein umfangreiches GUI-Toolkit. Es ist die Basis für das Gnome Projekt

Openmoko Application Framework

Native Anwendungen

Finger-basierte Anwendungen

Complete specifications for all the Finger-Based Applications are found here.

Stift-basierte Anwendungen

Complete specifications for all the Stylus-Based Applications are found here.

X11 Anwendungen

(TBD)

Entwicklungsumgebung

The Development Environment consists of the Build Environment, the Development Tools, Development Server, Build Server, and Development Workstations.

Build Umgebung

The entire system will be built using Open Embedded. Using Open Embedded we get a great package system. It uses something called a “feed” to manage collections of packages. Feeds are basically the equivalent of Debian’s sources. Open Embedded will give us a complete PDA-like system for free. We can then spend all our time concentrating on phone-specific applications and overall user interface integration.

Entwicklungs Werkzeuge

Development tools will help us standardize our working methods both internally and externally with the rest of the world. Since we are trying to use as much free software as possible, we should, naturally, use free software for our development tools, too. The following is a description of each major work area and the specific tools we will need:

  • Kernel Entwicklung – Kernel work will use Git. This is the current standard for Linux kernel. Harald will do almost all the kernel work. He will release patches that will go into our Open Embedded tree.
  • Application / All Other Development – Development for the main phone applications and just about any other component besides the kernel will use Subversion.
  • Entwickler Kommunikation – Die gesamte Kommunikation unter den Entwicklern muss über eine Mailing Liste abgehandelt werden. Wir werden für diesen Zweck Mailman einsetzen.
  • Bug Tracking – Bugzilla will be used for both bug and issue tracking.
  • Documentation – Project documentation will be written as either a Wiki or using Doxygen. The Wiki will be used for more general project level information. Doxygen will be used to document the individual libraries and core APIs.

Development Server

FIC Taipei will host the main development server. This will run Debian Sarge. It will be used for checking out development code, Bug tracking, and running the Mailing Lists. Subversion will run on this server using the following connection types:

  • https – Will be used for developers checkouts
  • http – Will be used for read-only checkouts

Build Server

FIC Taipei will host the main build server. This will also run Debian Sarge. All main developers will have an account. It will be used for providing a daily build of the entire code base and documentation. After each build, the results will be emailed to the Developers Mailing List. Daily builds will be stored on the server for as long as storage permits. After that point is reached, DVDs will be burned for archiving.

Developer Workstations

Individual developers should use some Debian-derived distro. We are currently using both Ubuntu (6.06) and Debian (3.1). We create a base package for all the main development tools. Developers will work off of a daily build from the Build Server. They either load their code into flash or simply use the provided script to create an NFS root filesystem from the daily build image. When needed, they can rebuild the modified packages using their personal Open Embedded. These packages will then be added to the developer’s personal feed and can be committed, if ready, back to the main feed.

The current development version of Openmoko can be obtained via rsync (broken currently)

# rsync fic@buildhost.openmoko.org:deploy/
Password: openmoko

You can create (and/or update) a local mirror of packages by using this rsync access.

There is also http access available at http://buildhost.openmoko.org/tmp/deploy/


Setting up an Openmoko SDK

  • Follow the instructions based on your Distro or look at the more general OE Getting Started guide.
  • Note that for now you need a fixed revision from OpenEmbedded to make the build succeed. The most recent tested revision is:
 f499733e6db527846e1a48cf70f9862d6b3798ae hrw@openembedded.org 2006-12-18T22:35:31
  • local.conf for the build directory should look like that:
 MACHINE = "fic-gta01"
 DISTRO = "openmoko"
 BUILD_ARCH = "i686"
  • Download the Openmoko metadata directory from svn
  • Set the environment variables accordingly:
 export OMDIR=$PWD
 export OEDIR=$PWD/openembedded
 export BBPATH=$OMDIR:$OMDIR/build:$OMDIR/metadata:$OMDIR/openembedded
  • Depending on your environment you may have to edit metadata/conf/site.conf accordingly.

Personal tools