Android图形系统的分析与移植--二、Android显示系统软件架构分析

Android系统软件架构图如图1所示:


图1  Android系统软件架构图

        其中蓝色部分和显示相关。同时在Surface Manager所在的核心服务层和Display Driver所在的操作系统内核层中间还存在着一层硬件抽象层,里面包含gralloc、overlay等和显示相关的抽象层硬件模块。

下面简单介绍一下上图中的各个层:

上面两层为用户空间应用程序,属于应用程序层,其中包括Android应用程序以及框架和系统运行库,和底层相关的是系统运行库,而其中和显示相关的就是Android的Surface Manager,它负责对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

第三层为HAL层,是与Kernel内核空间交互的部分。HAL其实就是用户空间的驱动程序,如果想要将Android在谋硬件平台上执行,基本上完成这些驱动就行了,其内定义了Android对个硬件装置例如显示芯片、声音、数字相机、GPS、GSM等等的需求。

操作系统内核层中和显示部分相关的就是Linux的FrameBuffer,它是Linux系统中的显示部分驱动程序接口。Linux工作在保护模式下,User空间的应用程序无法直接调用显卡的驱动程序来直接画屏,FrameBuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由 Framebuffer设备驱动来完成的。

最底层为硬件驱动层,可以看做是硬件显卡的驱动程序,和显示部分硬件相关以及外围LCD相关的驱动都被定义在这边,比如上述的显卡的一些特性都是在这边被初始化的。




你可能感兴趣的:(Android图形系统的分析与移植--二、Android显示系统软件架构分析)