微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 无线信息设计在通用操作系统EPOC的应用

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

时间:01-06 来源:互联网 点击:

说,内核并不是计算机系统中必要的组成部分。内核还包括硬件设备驱动,负责最基本的操作系统功能,包括电源管理、内存管理、进程管理和必需的文件管理。内核通过底层函数库为执行在用户级的应用程序提供服务。由于采用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栈。如果此指针指向的对象在程序后续处理中出现申请内存的失败,系统会自动释放栈中指针指向

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top