Symbian OS Internals——设备驱动、扩展、EUSER、文件服务器、窗口服务器和软件分层

来源:互联网 发布:如何查看淘宝消费总额 编辑:程序博客网 时间:2024/06/07 10:08

1.3.2.7设备驱动

Symbian OS上,你使用设备驱动控制外设:驱动提供这些外设和Symbian OS其余部分之间的接口。只要愿意,你也可以采用跟分离ASSP和变量相似的方式分离设备驱动,即提供与硬件无关的逻辑设备驱动,和与硬件有关的物理驱动,或者PDD(物理设备驱动器)

设备驱动可能运行在客户端线程或内核线程:我们新的多线程内核设计使得从其他的操作系统往Symbian OS上移植设备驱动变得更加容易。

Symbian为很多类型的外设提供标准LDD(比如多媒体设备、USB控制器和串行通信设备),然而,手机厂商通常为定制硬件开发他们自己的接口。

EKA1EKA2,设备驱动已经发生了相当大的变化。更多的细节,可以看第12章,驱动和扩展。

 

1.3.2.8扩展

扩展不过是内核被引导时自动启动的设备驱动,所以可以把它们看成是扩展内核功能的一种方式。比如,崩溃调试器是一个内核扩展,在你需要的时候可以把它包括进ROM或者在不需要的时候把它从ROM中剔除出去,而且你还不需要重新编译内核。

我上面所讨论过的变量和ASSP是都是重要的扩展,在引导进程的初期,内核就载入它们。在载入它们之后,内核继续引导直到最终启动了规划器并执行到管理者线程,管理者线程初始化其它所有的内核扩展。这些晚期被载入的扩展对内核本身的操作来说并非必不可少,但一般都用于执行硬件组件的早期初始化,并且固定地为LCDDMAI2C和串行总线控制器等设备提供可用的服务。

最后被初始化的内核扩展是EXSTART,它负责载入文件服务器。在第十六章,引导进程,我将讨论系统引导的更多细节。

 

1.3.2.9 EUSER

用户库,即EUSER,为它的客户端提供了三种主要的功能:

1、完整地执行用户端的类库方法,比如字符串和描述符类的大部分方法(描述符是字符串的Symbian OS版本)

2、访问内核函数以请求内核代表用户线程执行特权访问,比如检查时间或者现场设定。

3、访问内核函数以请求内核代表用户线程操纵它自己的内存,比如创建线程或载入一个库。

每个Symbian OS内核都通过EUSER库取得对内核服务的访问。但我们在EKA1EKA2之间维护的一些接口,导致了对应有的作者产生一些障碍。

 

1.3.2.10文件服务器

文件服务器是一个允许用户模式线程操纵驱动器、目录和文件的用户模式服务器。第九章,文件服务器,提供了更多的细节。

 

1.3.2.11窗口服务器

窗口服务器是在所有的Symbian OS应用间共享屏幕、键盘和指示器的用户模式服务器。第十一章窗口服务器,提供了更多的细节。

 

1.3.2.12软件分层

我们也可以从软件分层的观点来看待Symbian OS的体系结构,见图1.2

如果你熟悉EKA1,你会发现EKA2的分层与它有点不同。但是,当我们往下看,从代码在所有平台上共享的大部分通用独立层,到大部分专用可变层——它们的代码为特定开发板(development board)或特定手机上的特定ASIC编写,则它们有更多的相似之处。

我们把它上面的四层叫做“内核层”,下面两层叫做“串行层”。后面的这些形式构成手机厂商在把Symbian OS移植到新硬件时所实现的主板支持包的主要部分。它也组成了引导程序、设备驱动和扩展。

  

1.2 内核分层

 

独立层组成了大约60%的内核源代码。它提供了微内核和Symbian OS内核的基本组成,即——微线程、线程、进程、数据块、客户端/服务器等等。这些基类被更低层的类继承,从而为Symbian OS运行于其上的特定硬件提供实现。

平台层参与可执行映像——Symbian OS是运行在模拟器上还是在真实的硬件上,因此,它也有另一个名字,即映像层。只有内存模型在该层上有代码,它提供了两个实现,即用于硬件设备的EPOC和用于模拟器的WIN32

所有的每进程驻留内存组织管理都在模型层实现,而且,也只有内存模型在这个层次上由代码。内存模型提供了四种不同的实现——MovingMultipleDirectEmulator第七章,内存模型,将深入讨论这四个问题。

根据Symbian OS所运行的处理器,CPU层有不同的代码;这部分属于汇编代码。微内核、内存模型和Symbian OS内核都在这个层上有代码。在写代码的时候,Symbian提供三种可能的CPU层——X86(PC硬件的端口)ARM(手机)Win32(用于模拟器)

内存模型的CPU层有专用CPUMMU的代码以及专用的内存模型代码,这些代码对内存模型的类型也是专用的。微内核的CPU层包含了核心CPU结构的大部分知识——异常和中断怎样被捕获,哪一个寄存器需要被保存到上下文转换环境里等等。Symbian OS内核的CPU层上的一部分代码是独立层机能,它被编成汇编代码以改善性能。

变量层提供了微内核和Symbian OS内核所期望的控制函数的专用硬件实现。就像上面提到的,手机厂商可以在往新硬件移植的时候选择把该层分离到ASSP或者变量里去。

该变量层也提供硬件抽象层函数的专用硬件实现,虽然这些可能在内核或扩展中被同等地实现。

在第五章,内核服务,我将解释每层暴露给其他层的服务。

==================================================================
说明: 本文由Bequan翻译自Symbian Press的Symbian OS Internals: Real-time Kernal Programming一书。任何人需要转载或引用,请先通过Email(a-pangu@163.com或symbianchn@gmail.com)与Bequan联系,在获得许可后方可转载或引用,否则视为侵权行为。转载或引用时,请在文章中注明上述翻译信息。
 
原创粉丝点击