新闻中心

EEPW首页 > 设计应用 > Symbian智能型手机作业系统

Symbian智能型手机作业系统

作者:时间:2008-04-02来源:网络收藏

  前言:Symbian是由Ericsson、Panasonic、NOKIA、Simens AG、Sony Ericsson等公司所共同开发并拥用的专为手机硬件而设计的,其包含了函式库(libraries)、用户界面(user interface)架构和共用工具(common tools)的参考实现(reference implementation),Symbian的前身是的EPOC,当初仅设计为ARM架构处理器独占使用。

  

  

  图说:Symbian的官方图标志。

  而Symbian在2004年7月股权变动后,Nokia的持股比例从32.2%上升到47.9%,维持其第一大股东的地位。为了力拱Symbian,Nokia也发动产业链上的内容开发商来说服手机厂商加强采用Series 60平台,除了联合各移动通信终端设备厂商共同支持Symbian作业系统外,还将该移动通信终端设备平台授权给Samsung、Siemens和 Panasonic,以统一各家移动通信终端设备平台来加强开放性以及降低软件开发成本。

  Symbian的成立理念除了有加强开放性以及降低软件开发成本等考量以外,将微软这只软件巨兽给挡在移动应用门外是另外一个重点,由于几大移动电话业者早已看出微软对于移动市场也有着极大的兴趣,迟早会将手伸进来搅和,因此藉由成立Symbian,成为各大手机厂商的通用系统核心,应用程式也可以极大的比例互通,藉以形成规模,造成进入门槛。只不过微软巨兽的称号可不是简单就能得到的,在推出Windows mobile移动作业系统家族之后,随着架构与性能的逐步改善,已经在移动装置逐渐闯出一片天,想要完全阻挡微软的入侵,似乎已经是一件不可能的事。

  Symbian的设计特性

  以Symbian作业系统为基础的,在使用者介面上的设计则是以套件形式提供厂商多种不同的选择,比如说常见于Sony Ericsson手机的介面,Nokia手机的Series 60、Series 80、Series 90等,以及诸如封闭式平台如由Fujitsu、Mitsubishi、Sony Ericsson和Sharp合作开发应用于NTT DoCoMo所采用的FOMA(Freedom of Mobile Multimedia Access,世界上第一个WCDMA网路)等等。提供不同型态的手机操作方式(介面与输入方式),以及程度不等的扩展性。

  而Symbian本身也是一款支援先占式多工、,以及具备存储器保护功能的作业系统,由于最初是专为移动装置所设计,一般行动装置(如手机)等在硬件资源上都相当有限,无法如桌上平台作业系统般,对硬件需求可以无限制的膨胀。为了要尽可能在维持系统的可操作性以及稳定性的前提之下,延长采用Symbian作业系统的移动装置的使用时间,因此它在资源控管上就进行得非常严格,除了利用各种方式来降低存储器的需求以外,程式写作是采用事件驱动的方式,当存储器中没有应用程式发出事件处理需求,中央处理器将会被关闭,藉以节省电源消耗。

  在整个处理流程概念上,应用到了活动物件(Active Object)的方式,活动物件是一种多工处理的形式,其具备了协同式多工(cooperative multitasking)的特性,在架构上,当一个物件做了一个非同步服务的要求时(比如说系统要送出一个SMS信息),当要求成立之后,作业系统就会辨别出该负责该服务执行绪内的活动物件,并且唤醒负责搭载该物件的执行绪,物件本身也将会被附加一个启动排程,并且将控制权交给该物件。

  在实作上,一个执行绪内将会有许多的物件,每个物件都有其各自负担的行程,但是晤见之间并不是完全独立的,而是可以互相作用,当A物件的行程与B物件有相关时(比如说传送短信与连接到网路服务的物件彼此就要互相作用),物件与物件、执行绪与执行绪之间都会有相互的请求,甚至执行绪本身也可以对该执行绪内的物件做处理请求动作。这个软体设计概念其实相当古老,早在70年代就已经被发展出来。利用这些处理规则,Symbian可以很有效率的处理所有的工作流程,并且延长电池使用时间。

  虽说因为这些技术的缘故,在Symbian上设计应用程式的难度将会有所提升,但是基本上由于可采用的程式开发工具相当多,相关的官方资源与支援也相当完备,虽然基本上Symbian的原生开发语言是C++,一般来说是采用VC++、Visual Studio以及Carbide等,但是开发者也可以采用OPL、Python、Visual Basic、Simkin以及Perl等来搭配J2ME以及自行开发的JAVA来使用,具备有相当大的弹性空间。

  Symbian作业系统结构

  Symbian具备有一个微核心架构,在架构内定义了包含排程系统以及存储器管理机制,不过网路与档案系统则是外加在使用者端服务,没有包含在微核心架构之内。在基本层内,包含了档案服务,可在服务内提供类似DOS外观的档案系统(每个逻辑或实体磁碟装置都拥有各自的磁碟代号,利用反斜线来当作目录的定义系统)。Symbian支援多种不同的档案系统,通常这些档案系统被隐藏在最底层,而不会被显示出来。

  Symbian具备了一个相当庞大的网路以及通信子系统,包含了三种主要服务,这三个主要的服务,分别是ETEL(EPOC telephony)、ESOCK(EPOC协定)及C32(序列通信回应机制)。这三种服务都有其结构,举例来说,ESOCK可容许不同的「.PRT」协定模组,藉以实作多种不同种类的网路协定架构。这些相关架构也包含了诸如蓝芽、红外线以及USB等短距离有线/无线通信中。

  在使用者介面上,也包含了大量的程式码,虽然使用者介面大多是,第三方厂商所维护但是所有使用者介面的基本类别与次系统都是被包含在Symbian架构之中,相关的绘图功能程式码也被包含在Symbian功能服务中,这些程式码功能包含了视窗服务、自行、点矩阵图形服务等等。

  至于在应用程式结构方面,则是提供了不同的应用程式引擎,不同的应用程式都会分散到各种不同的动态连结函式库(DLL)引擎以及图形化程式中,当然,Symbian本身也提供了相当多现成的DLL给程式开发者使用。

  Symbian作业系统的体系

  从1998年Symbian正式出现以来,历经了十数次的改版,目前Symbian OS最新的版本为9.3版,但是提供给开发者的却不是这种单纯的OS层次程式码,转而代之的是以套件形式来推出的配套方案。目前类似的配套方案主流有Nokia公司的S60与Sony Ericsson的这两种。

  

  

  图说:采用 3.0版的Sony Ericsson P990。

  Nokia为Symbian提供了4种方案,分别是S40平台、S60平台、S80平台以及CDMA方案。CDMA方案是给具备基本通话、短信、通信录管理功能手机使用,属于非常基本的类型,支援彩色萤幕,但是可扩充能力以及功能方面非常简化,是专门给最低阶产品开发应用。S40平台至专门提供用来设计具备基本功能的系统,提供了标准的中界、FLASH应用等等,不过最高解析度设定在320*240,因此定位于中高阶产品应用,在操作介面上做了相当程度的简化。S80则是着重于个人资料辅助处理功能上,在定位上,就与Windows CE类似,以全功能完整提供各种应用程式以及网路服务,以双手操作最佳化。在开发应用程式上可使用C++或者是JAVA等弹性方案。不过以上这三种方案主要都是应用于NOKIA的产品中,几乎没有第三方厂商采用。

  而S60可以说是目前最主流的作业系统,主要是以单手操作为其人机介面概念,除了NOKIA以外,也被诸如Panasonic、SAMSUNG、Motorola等厂商所采用,使用范围相当广,此平台除了包含了完整的事务辅助处理功能以外,更包含游戏、影音等热门功能,并支援了目前流行的移动通信网路以及Wi-fi无线网路等环境使用,在产品竞争方面,可以说是最高的,虽然对于硬件厂商来说竞争非常大,但是对于软件开发商来说,只要针对S60平台开发一套软件,即可应用于不同的厂牌智能型手机中,除了市场可大幅扩张以外,相对的开发成本也可有效降低,不需要针对每个平台来去做底层架构上的更动。消费者也不必担心买了特定厂牌的S60平台手机会有软件支援度不足的状况,毕竟这些智能型移动产品在核心架构上都是属于系出同门,只有硬件设计理念有所不同而已。

  

  

  图说:采用S60第三版的Nokia N73。

  S60目前已经发展到3.1版(或称为S60 3rd Edition Feature Pack 1),是基于最新的Symbian OS 9.2的基础上,而不同版本之间因为支援解析度以及使用者介面的不同,就有可能造成应用程式的不相容,比如说第三版开始使用的Symbian OS 9.1,与过去S60 2.X版所採用的Symbian OS 8架构有着明显的不同,9.1版採用了新的ARM EABI 2进位执行档模型,在应用程式管理及安全性上有不小的变更,因此旧版针对Symbian OS 8环境所开发的软件就无法沿用到S60 第三版上,最新的S60 3.1版中,则是将Symbian OS版本推进到9.2版,这个版本是在2006年第一季释出,变动部分,主要是支援了蓝芽2.0、OMA装置管理等,不过在实际产品上,採用S60 3rd Edition Feature Pack 1的N95,已经应用了不少Symbian OS 9.3的特色,包含HSDPA、802.11协定以及更多语言的支援等等。

  

  

  图说:采用S60 3.1版的Nokia N95。

  

  

  图说:采用S60 3.1版的SAMSUNG SGH-i520。

  Symbian应用软件的开发

  上一段文章有提到,基于Symbian的应用平台有5种以上,这些平台提供了不同的开发套件供开发人员使用,其中最主要的就是UIQ以及S60这两种。个别手机厂商或者是同家族系列通常都会在网路提供可下载的开发套件以及软体开发环境。Symbian的C++语言程式设计,都是在Commercial IDE之下完成,比较常见的开发套件就属于微软的Visual Studio,CodeWarrior的Symbian版本也常被应用来开发专属应用程式,至于2006年时,Nokia则是使用Carbride.C++来取代CodeWarrior。

  Carbride.C++是基于Eclipse IDE 3.1环境以及支援Symbian特定功能的Eclipse CDT 3.0.2延伸套件的整合开发工具,基本上Carbride.C++使用与CodeWarrior相同的编译器,Carbride.C++也被分支为CDT的少数几个部分,但几乎都被包含在Eclipse附加套件上。在架构上,Carbride.C++与标准Eclipse安装非常类似,它可以被应用在其他种类的语言发展上,比如说JAVA与Perl等(必须利用Eclipse的自我升级功能来安装正确的附加套件)。由于Carbride.C++使用了Eclipse的组建管理系统(Eclipse’s Managed Build System)来建立Symbian的可执行档,相较起标准Symbian开发工具,Carbride.C++在建立执行档的能力方面要来的更为优秀许多,不过这个开发工具倒也不是都毫无缺点,首先,它就无法完全反映出标准Symbian OS开发工具的任何功能上的加强或改变,其次,使用Carbride.C++必须具备更高深的程式写作技巧,以及Symbian的底层结构和使用者介面的瞭解也必须更透彻。而在程式编译过程,Carbride.C++所提供的编译工具也有可能会隐含瑕疵,导致编译出来的程式有不正常动作的情形。

  此外,Borland IDE也有专为Symbian设计的版本;在Linux与MAC OS X环境下也有社群技术支援的开发工具使用,部分Symbian允许公开关键工具的原始码。

  的程式设计技巧

  最重要的一点,就是将核心程式码与使用者介面部分的程式码分开,分成不同的模组这么一来可以有助于应用程式在不同使用者介面系统之间的移植动作更为顺利。方法之一就是将所有与介面控制非相关部分都放到独立的核心DLL之中,使用者介面则是直接对核心DLL做出连结,藉由存取该DLL而达到功能上的应用。

  另一个方法便是再原始码的阶段就做出区分,整个应用程式包括核心引擎与使用者介面可以包一包编译为单一档案,但是在原始码部分的撰写与存放就要放置到不同的.CPP与.H档案中,以便于管理及测试。採用这种设计方式,在移植往新介面时,负担也可以有效减轻,为了适应新的介面,只要变更控制使用者介面的原始码即可,核心部分的变动可以缩小到最低程度。

  本地端语言的支援要利用Symbian OS本身的控制方式来提供,而不能将本地语言写死到程式码中,除非市场仅只着眼于本地,不然为了将来国际化版本的开发以及国别转换,将介面语言写死到程式码中,会造成将来改版上的困扰。

  尽量使用Symbian所提供的官方SDK中的API来开发应用程式,避免使用第三方厂商或自行开发的API,以避免将来作业系统改版或SDK版本变更之后,应用程式大幅经过改写才能获得作业系统支援的情况。

  不同的硬件架构对于资源的管理方式都有可能不同,因此要尽量考虑到不同硬体对其系统资源的分配方式,而不要所有在程式开发过程中所需要的硬件或软件功能都能在硬件中获取,而特定硬件资源的取用代号也可能会因硬件而异,因此采用相对位址,而不是绝对位址,可以避免在不同硬件上执行程式的不相容情形。

  存储器管理是Symbian程式设计的最重要部分

  由于Symbian OS本身就是针对存储器与运算资源都颇为受限的硬件来开发,应用程式可能在各种情况之下碰到存储器耗尽,或者是硬件资源被其他应用程式占用的情况,这些例外情况无法透过修改程式码来获得改进,因此必须遵守几个规则:

  ■ 不要占用不必的存储器空间。

  ■ 当程式执行完毕,必须记得将所使用到的资源释放出来。

  ■ 在程式对作业系统本身申请存储器占用时,都必须准备好面对存储器不足的情况。

  ■ 当存储器不足的情况出现时,就必须将应用程式回归到原始状态,并且将原本占用到的资源回吐出来。

  此外,在程式码中,尽可能使用SDK中所推荐的指令以及流程,避免造成应用程式的错误。为了避免应用程式有存储器洩漏的状况时,却无法即时做出反应,导致应用程式崩溃,可以利用一些小技巧,将特定检查码放在程式码的开头与结尾,藉以找出会导致存储器洩漏的部分程式码。

  Symbian OS中的执行绪管理与工作进程管理

  在Symbian OS中,每个工作进程都包含了一个或多个执行绪,执行绪是程式执行的基本单位,由于Symbian OS中是属于先占式多工设计,这也意味着,每个执行绪都有自己的执行时间,除非系统将CPU使用权转移到其他执行绪中。当系统调度时,执行绪的定址空间是受到保护的,因此每个使用者端执行绪都有自己的专属空间与时间,可避免互相受到干扰。每个执行绪都有各自的stack以及heap,heap可以是私有的,也可以被其他执行绪所共享。虽然Symbian OS支援执行,但基本上还是为单执行绪工作处理做最佳化,因此在应用程式开发上,大多推荐以Active Object(类似协同式多工的一种处理方式)来代替的执行方式。

  在Symbian OS中使用单执行绪有几个考量,主要是由于每个执行绪都有各自的stack耗用,使用单执行绪可以减少存储器耗用,而在执行绪之间切换,要比使用Active schduler来进行Active Object切换来得慢,而单执行绪也不需要处理不同执行绪之间的户斥状况,因此也可以简化程式码的设计,减少错误的发生。

  不过在特定的情况之下,使用多执行绪还是有其优点的,比如说,当要为了保证所执行任务的持续性时,比如说播放音乐,不想让音乐工作被其他短信活动等干扰而中断,因此就可以将之独立为一个执行绪来处理。而特定应用程式中,也有因为原先设计就比较适合使用多执行序架构,比如说电子游戏,单执行绪处理可能会导致音效或动画显示不同步。

  不过在启动执行绪之后,执行绪的stack就不能再增加,否则可能会导致该执行绪崩溃,这是在程式设计时,所必须要注意的一点。

  结论

  Symbian OS具备了极高品质的设计特性,其应用的广泛度,也被层出不穷的新产品所证明,除了高阶硬体以外,中低阶硬件也可以无痛的导入。由于行动装置逐渐走向低成本与高性能走向,备有不同平台开发方案的可以很好的适应这些不同的应用需求,在架构上,也要比竞争对手更容易发挥出硬件的效能。目前市场现况来说,採用Symbian的移动装置已经突破一亿台,而发展中国家如印度、中国大陆以及巴西等都是人口密集的大国,将来出货量更有水涨船高的可能,IDC预估,到2011年,全球移动装置出货量可能高达10亿部以上,不论是针对开发中国家的低阶硬件产品或是为年轻用户准备的高阶全功能产品,都是产业界所不能忽视的市场机会。(52RD.com)



评论


相关推荐

技术专区

关闭