Documentation/Maemo 5 Developer Guide/Architecture/Core Domain

(New page: =Core components= 500px ==Nolo bootloader== {|cellspacing="0" border="1" width="70%" |'''Name'''||'''NoLo (Nokia Loader)''' |- |'''Purpose''...)
(categorise)
Line 241: Line 241:
|'''Public interface provided'''||Fiasco-flasher: The tool can be used to flash a new kernel image into the kernel partition.
|'''Public interface provided'''||Fiasco-flasher: The tool can be used to flash a new kernel image into the kernel partition.
|}
|}
 +
 +
[[Category:Development]]
 +
[[Category:Documentation]]
 +
[[Category:Fremantle]]

Revision as of 12:01, 12 February 2010

Contents

Core components


Nolo bootloader

NameNoLo (Nokia Loader)
PurposeThe bootloader does basic configuration of the HW, loads the kernel into memory, and passes control to the kernel. In addition to this basic task the NoLo boot loader has many features to support R&D. (The capability to flash the device is currently implemented in NoLo but it will become an R&D feature once flashing is moved to user space.)
Responsibilities*Load kernel into memory
*Initialize HW so that kernel is able to boot
*Pass ATAGs to the kernel and transfer execution to the kernel
*Production line flashing functionality
*Creates partitions
Package / Licensenolo / Nokia


Linux Kernel

NameLinux kernel
PurposeThe function of the kernel code is to provide all the basic services and hardware interfaces of the Linux operating system for the underlying programs. The kernel also passes the control to the chosen user space program (usually /sbin/init) after initializing its own structures and drivers. When the kernel starts up, it checks a lot of the available subsystems and initializes everything according to the kernel configuration chosen at compile time. Some subsystems will be left uninitialized by the boot loader, for example, the display subsystem.
ResponsibilitiesThe operating system kernel
NotesMaemo specific functionality is in OMAP3 & Rover HW specific code. OMAP3 support is developed, generally speaking, in the linux-omap tree, from which code is pulled into Maemo kernel.
Package / Licensekernel / GPL2
Public interfaces providedLinux kernel API: Linux system calls accessed through the C library.


Kernel core services

NameKernel core services
PurposeThe Linux core services comprise generic, hardware independent code.
Responsibilities*memory management
*process management
*device management
*inter-process communication…
NotesUsed as is.
Package / Licensekernel / GPL2


ARM architecture support

NameARM architecture support
PurposeThe ARM architecture subsystem in the kernel provides mainly ARM specific implementations of necessary core mechanisms.
ResponsibilitiesARM specific implementations of kernel mechanisms.
NotesUsed as is.
Package / Licensekernel / GPL2


Kernel framework

NameKernel frameworks (virtual services & subsystems)
PurposeThe low level HW drivers provide the concrete implementation that is bound to the virtual services in the Linux kernel to provide the complete functionality.
Responsibilities*ALSA & Video for Linux 2 (V4L2) APIs,Networking stack, BlueZ (Bluetooth), mac80211 (WLAN), USB core
*Virtual File System, file systems, block devices, MTD
*Frame buffer, serial port, input layer (keyboard, touch screen)
Package / Licensekernel / GPL2
Public interfaces provided*ALSA: Advanced Linux Sound Architecture, de facto Linux sound API.
*V4L2: Video for Linux 2, de facto video capture API + Maemo specific ioctls
*Camera ioctls: Extensions to V4L2 interface used by the camera daemon.
*File systems: FAT16/32, EXT3 and UBIFS file systems are currently supported on the platform.
*Frame buffer: The raw frame buffer interface is used in early stages of the boot.
*Input layer: The input layer events are routed via X to applications.
*Serial port: Available for R&D use.


OMAP3 support

NameOMAP3 support
PurposeOMAP specific code implements the device drivers and bus support for the specific hardware included in the OMAP3430 chip. The supported OMAP3 subsystems are described in the following subsections.
Responsibilities*DMA: OMAP3 has a 32 channel general purpose DMA controller, display DMA, HS USB DMA, and IVA 2.2 DMA (not supported).
*Interrupt handling:OMAP3 has an interrupt controller (MPU INTC) with 96 synchronous interrupt lines.
*OMAP3 specific power management functionality: The power management functionality is built on top of idle, sleep, suspend, resume, and dynamic voltage & frequency scaling functionalities [SystemSW].
*DSP Bridge, ioMMU, OMAP watchdog, GPIOs, timers, Muxing framework


*Gpmc (OneNAND driver), hsmmc (MMC/SD)
*Bus drivers: spi, i2c, McBSP, uart, SSI

Package / Licensekernel / GPL2


DSP Bridge

NameDSP bridge
PurposeOMAP's integrated DSP allows offloading tasks to the DSP from the ARM processor. This is exposed with the DSP bridge component.
ResponsibilitiesInterface to the OMAP3’s DSP which is used for codec acceleration.
Package / Licensekernel / GPL2


OMAP3 bus drivers

NameOMAP3 bus drivers
ResponsibilitiesDrivers for the following buses: SPI, SSI, McBSP, GPIOs, HS MMC/SD, UART, I2C/I2S, RFBI, CBUS, Flash BUS, (STI/XTI debugging interfaces)
Package / Licensekernel / GPL2


OMAP3 specific HW drivers

NameOMAP specific HW drivers
ResponsibilitiesDrivers for following HW components:SGX, OMAP framebuffer & LCD & TV-out, Camera & ISP, HS USB Host & HS USB OTG, SDRAM memory controller, GPMC NAND/NOR flash&SRAM controller, and PRCM
Package / Licensekernel / GPL2


Specific hardware drivers

NameSpecific HW drivers
ResponsibilitiesThe following components external to OMAP are supported: USB transceiver, USB charging, FM RX/TX, WLAN, OneNAND flash, touch screen, audio, stereo IHF, earphone, digital mics, LEDs, HW keys, ALS, Accelerometer, Vibrator, Proximity sensor, Miscellaneous Sensors, LCD backlight, Bluetooth, WLAN, CMT, Ethernet (R&D use).
Package / Licensekernel / GPL2


X Window System

NameX Window System
PurposeGraphical User Interface framework
Responsibilities*XServer – GUI framework & resource management
*Xv – Video playback interface
XRandR – Support for rotation & output configuration
*XRender, XComposite – Support for composited UI
*XInput – Routing of input events to applications
Package/ LicenseSeveral/ MIT
Public interfaces provided*X protocol: Interface to the X window system
*DRI2: Direct Rendering Infrastructure 2, OpenGL ES 2.0


NameOpenGL ES 2.0
PurposeAccelerated 3D rendering
Responsibilities*Accelerated 3D rendering
*Acceleration of XRender
NotesThe user space GLES components are licensed from Imagination.
Package/ Licenseopengles2-sgx-img, opengles2-sgx-img-modules, libgles2(-sgx-img) / Nokia
Public interfaces providedEGL: Khronos API for OpenGL ES application for interacting with the native graphics framework.


C library

NameC library
PurposePosix C library functionality
Responsibilities*System call interfaces
*Posix functionalities
Package/ Licenseglibc / LGPL2


Essential tools

NameEssential tools (busybox)
PurposeThe essential tools provide tools needed in system scripts. The role is similar to the Debian essentials (tools that are always installed in a Debian system).
Responsibilitiessystem tools like: shell, grep, find, dpkg, …
NotesMany tools have many limitations compared to the Debian versions. Not all Debian essentials are supported.
Package/ Licensebusybox / GPL2
Public interfaces provided*Posix shell
*Subset of Debian essentials


Sysinfod

NameSysinfod
PurposeProvide interface for accessing device information
ResponsibilitiesProvide a DBUS interface to device specific information (HW id, WLAN MAC, …)
Package / Licensesysinfod / Nokia
Public interface providedSysinfod DBUS interface

Softupd

NameSoftupd
PurposeProgram for flashing the eMMC contents
Responsibilities*Unpacks a FIASCO image fed to it
*Copies the unpacked contents to eMMC
Package / Licensesoftupd / Nokia


Fiasco-flasher

PurposeTool for updating the kernel flashed to the device
Responsibilities*Flash kernel image into the kernel partition
*Reboot the device
Package / Licensefiasco-flasher / Nokia
Public interface providedFiasco-flasher: The tool can be used to flash a new kernel image into the kernel partition.