SymbianOS
currently provides most of the functionality for a mobile operating
system, but lacks essential features such as a GUI toolkit. This is
generally provided by one of three related but incompatible framework
libraries: S60, UIQ, or MOAPS. This means that a developer must develop
against each platform separately. Though used by other manufacturers,
S60 is largely associated with Nokia, UIQ with Motorola and Sony
Ericsson, and MOAPS with NTT DoCoMo. Although important to recognize,
the inherent differences among these frameworks do not impact secure
development practices on the SymbianOS platform.
The most current version of
SymbianOS is 9.4 and is the foundation for the fifth edition of S60.
This is available on the Nokia 5800 XpressMusic. It is both API and ABI
compatible with previous releases in the 9.x
series, and software developed for previous versions should be able to
run without modification. With that in mind, one should develop against
the oldest software development kit (SDK) available for the 9.x
series that provides the required features. This allows for
applications to achieve the widest adoption possible. Current SDKs and
documentation are freely available to developers at the SymbianOS
developer site.
Smartphones relying upon the SymbianOS platform include:
Nokia 5800 XpressMusic (S60 5.0/SymbianOS 9.4)
Samsung SGH-L870 (S60 3.2/SymbianOS 9.3)
Nokia N96 (S60 3.2/SymbianOS 9.3)
Nokia E71 (S60 3.1/SymbianOS 9.2)
LG KS10 (S60 3.1/SymbianOS 9.2)
Motorola MOTO Z10 (UIQ 3.2/SymbianOS 9.2)
Sony Ericsson W950 (UIQ 3.0/SymbianOS 9.1)
Sony Ericsson P1 (UIQ 3.0/SymbianOS 9.1)
In June 2008, Nokia
announced its intention to establish the Symbian Foundation as an
autonomous entity to unify and guide future SymbianOS development. To
that end, Nokia acquired all outstanding shares of Symbian Ltd. In
addition, S60, UIQ, and MOAPS were all contributed by their stakeholders
to the Symbian Foundation to advance the goal of unification. The S60
framework has been selected, with key components from UIQ and MOAPS, as
the standard for future SymbianOS development. The foundation has also
committed to open-sourcing SymbianOS, with the intent of using the
OSI-approved Eclipse Public License. The first Symbian release arising
from this enterprise will be known as Symbian ^ 2, based on S60 5.1; in
the meantime, the Symbian Foundation has re-released the fifth-edition
S60 SDK as Symbian ^ 1. The software should be available during the
second half of 2009, with shipping hardware to arrive on the market at
the beginning of 2010.
Device Architecture
In order to provide
flexibility in hardware support, SymbianOS implements a layered design
where the majority of software components are provided by SymbianOS.
Device original equipment manufacturers (OEMs) provide the concrete
implementations of necessary interfaces in order to interact with their
product. Figure 1 shows a simplified representation of a SymbianOS device.
Hardware Layer
The
hardware layer represents the physical hardware of the device and is
wholly the responsibility of the manufacturer developing the device.
SymbianOS devices can currently be based on the ARMv5, ARMv6, or ARMv7
architecture, although the layered design allows for a relatively
straightforward porting process to other architectures. Whatever
hardware SymbianOS is operating on, it is only able to take advantage of
the facilities exposed through the Hardware Abstraction Layer (HAL).
Hardware Abstraction Layer (HAL)
The HAL sits between the
hardware and the kernel to significantly reduce the development effort
required to support new platforms. Hardware-specific interaction is
factored into a Board Support Package (BSP) consisting of concrete
implementations of several abstract interfaces consumed by the kernel.
In this fashion, SymbianOS can run on a wide variety of hardware
platforms. SymbianOS also provides a set of reference/test BSPs that
OEMs can adapt to assist in the rapid development of device-specific
code.
Kernel Services
The kernel services layer is
responsible for managing system resource allocation. In addition to
EKA2, the actual microkernel, several other critical services run within
this layer. For example, although the file server and assorted file
systems do not execute within the kernel memory context, they are
included here because devices would fail to function properly in their
absence.
OS Services
The OS services layer
includes a set of frameworks and libraries that are not critical for the
functioning of the device, but without which the device could not do
anything useful without dramatic effort. This includes libraries and
services providing access to telephony, networking, windowing,
multimedia, and so on. These components execute as processes within the
user memory context and are accessed through approved kernel-mediated
interprocess communication (IPC) mechanisms.
User Applications and Frameworks
The top layer consists of
various user applications and frameworks, including both those
preinstalled by an OEM and aftermarket applications installed by the end
user. Applications at this layer access device-specific functionality
exclusively through OS-provided services. As such, applications written
against a specific SDK can be compiled
for and run on a wide variety of supported phones. The end user
generally associates these components with the device because they
perform useful and visible tasks.
Device Storage
Storage on SymbianOS-based
phones can be broken down into three logical components: ROM, fixed
internal storage, and removable storage. All SymbianOS phones include
ROM and some form of fixed storage; most also include additional
removable storage. Access to all storage is performed through a common
interface provided by file system drivers, concealing any physical
differences among the devices.
ROM
Built-in system code and
applications are placed in a read-only segment, visible to the system as
the Z: drive. Although this can be an actual masked ROM or other
specialized ROM device, it is commonly implemented using some form of
flash memory. This allows the manufacturer to readily upgrade system
components throughout the life cycle of a device, including by an end
user. Some devices use NOR-based flash memory that is byte addressable
and supports eXecute-in-Place (XiP), where code is run without copying
into RAM. Others use NAND flash that is only block addressable,
requiring that code be copied into RAM before execution. An OEM may
choose to use NAND flash because this allows them to use the same
physical chip to provide both the ROM and fixed storage functionality.
Fixed Storage
Fixed storage is
visible to the operating system as the C: drive and is available for
persistently storing user settings, data, and applications. This is
generally implemented using NAND flash memory, although this is not the
only possibility. The size of this storage can vary widely among
manufacturers. Some devices will have additional internal storage made
available to the system using another unique drive letter.
Removable Storage
Many SymbianOS-based phones
support some form of removable storage medium such as Secure Digital
(SD), MultiMedia Card (MMC), or CompactFlash (CF). Removable storage is
also a local storage medium and is assigned one of the drive letters
reserved for local devices (in practice, this is generally the D: or E:
drive). Phone users can store personalized settings and data, or they
can install applications onto
removable storage just as they would with internal storage. Because the
storage is removable, stored data can be readily modified by mounting
the storage device on a computer. To maintain the integrity of the
installer as the sole gatekeeper for installed applications, a hash of
application binaries installed onto removable storage is kept in a
private location on internal storage. This prevents tampering with
applications installed onto removable storage to gain elevated
privileges for the binary.