OpenMoko/zh tw

From Openmoko

Jump to: navigation, search

OpenMoko 是一個套件(distribution),主要是給手機使用,但最終目的是針對其他的行動裝置。

參閱 Trademark Policy 來解 OpenMoko 的商標政策。

OpenMoko 的軟體堆疊結構如下:

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

友善列印版本可在此找到here


NOTE: 本文需要更新以反應我們目前的架構。

Contents

Kernel Space

Kernel 層包含 bootloader / linux kernel 及 power management。

Bootloader

我們採用的是u-boot。我們將會需要以下的功能:

  • Firmware Update – 需要能透過USB DFU下載執行程式碼
  • RAM Loader – 提供一個能直接由裝置記憶體執行程式的方法
  • Secure Memory Interface – 提供一個方法使 RAM 和 FLASH 的寫入界面更安全。這是為了讓 end user 避免讓其他人更改他們的手機。並非針對製造廠上鎖。
  • Backup – 提供一個由 flash 備份資料的方法。

Kernel

OpenMoko 使用的 kernel 是 mainstream (官方) 2.6.x 版,並加上許多 OpenMoko 的 patch set。我們的計畫中,打算採用 TomTom 所提供的 patch,因為他們為 Samsung 2410 處理器提供一些修改,而且也加入了 SD 卡支援的功能。現在由 TomTom 所提供的 patches 己經能支援幾乎所有不同廠商的 SD 卡了。Kernel 端的工作,分為以下幾個部份:

Flash

這部份採用標準的 Linux MTD 系統,整個 flash 採用的是 JFFS2 檔案系統。我們想要加入一些可對使用者資料加密的功能,這部份未來可透過一個 UI 來設定,但目前,我們先專注在建立整個 framework。

Sound

音效方面使用 Advanced Linux Sound Architecture (ALSA),並加入 glue code(轉貼移植)。ALSA 是 Linux 對音效卡支援的標準。

Backlight

有一個 LCD 背光的 class driver (kernel 2.6)。

Keypad / Buttons

Keypad 的驅動程式使用標準的 Input 裝置檔 /dev/input。

Touch Screen

觸控螢幕的驅口動程式使用標準的 Input 裝置檔 /dev/input/touchscreen0。

Accellerometer (GTA02 only)

This is a stub. You can help OpenMokoWiki by expanding it.

USB

我們需要 USB host / client 的支援,支援的作業系統是 Linux / OS X 與 Windows。且要有以下的功能:

  • Mass Storage – 透過其它裝置來掛載
  • Host Network – 透過 USB 提供網路功支援
  • Linux USB Gadget – 讓裝置成為 slave 的標準作法

NFS Root Support

透過 NFS 開機是開發階段的標準作法,可以讓我們的 root filesystem 比實際的 flash 容量大。 請參閱Booting_from_NFS

Bluetooth

Bluetooth support will be based on the Linux standard called BlueZ. We will support the following profiles:

  • Headset – For wireless headsets
  • OBEX – For file transfer
  • HID – For both Bluetooth keyboards and keypad emulation (such as for remote control devices)
  • Network Emulation – For Bluetooth-based network support

WiFi (GTA02 only)

This is a stub. You can help OpenMokoWiki by expanding it.

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

A printer-friendly version can be found here.

GPRS modem

2.5G (no EDGE) access to the Internet.

Vibration

This is using the LED class interface. This may be troublesome for mainline merging, but it makes no sense to invent a new subsystem which would be 100% identical to the LED class interface.

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 enables a remote shell login via network.

udev

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

bluez

bluez is the Linux Bluetooth subsystem.

dbus

dbus is an interprocess communication subsystem.

GSM

  • GSM - handles the communication with the GSM module.
  • gsmd - is responsible for the management of GSM backend.
  • libgsmd - will communicate with the gsmd and export an API for applications.

GPS

  • GPS - handles the communication with the GPS module.
  • gpsd - is the daemon for management of GPS backend. It will export the standard gpsd interface.

Linux User Interface

Matchbox

A lightweight window manager from the O-Hand

KDrive

KDrive-fbdev is a lightweight X11 server that runs directly on a Linux FrameBuffer.

libX11

The X11 library.

GTK+

GTK+ is a rich GUI-Toolkit. It's the foundation for the Gnome project

OpenMoko Application Framework

Main article: OpenMokoFramework

Native Applications

Finger-Based Applications

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

Stylus-Based Applications

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


Personal tools