Symbian OS: Difference between revisions
m →Devices that have used the Symbian OS: wikilink |
m →Symbian OS boot sequence: wikilink |
||
Line 278: | Line 278: | ||
== Symbian OS boot sequence == |
== Symbian OS boot sequence == |
||
{{Cleanup-section|date=May 2008}} |
{{Cleanup-section|date=May 2008}} |
||
Like any PC, Symbian-based devices have their own boot-up process, i.e. the process which brings from power-up to a ready-to-use system. This is the sequence for [[Motorola |
Like any PC, Symbian-based devices have their own boot-up process, i.e. the process which brings from power-up to a ready-to-use system. This is the sequence for [[Motorola A1000]] phone (see also [http://www.symbian.com/developer/techlib/v70sdocs/doc_source/reference/cpp/WindowServerClientSide/wsiniSyntax.guide.html official documentation]): |
||
BOOTSTRAP --> EKERN.EXE --> EFILE.EXE --> ESTART.EXE --> EWSRV.EXE --(1)--> QSTART.EXE --(2)--> .MDL files (3) |
BOOTSTRAP --> EKERN.EXE --> EFILE.EXE --> ESTART.EXE --> EWSRV.EXE --(1)--> QSTART.EXE --(2)--> .MDL files (3) |
||
Line 286: | Line 286: | ||
#Custom MDL files are processed |
#Custom MDL files are processed |
||
These are three possible "entry points" to modify startup sequence: WSINI.INI is just a text file, which specifies which "shell" to start (QSTART on |
These are three possible "entry points" to modify startup sequence: WSINI.INI is just a text file, which specifies which "shell" to start (QSTART on A1000), so probably other shells could be specified to be started here; but WSINI.INI resides in ROM, thus this requires heavy device hacking. Similar problems for QSTART.EXE: it reads program list from QSTART.RSC, but this file resides in ROM. Only step 3 is useful to customize boot sequence, as .MDL files can also be stored in RAM, and they also allows starting up any application, which in this way can autostart at phone bootup. |
||
The list below is the content (stripped of unreadable binary data) of |
The list below is the content (stripped of unreadable binary data) of Motorola A1000 QSTART.RSC file, which probably describes which programs/services are started upon UIQ interface is started: |
||
*Z:\system\programs\splash - initial splash screen |
*Z:\system\programs\splash - initial splash screen |
Revision as of 18:09, 12 June 2008
File:Symbian OS v9.2 running S60 3rd Edition FP1 interface | |
Developer | Symbian Ltd. |
---|---|
OS family | Embedded operating systems |
Working state | Current |
Source model | Shared |
Latest release | 9.5 / unknown |
Marketing target | Mobile devices |
Platforms | ARM (can be emulated on x86) |
Kernel type | Microkernel |
Default user interface | S60 platform, UIQ, MOAP |
License | unknown |
Official website | www.symbian.com |
Symbian OS is a proprietary operating system, designed for mobile devices, with associated libraries, user interface frameworks and reference implementations of common tools, produced by Symbian Ltd. It is a descendant of Psion's EPOC and runs exclusively on ARM processors.
On June 24, 1998, Symbian Ltd. was formed as a partnership between Ericsson, Nokia, Motorola and Psion, to exploit the convergence between PDAs and mobile phones.
Symbian is currently owned by Nokia (47.9%), Ericsson (15.6%), Sony Ericsson (13.1%), Panasonic (10.5%), Siemens AG (8.4%) and Samsung (4.5%). Although BenQ acquired the mobile phone subsidiary of Siemens AG, the Siemens AG stake in Symbian did not pass to BenQ.
Design
Symbian OS, with its roots in Psion Software's EPOC, is structured like many desktop operating systems with pre-emptive multitasking and memory protection. EPOC was inspired by a VMS-like approach to multitasking with server-based asynchronous serialised access based on events.
Symbian OS was built to follow three design rules - the integrity and security of user data is paramount, user time must not be wasted, and all resources are scarce. This led to a continuation of the use of servers; a microkernel; a request and callback approach to all services; an absolute division of user interfaces from system or application services; reuse and openness; extensibility; and robust management and resource recovery to support extended always-on operation. For hardware the OS is optimised for low-power battery-based devices and for ROM-based systems (e.g. features like XIP and re-entrancy in shared libraries). Applications, and the OS, follow an object-oriented design, MVC.
Later OS iterations diluted this approach in response to market demands, notably the introduction of a real-time kernel and a platform security model in versions 8 and 9.
There is a strong emphasis on conserving resources, using Symbian-specific programming idioms such as descriptors and a cleanup stack. There are similar techniques for conserving disk space (though the disks on Symbian devices are usually flash memory). Furthermore, all Symbian OS programming is event-based, and the CPU is switched off when applications are not directly dealing with an event. This is achieved through a programming idiom called active objects. Similarly the OS approach to threads vs. processes is driven by reducing overheads.
Symbian OS EKA2 supports sufficiently-fast real-time response that it is possible to build a single-core phone around it - that is, a phone in which a single processor core executes both the user applications and the signalling stack. This is a feature which is not available in Linux. This has allowed SymbianOS EKA2 phones to become smaller, cheaper and more power efficient[citation needed].
Competition
Symbian OS is the leading OS in the 'smart mobile device' market. Statistics published February 2007 showed that Symbian OS had a 67% share of the 'smart mobile device' market, with Microsoft having 13% through Windows CE and Windows Mobile and RIM having 10%.[1] Other competitors include Palm OS, iPhone OS, Qualcomm's BREW, Google Android and SavaJe.
Structure
The Symbian OS System Model contains the following layers, from top to bottom:
- UI Framework Layer
- Application Services Layer
- Java ME
- OS Services Layer
- generic OS services
- communications services
- multimedia and graphics services
- connectivity services
- Base Services Layer
- Kernel Services & Hardware Interface Layer
The Base Services Layer is the lowest level reachable by user-side operations, it includes the File Server and User Library, the Plug-In Framework which manages all plug-ins, Store, Central Repository, DBMS, and cryptographic services. It also includes the Text Window Server and the Text Shell, the two basic services from which a completely functional port can be created without the need for any higher layer services.
Symbian OS has a microkernel architecture, which means that the minimum necessary is within the kernel to improve robustness, availability, and responsiveness. It contains a scheduler, memory management, and device drivers, but other services like networking, telephony, or filesystem support are placed in the OS Services Layer or Base Services Layer. The inclusion of device drivers means the kernel is not a true microkernel. The EKA2 real-time kernel has been termed a nanokernel, containing only the most basic primitives and supporting an extended kernel to implement any other abstractions.
Symbian OS is designed to emphasize compatibility with other devices, especially removable media file systems. Early development of EPOC led to adopting FAT as the internal file system and this remains in the Symbian OS but an object-orientated persistence model has been placed over the underlying FAT, providing a POSIX-style interface and a streaming model. The internal data formats rely on using the same API that create the data to run all file manipulations - this has created the problems of data-dependence and associated difficulties with changes and data migration.
This article's tone or style may not reflect the encyclopedic tone used on Wikipedia. (December 2007) |
There is a large networking and communication subsystem, which has three main servers – ETEL (EPOC telephony), ESOCK (EPOC sockets) and C32 (responsible for serial communication). Each of these has a plug-in scheme. For example ESOCK allows different ".PRT" protocol modules, implementing different types of networking protocol scheme. The subsystem also contains code that pertains to short-range communication links too, such as Bluetooth, IrDA and USB.
There is also a large volume of 'User Interface (UI) Code'. For the most part actual user interfaces are maintained by third parties. However the base classes and substructure are contained within the Symbian OS. This component is known as UIKON. The Symbian OS also contains the graphics, text layout, and font rendering libraries.
All Symbian applications are built up from three classes defined by the Application Architecture: an application class, a document class, and an application user interface class. These classes create the fundamental application behavior. The remaining required functions, the application view, data model, and data interface, are created independently and interact solely through their APIs with the other classes. UIQ and S60 both extend this approach, in two different ways.
There are, of course, many other things that do not yet fit into this model – for example, SyncML, Java ME providing another set of APIs on top of most of the OS and multimedia. Quite a few of these are frameworks, and vendors are expected to supply plug-ins to these frameworks from third parties (for example, Helix player for multimedia codecs). This has the advantage that the APIs to such areas of functionality are the same on many phone models, and that vendors get a lot of flexibility, but means that phone vendors need to do a great deal of integration work to make a Symbian OS phone.
Also available on E51.
Symbian OS device manufacturers also get supplied with an example user interface layer called TechView. This is very similar to the user interface from a Psion Series 5 personal organiser, so isn't used for any given phone user interface, but provides a basis to start customisation. It is also the environment in which a lot of Symbian OS test code and example code runs.
History
Psion
In 1980, Psion was founded by David Potter.
EPOC16
After the failure of the MC400 Psion released its Series 3 devices from 1991 to 1998 which also used the EPOC16 OS, also known as SIBO, which supported a simple programming language called OPL and an IDE called OVAL.
EPOC OS Releases 1–3
Work started on the from-scratch 32 bit version in late 1994. The Series 5 device, released in June 1997, used the first iterations of the EPOC32 OS, codenamed 'Protea' and developed from scratch in 3.5 years, and the 'Eikon' GUI.
EPOC Release 4
Internal only release.
EPOC Release 5
The Psion Series 5mx, Series 7, Psion Revo, Diamond Mako, Psion Netbook, netPad, GeoFox One, Oregon's Osaris, and Ericsson MC218 were released in 1999 using ER5. A phone project was announced at CeBIT, the Phillips Illium/Accent, but did not achieve a commercial release. This release has been retrospectively dubbed Symbian OS 5, it was never called that at the time.
ER5u
The first phone, the Ericsson R380 was released using ER5u in November 2000. It was not an 'open' phone – software could not be installed. Notably, a number of never-released Psion prototypes for next generation PDAs, including a Bluetooth Revo successor codenamed Conan were using ER5u. The 'u' in the name refers to the fact that it supported Unicode.
Symbian OS v6.0 and 6.1
Sometimes called ER6. The first 'open' Symbian OS phone, the Nokia 9210 Communicator, was released in June 2001. Bluetooth support added. Almost 500,000 Symbian phones were shipped in 2001, rising to 2.1 million the following year.
Development of different UIs was made generic with a "reference design strategy" for either 'smartphone' or 'communicator' devices, subdivided further into keyboard- or tablet-based designs. Two reference UIs (DFRDs) were shipped - Quartz and Crystal. The former was merged with Ericsson's 'Ronneby' design and became the basis for the UIQ interface, the latter reached the market as the Nokia Series 80 UI.
Later DFRDs were Sapphire, Ruby, and Emerald. Only Sapphire came to market, evolving into the Pearl DFRD and finally the Nokia Series 60 UI, a keypad-based 'square' UI for the first true smartphones. The first one of them was the Nokia 7650 smartphone (featuring Symbian OS 6.1), which was also the first with a builtin camera, with VGA (0.3 Mpx = 640*480) resolution.
Despite these efforts to be generic the UI was clearly split between competing companies, Crystal or Sapphire was Nokia, Quartz was Ericsson. DFRD was abandoned by Symbian in late 2002, as part of an active retreat from UI development in favour of 'headless' delivery. Pearl was given to Nokia, Quartz development was spun-off as UIQ Technology AB, and work with Japanese firms was quickly folded into the MOAP standard.
Symbian OS 7.0 and 7.0s
First shipped in 2003. This is an important Symbian release which appeared with all contemporary user interfaces including UIQ (Sony Ericsson P800, P900, P910, Motorola A925, A1000), Series 80 (Nokia 9300, 9500), Series 90 (Nokia 7710), Series 60 (Nokia 3230, 6600, 7310) as well as several FOMA phones in Japan. It also added EDGE support and IPv6. Java support was changed from pJava and JavaPhone to one based on the Java ME standard.
One million Symbian phones were shipped in Q1 2003, with the rate increasing to one million a month by the end of 2003.
Symbian OS 7.0s was a version of 7.0 special adapted to have greater backwards compatibility with Symbian OS 6.x, partly for compatibility between the Communicator 9500 and its predecessor the Communicator 9210.
In 2004, Psion sold its stake in Symbian. The same year, the first worm for mobile phones using Symbian OS, Cabir, was developed, which used Bluetooth to spread itself to nearby phones. See Cabir and Symbian OS threats.
Symbian OS 8.0
First shipped in 2004, one of its advantages would have been a choice of two different kernels (EKA1 or EKA2). However, the EKA2 kernel version did not ship until Symbian OS 8.1b. The kernels behave more or less identically from user-side, but are internally very different. EKA1 was chosen by some manufacturers to maintain compatibility with old device drivers, while EKA2 was a real-time kernel. 8.0b was deproductized in 2003.
Also included were new APIs to support CDMA, 3G, two-way data streaming, DVB-H, and OpenGL ES with vector graphics and direct screen access.
Symbian OS 8.1
Basically a cleaned-up version of 8.0, this was available in 8.1a and 8.1b versions, with EKA1 and EKA2 kernels respectively. The 8.1b version, with EKA2's single-chip phone support but no additional security layer, was popular among Japanese phone companies desiring the real-time support but not allowing open application installation. The first and maybe the most famous smartphone featuring Symbian OS 8.1a was Nokia N90 in 2005, Nokia's first in Nseries. It comes with Carl-Zeiss Tessar optics and a 2 Mpx (1600*1200) camera with video capabilities to take VHS quality (352*288) videos and a huge screen resolution (at the time) of 352*416 pixels.
Symbian OS 9.0
This version was used for internal Symbian purposes only. It was deproductised in 2004. 9.0 marked the end of the road for EKA1. 8.1a is the final EKA1 version of Symbian OS.
Symbian OS has generally maintained reasonable binary compatibility. In theory the OS was BC from ER1-ER5, then from 6.0 to 8.1b. Substantial changes were needed for 9.0, related to tools and security, but this should be a one-off event. The move from requiring ARMv4 to requiring ARMv5 did not break backwards compatibility.
A Symbian developer proclaims that porting from Symbian 8.x to Symbian 9.x is a more daunting process than Symbian says.[2]
Symbian OS 9.1
Released early 2005. It includes many new security related features, particularly a controversial platform security module facilitating mandatory code signing. Symbian argues that applications and content, and therefore a developers investment, are better protected than ever, however others contend that the requirement that every application be signed (and thus approved) violates the rights of the end-user, the owner of the phone, and limits the amount of free software available. The new ARM EABI binary model means developers need to retool and the security changes mean they may have to recode. S60 platform 3rd Edition phones have Symbian OS 9.1. Sony Ericsson is shipping the M600 and P990 based on Symbian OS 9.1. The earlier versions had a fatal defect where the phone hangs temporarily after the owner sent hundreds of SMS'es. However, on 13 September 2006, Nokia released a small program to fix this defect.[3]
Support for Bluetooth 2.0 (was 1.2)
Symbian OS 9.2
Released Q1 2006. Support for OMA Device Management 1.2 (was 1.1.2). S60 3rd Edition Feature Pack 1 phones have Symbian OS 9.2. Nokia phones with Symbian OS 9.2 OS: Nokia E90, Nokia N95,Nokia E51, Nokia 5700, Nokia N81, Nokia 6290, Nokia 6120 classic, Nokia N82.
Symbian OS 9.3
Released on 12 July 2006. Upgrades include improved memory management and native support for Wifi 802.11, HSDPA, Vietnamese language support. The Nokia N96 as well as the Nokia N78 will feature Symbian OS 9.3.
Symbian OS 9.5
Announced in March 2007. Provides the concept of demand paging which is available from v9.3 onwards. Applications should launch up to 75% faster. Native support for mobile digital television broadcasts in DVB-H and ISDB-T formats and also location services. Additionally, SQL support is provided by SQLite.
Open Source Software for Symbian 9.1
The following Open Source software has been rewritten for Symbian 9.1:
Utilities
- PuTTY, a telnet/ssh client
- Internet Radio
- SymTorrent, a bittorrent client
- Symella, a gnutella client
- Python interpreter
- Apache HTTP Server, a web server
Game emulation
Multimedia
Symbian has announced PIPS (PIPS Is POSIX on Symbian) which may increase the number of Open Source projects written for Symbian 9.1.
Security and malware
Symbian OS has been subject to a variety of viruses, the best known of which is Cabir. Usually these send themselves from phone to phone by Bluetooth. So far, none have taken advantage of any flaws in Symbian OS – instead, they have all asked the user whether they would like to install the software, with somewhat prominent warnings that it can't be trusted.
However, with a view that the average mobile phone user shouldn't have to worry about security, Symbian OS 9.x has adopted a capability model. Installed software will theoretically be unable to do damaging things (such as costing the user money by sending network data) without being digitally signed – thus making it traceable. Commercial developers who can afford the cost can apply to have their software signed via the Symbian Signed program. Currently, developers also have the option of self-signing their programs. However, the set of available features is smaller, and certain operators have opted on fully disabling certificates other than the Symbian Signed certificates.
Some other hostile programs are listed below, but all of them still require the input of the user to run.
- Drever. A is a malicious SIS file trojan that attempts to disable the automatic startup from Simworks and Kaspersky Symbian Anti-Virus applications.
- Locknut. B is a malicious SIS file trojan that pretends to be patch for Symbian S60 mobile phones. When installed, it drops a binary that will crash a critical system service component. This will prevent any application from being launched in the phone.
- Mabir. A is basically Cabir with added MMS functionality. The two are written by the same author, and the code shares many similarities. It spreads using Bluetooth via the same routine as early variants of Cabir. As Mabir. A activates it will search for the first phone it finds, and starts sending copies of itself to that phone.
- Fontal. A is an SIS file trojan that installs a corrupted file which causes the phone to fail at reboot. If the user tries to reboot the infected phone, it will be permanently stuck on the reboot, and cannot be used without disinfection – that is, the use of the reformat key combination which causes the phone to lose all data. Being a trojan, Frontal. A cannot spread by itself – the most likely way for the user to get infected would be to acquire the file from untrusted sources, and then install it to the phone, inadvertently or otherwise.
Openness
Symbian is not Open Source software. However, phone manufacturers and other partners are provided with parts of its source code. The APIs are publicly documented and up to Symbian 8.1 anyone could develop software for Symbian OS.
Symbian 9.1 introduced capabilities and Platform Security framework. To access certain capabilities, the developer has to digitally sign their application. Basic capabilities are user-grantable and developer can self-sign them, more advanced require certification and signing via the Symbian Signed program; which uses independent Test Houses and/or phone manufacturer approval. For example file writing is a user-grantable capability, and access to Multimedia Device Drivers require phone manufacturer approval. TC TrustCenter ACS Publisher ID certificate required from developer for signing application.
Devices that have used the Symbian OS
On November 16, 2006, the 100 millionth smartphone running the OS was shipped.[4]
- Ericsson R380 (2000) was the first commercially available phone based on Symbian OS. As with the modern "FOMA" phones, this device was closed, and the user could not install new C++ applications. Unlike those, however, the R380 could not even run Java applications, and for this reason, some have questioned whether it can properly be termed a 'smartphone'.
- Nokia 9210 Communicator smartphone (32-bit 66 MHz ARM9-based RISC CPU) (2001), 9300 Communicator (2004), 9500 Communicator (2004) using the Nokia Series 80 interface
- UIQ interface:
- Nokia S60 (2002)
- Nokia S60 is used in various phones, the first being the Nokia 7650, then the Nokia 3650, followed by the Nokia 3620/3660, Nokia 6600, Nokia 7610, Nokia 6670 and Nokia 3230. The Nokia N-Gage and Nokia N-Gage QD gaming/smartphone combos are also S60 platform devices. It was also used on other manufacturers' phones such as the Siemens SX1, Sendo X, Panasonic X700, Panasonic X800, Samsung SGH-D730, SGH-D720 and the Samsung SGH-Z600. Recent, more advanced devices using S60 include the Nokia 6620, Nokia 6630, the Nokia 6680, Nokia 6681 and Nokia 6682, a next generation Nseries, including the Nokia N70, Nokia N71, Nokia N72, Nokia N73, Nokia N75, Nokia N80, Nokia N81, Nokia N82, Nokia N90, Nokia N91, Nokia N92, Nokia N93 and Nokia N95, and the enterprise (i.e. business) model Eseries, including the Nokia E50, Nokia E51 Nokia E60, Nokia E61, Nokia E62, Nokia E65, and Nokia E70. For an up to date list, refer to the Symbian S60 website.
- Nokia 7710 (2004) using the Nokia Series 90 interface.
- Nokia 6120 classic, Nokia 6121 classic
- Fujitsu, Mitsubishi, Sony Ericsson and Sharp phones for NTT DoCoMo in Japan, using an interface developed specifically for DoCoMo's FOMA "Freedom of Mobile Access" network brand. This UI platform is called MOAP "Mobile Orientated Applications Platform" and is based on the UI from earlier Fujitsu FOMA models.
Developing on Symbian OS
The native language of the Symbian OS is C++, although it is not a standard implementation. There are multiple platforms based upon Symbian OS that provide an SDK for application developers wishing to target a Symbian OS device – the main ones being UIQ and S60. Individual phone products, or families, often have SDKs or SDK extensions downloadable from the manufacturer's website too. The SDKs contain documentation, the header files and library files required to build Symbian OS software, and a Windows-based emulator ("WINS"). Up until Symbian OS version 8, the SDKs also included a version of the GCC compiler (a cross-compiler) required to build software to work on the device.
Symbian OS 9 uses a new ABI and so requires a new compiler – a choice of compilers is available including a new version of GCC (see external links below). In terms of SDKs, UIQ Technology now provides a simplified framework so that the single UIQ SDK forms the basis for developing on all UIQ 3 devices, such as the Sony Ericsson P990 and Sony Ericsson M600.
Unfortunately, Symbian C++ programming has a steep learning curve, as Symbian requires the use of special techniques such as descriptors and the cleanup stack. This can make even relatively simple programs harder to implement than in other environments. Moreover, it is questionable whether Symbian's techniques e.g. the memory management paradigm are actually so beneficial. It is possible that the techniques, developed for the much more restricted mobile hardware of the 1990s, do cause unnecessary complexity in source code; programmers are required to concentrate on bug-prone low-level routines instead of truly application-specific features. It is difficult, however, to make a move towards a more high-level and modern programming paradigm in Symbian, because the platform is so tightly bound to semi-obsolete thinking models about mobile software development.[5]
Symbian C++ programming is commonly done with an IDE. For previous versions of Symbian OS, the commercial IDE CodeWarrior for Symbian OS was favoured. The CodeWarrior tools were replaced during 2006 by Carbide.c++, an Eclipse-based IDE developed by Nokia. Carbide.c++ is offered in 4 different versions: Express, Developer, Professional, and OEM, with increasing levels of capability. Full featured software can be created and released with the Express edition, which is free. Features such as UI design, crash debugging etc. are available in the other charged for editions. Microsoft Visual Studio 2003 and 2005 are also supported through the Carbide.vs plugin.
Symbian OS's flavor of C++[citation needed] is very specialised. However, many Symbian OS devices can also be programmed in OPL, Python, Visual Basic, Simkin, and Perl – together with the Java ME and PersonalJava flavors of Java.
Visual Basic, VB.NET, and C# development for Symbian were possible through AppForge Crossfire, a plugin for Microsoft Visual Studio. March 13, 2007 AppForge ceased operations, Oracle purchased the intellectual property, but announced that they do not plan to sell or provide support for former AppForge products.
There is also a version of a Borland IDE for Symbian OS. Symbian OS development is also possible on Linux and Mac OS X using tools and techniques developed by the community, partly enabled by Symbian releasing the source code for key tools. A plugin that allows development of Symbian OS applications in Apple's Xcode IDE for Mac OS X is available.[6]
Once developed, Symbian OS applications need to find a route to customers' mobile phones. They are packaged in SIS files which may be installed over-the-air, via PC connect or in some cases via Bluetooth or memory cards. An alternative is to partner with a phone manufacturer to have the software included on the phone itself. The SIS file route is more difficult for Symbian OS 9.x, because any application wishing to have any capabilities beyond the bare minimum must be signed via the Symbian Signed program.
Java ME applications for Symbian OS are developed using standard techniques and tools such as the Sun Java Wireless Toolkit (formerly the J2ME Wireless Toolkit). They are packaged as JAR (and possibly JAD) files. Both CLDC and CDC applications can be created with NetBeans. Other tools include SuperWaba, which can be used to build Symbian 7.0 and 7.0s programs using Java.
Nokia S60 phones can also run python scripts when the interpreter is installed, with a custom made API that allows for Bluetooth support and such. There is also an interactive console to allow the user to write python scripts directly from the phone.
Symbian folder structure
Although knowing how files and folders are organized in Symbian phones is not needed for normal user, its knowledge can be useful to "advanced users" as it allows preventing damage to data derived from OS bugs or misuse of the phone.
This description is based on filesystem structure of Motorola a1000 phone, a UIQ 2.1 based phone, but can usually apply to any Symbian 7.x/8.x phone.
The basic structure of a Symbian phone is made of 3 main folders in the root: system, system (ROM), and documents.
"Documents" folder just holds user data, no application, so its contents is of no interest here.
"System" is the most important folder, as it holds (but not all) of the system applications and settings. Other settings and programs, not changeable by the user, are stored in same folder in ROM drive (Z:\system): they are know as the firmware, as it can't be modified (in theory) once the phone is shipped to the end user. System folder contains some dozens of folders, and only of some of them the contents/use is (publicly) known:
- Apps - applications installed by the user
- data - system settings
- FEP - input methods (Front End Processors)
- install - list of installed applications
- java - self explanatory
- LIBS - system libraries and user-apps libraries
- mail - all messages (SMS, MMS, e-mails, bluetooth, irda, ...)
- MIDlets - j2me applications - part 1 of 2
- recogs - recognizers
Let's see them one by one:
- Apps
Contains all applications installed by user, settings for system applications (whose "executables" are stored in same folder on Z:\) and midlets "executables". Midlet applications (java j2me) are actually installed in two separate folders: one inside c:\system\Apps folder, another inside c:\system\MIDlets folder. In this one the .JAR file is stored; in c:\system\apps there is one folder named [xxxxxxxx] per each midlet; xxxxxxxx is an hexadecimal number (application UID) automatically chosen by System upon installation.
All the applications installed by user appear in c:\system\apps as a folder named like the application itself: i.e., SMan will have a C:\system\apps\SMan folder. The whole Apps folder is scanned by System when the Application Selector is started, which displays a list of all available, not-hidden applications. An application can be installed on every folder on the phone, but only applications installed in c:\system\apps will be visible in Application Selector. If an application has a .aif file which marks it as not visible (usually a System application in Z:), application does not appear in application selector, and it can only be started using a file manager which allows directly accessing application folder. Examples of "hidden applications" on Motorola a1000 are IViewer (Image viewer), JViewer (jotter viewer), Mdownloadagent (??), Mdrmmsghandler (Digital Rights Management?) QHELP (online help), QVcalviewer (Calendar viewer), QVnview (Voice notes viewer), qWebViewer, QDefaultViewer (maybe launched upon opening unknown documents), QVcardviewer, rtview (Ringtones viewer), saflashplayer (Flash player embedded in browser), screen_cal (Screen Calibration), Startup (WARNING!!! FORMATS YOUR PHONE!!!), SkinViewer, Stpfrmmover (Stamps and Frames mover (?)), TelVidUriApp (?). Most of these applications are intended to be launched by the System upon attempting to open specific files (ringtones, images), other are started just once ("screen-cal" after phone formatting, "startup upon" resetting the phone), others appear to be hidden for unknown reasons ("Stamps and Frames mover", which handles Stamps and Frames files stored in \system\data\frames and \system\data\stamps, used by image editor application). Applications intended to be launched by system will result in "corrupted" or "folder not found" errors if launched by user.
Each system application, pre-installed in z:\system\apps , has a matching folder in C:\system\apps, which holds its language file (.rsc) and its settings file (.ini)
- data - contains system settings changeable by the user; matching folder in Z: contains un-changeable settings. This folder also contain important user data: whole addressbook is stored in contacts.cdb file, which is locked by the system and can't be copied, moved, renamed or deleted until the phonebook application and/or server is running. This can be manually killed on some phones, allowing accessing the file; on some other phones like a1000, the only method to access contacts.cdb file is to start a backup from PC and at the same time using the file manager on the PC to access the file.
[...to be continued]
- FEP - input methods (Front End Processors)
User interfaces which allows emulating qwerty keyboard, recognizing handwriting and so on.
- install - list of installed applications
Once a .sis file is installed, its "relic" is put here, and used by the System to know where each application is installed.
- java - the names talks by itself
adding more .jar files here allows "unlocking" some hidden features of PersonalJava virtual machine (e.g. by copying QAWT.JAR from SDK)
- LIBS - system libraries and user-apps libraries
- mail - all messages (SMSs, MMSs, e-mails, bluetooth, irda, ...)
all messages are stored here in separate folders and in binary format. Even some messages marked as deleted still appears here for a while. NOTE: it is very probable that all symbian phones (before 9.x) do a total indexing of all messages at each phone startup; this result in very long startup time in case of hundreds or thousands of messages present on the phone.
- MIDlets - j2me applications - part 1 of 2
Together with c:\system\apps\[xxxxxxxx] , these folders contain installed midlets.
- recogs - recognizers
Recognizers are small dlls which allows system recognizing different file types: a recognizers can be used to tell to the system to analyze a specific amount of bytes in a file and its extension to determine which application use to open it. Recognizers can also be used to have an application automatically starting at phone bootup. This kind of recognizers should be always put in external memory, to prevent phone locking in case of trouble in autostarting applications.
Symbian OS boot sequence
Like any PC, Symbian-based devices have their own boot-up process, i.e. the process which brings from power-up to a ready-to-use system. This is the sequence for Motorola A1000 phone (see also official documentation):
BOOTSTRAP --> EKERN.EXE --> EFILE.EXE --> ESTART.EXE --> EWSRV.EXE --(1)--> QSTART.EXE --(2)--> .MDL files (3)
- Reads from z:\system\data\WSINI.INI the EpocWindowsSeRVer configuration data
- Reads from QSTART.RSC programs/servers to be started
- Custom MDL files are processed
These are three possible "entry points" to modify startup sequence: WSINI.INI is just a text file, which specifies which "shell" to start (QSTART on A1000), so probably other shells could be specified to be started here; but WSINI.INI resides in ROM, thus this requires heavy device hacking. Similar problems for QSTART.EXE: it reads program list from QSTART.RSC, but this file resides in ROM. Only step 3 is useful to customize boot sequence, as .MDL files can also be stored in RAM, and they also allows starting up any application, which in this way can autostart at phone bootup.
The list below is the content (stripped of unreadable binary data) of Motorola A1000 QSTART.RSC file, which probably describes which programs/services are started upon UIQ interface is started:
- Z:\system\programs\splash - initial splash screen
- Z:\system\apps\phone\phone - main Phone application
- Z:\system\programs\qdefaultfileinit
- Z:\system\programs\systemams
- Z:\system\programs\qdefaultthemeinit
- Z:\system\apps\alaunch\alaunch - Application Selector
- Z:\system\apps\appicker\appicker - Top application bar
- Z:\system\programs\wldsrvinit
- wldsrvinit_sem
- Z:\system\libs\uuudserver
- Z:\system\apps\startup\startup
- Z:\System\Libs\locationagentserverexe - AGPS server
- Z:\System\Libs\testappserverexe
- Z:\System\Programs\BtHsGw - bluetooth headset?
- Z:\System\Programs\QSchFetchStart
- Z:\System\Apps\USAT\USAT - USIM programs manager?
- Z:\System\Libs\Watcher
- Z:\System\Programs\kickconn
- Z:\System\Programs\QConnListeners
- Z:\System\Apps\irSendListen\irSendListen - (some bluetooth driver are named as irda drivers)
- Z:\System\Libs\instrec - Install Recognizers (.mdl files in \system\recogs )
When Z:\system\libs\instrec.exe is started, it examines all recognizers stored in all drives in \system\recogs folders, storing information about files associations. Together with contents of .AIF files of applications, this allows System to know which application use to open "recognized" files.
Running this program from console (Z:\system\samples\eshell.exe) reloads all recognizers, thus allowing new recognizers being installed without rebooting the phone.
At some point of the startup sequence, probably system calls program mailinit.exe, which actually appears referred to in this chain:
qikutils.dll -> eikcore.dll -> uikon_init -> qsbmsg.dll -> msgs.dll -> mailinit.exe
This is documented to cause, in case of lot of messages present in memory, a very long startup time, as probably mailinit.exe is demanded to rebuild the c:\system\data\index files, which holds summaries and status of all messages present in the system (sms, mms, mail, bluetooth...). SymbianOS is indeed designed to run continuously for many days, virtually never requiring reboot, so all long-time activities are probably executed only at startup.
See also
- Access Co.
- Multiplayer Mobile games
- Nokia OS (NOS)
- Openmoko
- Operating System Embedded (OSE)
- Qtopia
- Accredited Symbian Developer
Notes and references
- ^ Smart mobile device shipments hit 118 million in 2007, up 53% on 2006 (Canalys press release: r2008021)
- ^ Symbian developer reports on porting from 8.x to 9.x
- ^ Solution to Nokia Slow SMS / Hang Problem
- ^ Six Years of Symbian Produces 100 Models and 100 Million Shipments, The Smart PDA.
- ^ Symbian OS design faults
- ^ Tom Sutcliffe and Jason Barrie Morley Xcode Symbian support
- Morris, Ben The Symbian OS architecture sourcebook : design and evolution of a mobile phone OS, John Wiley & Sons (2007), ISBN-13: 978-0-470-01846-0.
- Free symbian software
- History of OPL
- History of Symbian, 1980-2004
- Some Useful Symbian Stuff
- Symbian Signing Tutorial
External links
This article's use of external links may not follow Wikipedia's policies or guidelines. |
- Symbian Freeware downloads archive
- Mobile Health Information – Mobile Health Information Search for Symbian Mobiles
- Symbian Company Website including release history
- Symbian Developer Network – the official developer network.
- Wireless Developer Forum – The Business of developing on mobile phones
- Symbian rapid authoring and publishing tools
- DMOZ directory of Symbian software
- DMOZ directory of Symbian sites
- BestofSymbian.com reviews and explains current Symbian software
- AllAboutSymbian.com is one of the biggest community websites about Symbian OS phones.
- SymbianOne cover Symbian from a commercial, enterprise, and developer perspective.
- Symbian Central Symbian OS phone and software review.
- NewLC – Symbian OS developer website.
- Carbide.c++ is an Eclipse-based IDE for Symbian C++ development, developed by Nokia.
- Python for S60
- Symbian Freeware downloads archive
- Nokia Symbian Themes Nokia Symbian themes designing through Carbide C++ and downloads.
- Mobile Phones – Smartphones and mobile phones directory
- symbianresources.com – Free Symbian OS C++ development tutorials, plus several open source projects
- Majinate - Operates the Accredited Symbian Developer scheme and runs on-line competency exams
- Symbian Freak Website for smartphone users, with a smart phone discussion forum
- SymbiKen Website for symbian developers. It contains latest symbian news, tutorials, blogs and snipples.