新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 无线信息设计在通用操作系统EPOC的应用

无线信息设计在通用操作系统EPOC的应用

作者:时间:2012-01-06来源:网络收藏

设备(wireless informatiON device)是集PDA与传统手机与一体的新型手持设备,随着通信网络的发展必将成为未来几年手持设备的发展趋势。这种设备与其它嵌入式设备有所不同,它面对的是广大消费者,具有型号多、功耗低、重量轻、体积小和移动性强的特性;而它的磁盘、内存、电池和CPU处理能力又都比较有限。因此,对于所采用的具有特殊的要求。

本文引用地址:http://www.eepw.com.cn/article/149850.htm

设备的占用内存要尽量少,并且支持高效的多任务及进程间通信机制;应具有有效的电源管理功能,适合利用电池供电;要连续运行多年而无需重新启动;确保用户数据安全可靠的存储;提供友好的图形用户界面;采用面向对象的方法,软件程序代码具有良好的可重用性;支持多种标准通信协议,以便接入国际互联网和与其它设备互连;提供开放的程序平台,便于第三方软件开发商提供多样的程序。

无线设备对的诸多要求中,高可靠性占了首要地位;而实现高可靠性的关键是其操作系统要具有高效的内存操作及管理机制,提供的编程机制要能够充分管理有限的内存空间,不造成任何的内存分配与回收错误。否则,极微小的内存泄漏故障经过长时间的积累都将导致灾难性的后果。

为开发一种适用于无线信息设备的操作系统,诺基亚、爱立信、摩托罗拉和Psion公司在1998年成立了一个联合企业Symbian,而后又有松下、西门子、三洋等公司加入。是1999年由Symbian宣布的32位操作系统,并在其后得到不断完善。现在,许多商用无线信息设备都采用作为操作系统,如诺基亚的9210以及爱立信的R380、MC218等。

一、操作系统简介

EPOC是一套可携式的实时操作系统,韧体储存在ROM中。最适用EPOC的中央处理器是ARM3,而在x86, ARM4 和STrongARM运作,只能执行源代码,部份程序无法执行。目前尚无法支持ARM's Thumb 和Motorola M*core等先进的可携式中央处理器,但Symbian已开始进行这方面的研究开发了。EPOC仿真窗口操作系统的环境,EPOC是一套32位的操作系统,主要包含两个组件:E32和F32,E32负责执行核心指令和服务器的功能,核心程序API也提供驱动硬件的功能。F32是提供档案服务、撰写新程序的API,和测试ROM的指令shell.

EPOC的操作接口和窗口操作系统非常类似,以可视化的操作方式为主,点选某一工作群的icon之后,会跳出该群组的窗口,窗口内有该群组的应用程序的icon可供用户点选。而为了增加使用者的工作效率,使用者也可以将常用的程序自定义在Extras Bar,当常用的程序层级过多时,Extras Bar可以很快的找到该应用程序。Third Party的程序也可以加入到Extras Bar之中。EPOC也提供了控制面板来调节系统设定,包括时间/日期、密码、声音、屏幕、电力、键盘、打印机调制解调器、拨接和热键设定等功能。

EPOC操作系统的主要特点:

*高可靠性。具有高效电源管理机,而且即使在电池耗尽的情况下,也能确保不丢失任何用户数据。由于采用特殊的编程规范,可以有效地管理系统内存资源的分配和回收,不会壬内存的泄漏。因此,以EPOC为操作系统的设备可连续运行多年而不需重新启动,这也是对无线信息设备的基本要求。

*采用面向对象的和编程,程序代码具有很好的可重用性。EPOC提供各种常用的32位应用程序接口函数,而且具有图形用户界面编程框架,可以方便地创建用户应用程序。系统支持Unicode,容易进行本地化。

*提供多种通信协议。支持标准的国际互联网通信协议(TCP/IP、PPP、Telnel、HTTP),电子邮件协议(POP3、SMTP、IMAP4);提供GPRS、WAP等标准协议栈;具有蓝牙协议模块,增强了与其他设备的互连性;可以通过电缆或红外与PC机相连,进行数据同步和备份。

*参考模型的硬件配置充分考虑了无线信息设备的未来需求。采用ARM系列RISC处理器,具有较强的处理能力。利用ROM进行永久程序存储,并可通过外加快闪存储卡来扩展系统存储量。支持高分辨率彩色显示、触摸屏和笔输入,具有多媒体功能。

二、EPOC系统结构

EPOC操作系统采用模块化分层结构,其系统由许多模块组成。不同模块完成不同的功能,大的模块又分为几个组件。这种模块在保证整体结构紧凑的基础上,减弱了不同软件模块之间的依赖性,使得系统易于扩充。

EPOC系统有4个最主要的组成部分,如图2所示。

1.内核

内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。内核还包括硬件设备驱动,负责最基本的操作系统功能,包括电源管理、内存管理、进程管理和必需的文件管理。内核通过底层函数库为执行在用户级的应用程序提供服务。由于采用ARM系列RISC处理器,EPOC利用二级页表机制进行寻址,为每个应用程序提供虚拟地址空间,以加快上下文切换速度。抢先式多任务机制允许多个自己的线程,同一进程中的多个线程能共享内存资源。系统调试时高优先级进程比优先级进程先得到CPU资源,相同优先级的进程按时间片轮转法分享CPU资源。

2.应用程序

应用程序可以直接和用户进行交互。每个应用程序是单独的进程,拥有自己的虚拟地址空间。

3.管理程序

EPOC系统采用客户/服务器形式来简化并获得高效的进程间通信。管理程序是不直接与用户交互的程序。它管理一个或多个系统资源,执行服务器的功能,通过API函数为客户提供服务。其客户可以是应用程序或其他的管理器。

文件管理器、窗口管理器和通信管理器是EPOC系统中最主要的管理程序。文件管理器负责文件处理,窗口管理器是EPOC高效率事件处理机制的核心,通信管理器提供了对多种通信协议的支持。在EPOC系统中,每个应用程序和管理程序都是独立的事件处理线程。窗口管理器负责提供用户、用户程序和操作系统内核间的事件传递。按键、笔等输入事件先传给窗口管理器,由它将事件发送给应用程序。应用程序完成相应的事件处理后,通知窗口管理器,并由窗口管理器负责处理应用程序的屏幕重画请求。事件处理过程如图3所示。通信管理器分为串行通信管理器、管道管理器和电话应用管理器三个部分。串行通信器提供串行通信的支持;管道管理器利用的管理机制支持TCP/IP、短信息数据包、红外数据接口;电话应用管理器提供与GSM电话及调制解调器相关的接口功能。

4.引擎

引擎是应用程序的一部分,负责应用程序数据的后台处理,而不与用户直接交互。EPOC操作系统中的程序均可分为应用程序和引擎两部分。引擎可以是单独的源文件模块、独立的动态链接库(DLL)或多个动态链接库。操作系统提供了一些常用的引擎,用户可以针对特殊的需要开发专用引擎。

三、EPOC应用程序开发

EPOC支持多种编程语言,为开发者提供了充分的选择空间,其中C++和Java应用得最为广泛。EPOC开发工具套件中提供了集成有EPOC内核的模拟器,可运行在Win9x和WinNT上,并通过调用Windows系统的设备驱动程序,对EPOC的目标机硬件进行仿真,实现EPOC程序的模拟运行。EPOC应用程序开发的大致过程如图4所示[2].先利用Visual C++编译器将EPOC源程序编译成x86的可执行代码,采用模拟器在PC机上进行调试;而后经GNUC++把源程序重新编译成目标机的可执行代码,并拷贝到EPOC设备上,进行实现测试。模拟器的采用使得在目标机硬件不具备时就可进行高层软件的开发,因此加快了程序开发的进程,节省了开发时间。应用程序在模拟调试后,一般都能在目标机上正常运行;但是模拟器不能模拟真正目标机的硬件时序,因此,不适合用模拟方法开发需要严格时序逻辑的程序,也不支持多个任务的同时调试。

由于EPOC操作系统本身是由C++编写的,因此,用C++去开发应用可以获得操作系统最充分的支持,使应用软件更加灵活。EPOC C++编程分为两种;E32编程和Uikon编程。前者采用较为传统的方法进行编程,通过调用系统API函数来完成各种功能,能灵活地实现各种底层操作。因此,系统中的硬件驱动程序以及后台应用程序一般采用此类编程。Uikon是一套完整的应用程序框架,主要用于开基于图形用户界面的应用程序。该框架一般由应用程序(application)、应用程序界面(AppUI)、文档(document)、视图(view)四个类构成。EPOC具有完善的类继承体体系,提供了丰富的类库,可以方便快捷地创建应用程序。

鉴于无线信息设备的特殊性,EPOC编程具有一些独到之处,形成了自己的规范。

首先,提供了与内存分配相关的出错处理机制。如果应用程序有一系列内存申请的连续操作,其中任何一些出现内存分配失败,都需要在出错处理程序中释放所有在这些之前已成功分配的内存,以确保系统内存的正确回收。因此,编程为员在开发出错处理程序时,要充分考虑应用程序中的内存使用状况,防止内存泄漏的发生。为了更有效地管理内存的分配和回收,简化编程工作,EPOC提供了Eleave标识和Cleanup栈。从堆中分配指针的,以Eleave作为指针标识,指针分配成功后将其压入Cleanup栈。如果此指针指向的对象在程序后续处理中出现申请内存的失败,系统会自动释放栈中指针指向的所有内存,并在程序调用PopAndDestroy函数时删除此指针,保证内存的有效回收。

其次,类的两步构造。标准的C++构造函数是在类的对象实例创建时自动调用的,因此,不可靠将其中申请的指针入入Cleanup栈中。如果类创建失败,在构造函数中分配的内存也就无法被操作系统回收。由于无线信息设备是常年连续运行而不重新启动的,因此内存的泄漏会不断积累,最终导致严重的后果。为解决这一问题,EPOC提出类的创建分两步进行:第一步是按照C++本身的特性自动运行构造函数,但是在构造函数中,不进行从堆中申请内存的操作;第二步是调用含有内存请求的类创建函数ConstructL,在ConstructL中采用EPOC的内存分配出错处理机制。这样的设计可以增强系统的稳定性。

最后,采用资源定义文件。EPOC将系统及应用程序菜单、按钮、对话框等的定义放在资源定义文件中。这样做有两个好处:第一,开发过程中如果只改变菜单等的显示字符串,而不修改资源文件的结构,系统无需进行重新编译,若省时间;第二,有利于本地化。EPOC支持Unicode,在进行本地化时无需在源程序中搜索并修改显示字符串,而只需翻译资源定义文件即可。这样不仅简化了本地化的工作量,而且可以避免修改源程序时可以造成的其他部分代码的无意破坏。

结束语

以上从系统构成及应用程序设计开发角度介绍了EPOC操作系统,说明它具有高效的内核处理机制、高度的可靠性、灵活的程序开发方法、丰富的通信协议支持,充分满足了无线信号设备的特定要求。随着无线通信从第2代向2.5代的过渡,以及第3代移动通信的最终实现,无线信息设备必将拥有广阔的市场前景。EPOC作为为其量身定制的操作系统也一定会得到广泛的应用。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭