本文首先概述了 Linux 图形领域的基本设施,然后描述了一些可供嵌入式 Linux 系统使用的高级图形库以及图形用户界面支持系统。希望对嵌入式 Linux 系统的开发有所帮助。

1 Linux 图形领域的基础设施

本小节首先向读者描述 Linux 图形领域中常见的基础设施。之所以称为基础设施,是因为这些系统(或者函数库),一般作为其他高级图形或者图形应用程序的基本函数库。这些系统(或者函数库)包括:X Window、SVGALib、FrameBuffer 等等。

1.1 X Window

提 起 Linux 上的图形,许多人首先想到的是 X Window。这一系统是目前类 UNIX 系统中处于控制地位的桌面图形系统。无疑,X Window 作为一个图形环境是成功的,它上面运行着包括 CAD建模工具和办公套件在内的大量应用程序。但必须看到的是,由于 X Window 在体系接口上的原因,限制了其对游戏、多媒体的支持能力。用户在 X Window 上运行 VCD 播放器,或者运行一些大型的三维游戏时,经常会发现同样的硬件配置,却不能获得和 Windows 操作系统一样的图形效果――即使使用了加速的 X Server,其效果也不能令人满意。另外,大型的应用程序(比如 Mozilla 浏览器)在 X Window 上运行时的响应能力,也相当不能令人满意。当然,这里有 Linux 内核在进程调度上的问题,也有 X Window 的原因。

X Window 为了满足对游戏、多媒体等应用对图形加速能力的要求,提供了 DGA(直接图形访问)扩展,通过该扩展,应用程序可以在全屏模式下直接访问显示卡的帧缓冲区,并能够提供对某些加速功能的支持。

1.2 SVGALib

SVGALib 是 Linux 系统中最早出现的非 X 图形支持库。这个库从最初对标准 VGA 兼容芯片的支持开始,一直发展到对老式 SVGA 芯片的支持以及对现今流行的高级视频芯片的支持。它为用户提供了在控制台上进行图形编程的接口,使用户可以在 PC 兼容系统上方便地获得图形支持。但该系统有如下不足:

1)接口杂乱。SVGALib 从最初的 vgalib 发展而来,保留了老系统的许多接口,而这些接口却不能良好地迎合新显示芯片的图形能力。

2)未能较好地隐藏硬件细节。许多操作,不能自动使用显示芯片的加速能力支持。

3)可移植性差。SVGALib 目前只能运行在 x86 平台上,对其他平台的支持能力较差(Alpha 平台除外)。

4)发展缓慢,有被其他图形库取代的可能。SVGALib 作为一个老的图形支持库,目前的应用范围越来越小,尤其在 Linux 内核增加了 FrameBuffer 驱动支持之后,有逐渐被其他图形库替代的迹象。

5) 对应用的支持能力较差。SVAGLib 作为一个图形库,对高级图形功能的支持,比如直线和曲线等等,却不能令人满意。尽管 SVGALib 有许多缺点,但 SVGALib 经常被其他图形库用来初始化特定芯片的显示模式,并获得映射到进程地址空间的线性显示内存首地址(即帧缓冲区),而其他的接口却很少用到。另 外,SVGALib 中所包含的诸如键盘、鼠标和游戏杆的接口,也很少被其他应用程序所使用。

因此,SVGALib 的使用越来越少,笔者也不建议用户使用这个图形库。当然,如果用户的显示卡只支持标准 VGA 模式,则 SVGALib 还是比较好的选择。

1.3 FrameBuffer

FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。这种接口将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读 写操作,而写操作可以立即反应在屏幕上。该驱动程序的设备文件一般是 /dev/fb0、/dev/fb1 等等。比如,假设现在的显示模式是 1024x768-8 位色,则可以通过如下的命令清空屏幕:

$ dd if=/dev/zero of=/dev/fb0 bs=1024 count=768

在 应用程序中,一般通过将 FrameBuffer 设备映射到进程地址空间的方式使用,比如下面的程序就打开 /dev/fb0 设备,并通过 mmap 系统调用进行地址映射,随后用 memset 将屏幕清空(这里假设显示模式是 1024x768-8 位色模式,线性内存模式):

嵌入式linux界面开发,嵌入式Linux系统图形及图形用户界面相关推荐

  1. 解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统

    剖析Linux内核源码数据同步 1.pdflush机制原理 2.超级块同步/inode同步 3.拥塞及强制回写技术 视频讲解如下,点击观看: 解析Linux内核源码中数据同步问题丨C++后端开发丨Li ...

  2. linux界面是什么样,Linux界面是怎样的?入门Linux运维学什么

    Linux是以Linux为内核的操作系统的主要工具语言,也是运维和云计算领域的主要技术. 随着it技术的快速发展,Linux运维岗位呈现了高需求量的状态. 因此,许多人想学习Linux运维技术.那么学 ...

  3. 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开发丨linux后台开发

    红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理) 视频讲解如下: 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开 ...

  4. 全面了解C++后端开发技能树,C++后端开发面试技术点丨C/C++linux服务器开发丨linux后台开发

    C++后端开发技能树,C++后端开发面试技术点 视频讲解如下: 全面了解C++后端开发技能树,C++后端开发面试技术点丨C/C++linux服务器开发丨linux后台开发丨网络编程丨面试经验 C/C+ ...

  5. 详解5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶丨Linux服务器开发丨Linux后端开发

    5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶 1. 进程调度CFS的红黑树场景 2. 虚拟内存管理的红黑树场景 3. 共享内存slab的红黑树场景 视频讲解如下,点击观看: [干 ...

  6. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案

    描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...

  7. 智能家居实训第一天 嵌入式介绍 需求分析 开发环境 Linux基础知识

    ===========嵌入式===================== 走向:  软件  人机交互         内核  系统         硬件  单片机 C语言:51单片机   写代码---- ...

  8. rtos与linux软件开发,实时Linux和RTOS的基本特性及技术进行比较

    描述 体系结构异同 对实时操作系统(RTOS)特性进行比较和分析.对于我们刚接触这个操作系统时一定要对他们要有一定的了解,我们先对实时操作系统来了解下,它就是指当外界事件或数据产生时,能够接受并以足够 ...

  9. linux c 开发数据,Linux c 开发

    关于Autotools 我们前面的章节中已经讲到了Makefile的使用(点击进入查看文章).我们知道在Linux下面如果编译一个比较大型的项目,我们可以通过Makefile的方式来完成. 但是,我们 ...

最新文章

  1. Go 分布式学习利器(10)-- Go语言的接口
  2. lucene introduction
  3. 条件独立(conditional independence) 结合贝叶斯网络(Bayesian network) 概率有向图 (PRML8.2总结)...
  4. PADS Router VX.2.3 设置光标的类型
  5. 开课吧python学费-分享一个小白也能月赚2万的新技能
  6. chrome插件下载
  7. 2016-09-09
  8. Java ClassLoader setPackageAssertionStatus()方法与示例
  9. C++安全方向(三):3.6 SHA2原理分析和比特币挖矿,以及代码演示
  10. MySQL总结4_多表查询
  11. NETAPP存储常用巡检命令
  12. js实现音乐列表循环播放或单曲循环
  13. 【营销学堂】从饥饿营销到口碑营销
  14. Python自动化办公练习——合并工作簿
  15. python爬虫练习--爬上海法院开庭公告信息
  16. Python效率之王之多进程和多线程详解
  17. 模拟股票、基金账户交易周志与心得(11月1日至11月12日)
  18. 23位子网掩码是多少_子网掩码23位的是多少
  19. 骗子、假先知们一夜暴富背后:区块链是回归互联网本来意义的唯一希望 | 深度
  20. 罗克韦尔AB PLC RSLogix5000中的位指令使用方法介绍

热门文章

  1. 今日学习在线编程题:弓形弧长
  2. PHP time() 函数
  3. 二建各科2015-2018四年真题解析
  4. 关于小程序中过滤关键词,敏感词 ,敏感词过滤
  5. 事业单位计算机类综合知识,天津事业单位“综合知识【文字综合类、财会类、计算机类】”简介...
  6. 【方法随记】U盘格式那些事
  7. 27枚硬币,找出较重的一个-Python
  8. 电脑上打字符,间距变大怎么办
  9. 喜欢的歌曲不在一个平台怎么办?你需要一个自己专属的音乐播放器
  10. 成人高起本学历有用吗?几年拿毕业证?