作者:Nick
开始前的几点说明:
本文会尽量从初学者的角度去描述整个Linux整个图形子系统,但由于其复杂性,涉及到的模块比较多,可能会需要一些相关的先验知识;
对于系统的介绍,分析的着重点可能不会在于为什么该这样设计,而是在于在现有的显示系统下,我们能做些什么来适配我们的目的;
1.前言
以Linux下的原生GUI子系统为例,概述GUI子系统的概念,软硬件部分在GUI子系统的中的角色及大致构成;
着重分析Linux下DRM+KMS的软件实现方式,并且以Xilinx的Zynq-7000 SOPC为例,详细介绍相关片内硬件模块在GUI系统中的角色及实现方式;(由于GPU模块硬件的源码的开源程度不高,不在本文的分析范围内)
分析现有GUI框架下,在硬件加速方面,我们能做的事情,并以非常简单的图像处理为例,给出相应的设计方案;
本文的最后一部分,会在Zynq-7000上面(digilent的Zybo开发板)部署整个Linux+硬件边缘提取处理+Qt+HDMI的环境,并给出具体的实现流程;
2.Linux GUI子系统概述
GUI作为人机交互的一种方式,通过其承载的大量信息提高了信息交流的效率。这里我们不介绍鼠标、键盘等输入设备,只介绍输出显示这一子模块。生活中大家最常见的图形化界面估计就是图像化界面的桌面环境,即窗口系统,(如下图的Ubuntu、Xfce等)。