DirectFB自述

news/2024/11/17 5:23:25/
这是一篇面向DirectFB开发者的文档 。
DirectFB初衷是为嵌入式系统而设计的图形库,以最低限度的资源使用和开销,提供最大的硬件加速度性能。


目前支持的操作系统
*****************************************************************
-GUN/LINUX
应用SDL,以下系统同样支持,但没有硬件加速功能。
- FreeBSD (FreeBSD 5.2,DirectFB 0.9.21 )
- NetBSD   (NetBSD 1.6)
- OpenBSD (OpenBSD 3.2)
如果在进行过程中,发生问题,请试运行./configure --disable-mmx解决
必须注意SDL目前还没有进行完全测试,旨在让开发者可以在各种环境中开发DirectFB应该程序。

正进行尝试系统本身支持DirectFB有以下:
-Mac OS X (Mac OS X 10.3.5)

我们没有足够的资源确保每次发行的DirectFB都可以行很好地运行在受支持平台上,所以如果您是以上列出系统平台的使用者,
并有时间定时测试cvs版本,那么您的帮助是我们极大鼓励。

编译条件
-------------------------------------------------------------------------
-LINUX 内核2.2以上,并运行帧缓冲(FrameBuffer),可以查看proc/fb确认帧缓冲(FrameBuffer)是否运行。
-SDL系统(可选)
- freetype (version >= 2.0.1)
- libjpeg62
- libpng2 or libpng3
- zlib

多应用程序核同样需要,更详细请参考《运行多个DirectFB程序》

图象和字体功能可以不进行编译,但强烈建议不要这样做,因为代码例子
很多与及其他directfb应用依赖于这些功能的提供。
libmpeg3 video 功能依赖于libmpeg3 库,但一般并不默认安装,在我们的网站上提供了这个库的下载
http://www.directfb.org/download/contrib/

过去移植到 DirectFB的avifile和flash 视频功能已经被移植到扩展包中。
我们建议安装pkg-config,可以从 http://www.freedesktop.org/software/pkgconfig/取得,它将辅助您编译基于
DirectFB的程序

运行(应用)条件
-------------------------------------------------------------------------
取决于您运行的DirectFB程序,可能需要以下一些或者所有条件。
-FrameBuffer驱动设备,可以使用命令 'fbset -i'检测是否正确运行.
-键盘,如果需要工作中控制台中。
-PS/2,串口鼠标可以很好支持,USB或是ADB的鼠标通过模拟PS/2,一样可以正常使用。

运行单个程序核时,总是需要访问 /dev/tty0,/dev/fb0 和鼠标(/dev/psaux, /dev/mouse)。
可以选择ROOT用户或是对这些资源有访问权限用户运行所有的DirectFB程序。一个可行的方法论是,增加到一个
用户到tty或其他相同的组中,并允许这个组可以对以下设备有读写功能:
   crw-rw---- 1 root     tty    29, 0   /dev/fb0
   crw-rw---- 1 root     tty    10, 1   /dev/psaux
   crw-r----- 1 root     tty        4, 0   /dev/tty0
如果运行多程序核,只有主程序需要访问这一些设备资源,另外一些辅进程只需要访问 /dev/fb0,与

   crw-rw---- 1 root     fusion 29, 0   /dev/fusion/0
   
注意主进程创建一个'/dev/shm/fusion.0'共享文件,可以被任何匹配的用户或组进行读写。

一些DirectFB的应用例子有以下额外的需求条件
    df_video需要支持video4linux的显卡
    df_joystick需要游戏杆

同时运行多个DirectFB 程序
-------------------------------------------------------
DirectFB默认运行的是单程序核,但可以进行配置多程序核,在一个会话中运行多个DirectFB程序。
DirectFB程序间的通信通过一个称呼为联合层,这联合层以前实行了,完全在用户空间使用
信号量和消息队列。0.9.15 版本后联合内核要求完成临界区功能,这样联合层的功能更加强大与稳定。
目前只有在LINUX中可以得到支持,需要安装这个模块,可以从CVS版本中签出或在此发行版中PATCHES目录中找到。注意您不需要
把从CVS版本库中签出的联合层在内核中打补丁。
编译允许多程序核的DirectFB
    ./configure --enable-multi
确认您的LINUX系统内核中支持TMPFS,在内核的源代码Documentation/filesystems/tmpfs.txt文档中有说明
挂载/dev/shm文件系统
    mount tmpfs /dev/shm -ttmpfs

tmpfs项是一个可选的指定名,可以指定其他名称,参考directfbrc(5)。但所以程序必须指定同样的名称。

一个测试多程序核的方法是:安装lite工具包与DFBTerm,这是一个DirectFB终端,都可以从DirectFB 的CVS版本库中取得。
可以从dfbterm中运行DirectFB程序

建议
---------------
为充分利用硬件加速功能,迈拓(matrox)的g200/g400/g450/g550显卡推荐在这个发行版directfb 。
ati128 ,Voodoo3/4/5/banshee ,NeoMagic 和 S3的显卡 在这个发行版本中都有很大改进,但只支持部分可行的加速功能。

安装
------------

1) In the DirectFB directory type:
在DirectFB包目录下,运行以下命令
./configure
make
make install (as superuser)
运行'./configure --help'要以获得者更多的可用选项
重要选项包括:
       --enable-multi 允许多程序核
       --enable-debug 允许调试信息与断言
       --enable-trace 允许运行时堆栈跟踪
   调试与堆栈跟踪将产生影响,会导致某一些功能领域功能下降,例如显示文字。
   You may use the options "no-debug" and "no-trace" by default, e.g.
   in '/etc/directfbrc', and use "--dfb:debug,trace" on the command
   line if needed.
   在'/etc/directfbrc'默认使用"no-debug" and "no-trace"选项,关闭调试与堆栈跟踪功能。
   在需要时可以在命令行中使用--dfb:debug,trace恢复。
2 )确保/etc/ld.so.conf中加入"/lib"
   默认是"/ usr/lib" 。加上后,必须
   运行' ldconfig '。
   同样,可以在加在环境变量LD_LIBRARY_PATH 中。临时切换到另一个安装版本,这是一个很有效的方法。
3) You might want to copy fb.modes to /etc or merge it with your
   existing /etc/fb.modes file. The first entry will be used by
   default - copy other entries you may need.

4)如果需要使用串口鼠标,创建一个名称为/dev/mous文件链接指向串口号设备(例如 /dev/ttyS0)
然后在/etc/directfbrc 或 ~/.directfbrc中增加一行:"mouse-protocol=[ms|ms3|mouseman|mousesystems]"
描述所用鼠标的接口(协议)

5)如果进行交叉编译,同时已经安装了依懒库,确保那一些库一定要在'PATH'环境变量最前面增加bin目录
例如,如果使用的配置是:--prefix=/dfb/usr/local
那么,在要编译与安装时,确定要export PATH=/dfb/usr/local/bin PATH

配置 DirectFB
--------------------

有比较多东西,可以配置。可以使用默认值,跳过配置,但你可能要设置的一些好东西。有
几种方式做到这一点。你可以编辑系统配置/etc/directfbrc或$HOME/.directfbrc文件。有一个称为 directfbrc(5)
手册中说明了所有设定项。该手册还介绍了如何通过命令行配置directfb运行。

配置 Linux 帧缓冲(frame buffer)设备
-----------------------------------------
DirectFB需要Linux内核支持帧缓冲(frame buffer),查看内核文档(/usr/src/linux/Documentation/fb/)
了解如果启动你的显卡的帧缓冲(frame buffer)驱动。
一般VESA的帧缓冲(frame buffer)驱动不支持模式切换,这样发挥不了硬件的加速功能。
要使DirectFB用运行在veasfb上,要在/etc/lilo.conf增加到以下几行:
   append="video=vesa:ywrap,mtrr"
#'ywrap'允许圈画功能.
#'mtrr' 允许为帧缓冲(frame buffer)设置缓冲功能进行write-combining

    vga=791
   #设置系统启动时的模式。791代表1024x768@16, 788 代表 800x600@16.

以下是 VESA的所有显示模式
位 640x480 800x600 1024x768 1280x1024 1600x1200
8    769     771     773    775    796
16    785     788     791    794    798
32    786     789     792    795    799
有一些帧缓冲(frame buffer)驱动支持模式转换.DirectFB支持在/etc/fb.modes文件列出的模式,默认是第一个找到入口
被使用。

如果拥有matrox显卡,可能想尝试 补丁目录下的vsync进行修补
   ,让应用为垂直仿造。"闲置等待" 。
  
  
使用内置"窗口管理系统"
----------------------------------

directfb缺乏一个真正的窗口管理系统,我们增加了一个窗口栈架构允许基本窗口管理。当处理按键或加速键时,
可以按以下方式进行操作:
如下:
    -移动改变选择焦点窗口
    -拖拉改变焦点窗口的大小
    -拖拉改变焦点窗口的透明度
    -按C关闭焦点窗口
    -按A降低焦点窗口到底部
    -按X窗口循环取得焦点
    -按S提升焦点窗口到顶部
    -按P允许显示鼠标光标
    -按Escape退出全屏,返回桌面。
   (如果全屏程序还在刷新中,目前这种方法行不通)
如果你没有键盘,需要使用 "capslock-meta"选项(参考 directfbrc(5))

文档
-------------
这个版本完整的HTML格式API手册,位于docs目录中,API手册可当作概念来浏览。登陆 http://www.directfb.org/documentation/
在线浏览教程和FAQ 文档。

http://www.ppmy.cn/news/502227.html

相关文章

linux远程服务器环境_如何使用Linux为孩子设置远程学校环境

linux远程服务器环境 COVID-19突然使我们所有人陷入了新的挑战性局面。 我们中的许多人现在都在家工作,而对于我们中的许多人(尤其是那些不习惯远程工作的人),这已经有些习惯了。 另一个同样受到挑战的群体是我们的孩子。 他们不…

[元带你学: eMMC协议详解 15] eMMC 安全方案之写保护(Write Protect)详解

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 1300字, 主要讲述 1、什么是写保护? 2、什么是上电写保护、永久写保护、临时写保护?他们有什么区别? 3、写保护相关寄存器/命令 4、特定区段写保护和整卡写…

【Hive实战】Hive治理方向探讨(请留意见)

Hive治理方向探讨 文章目录 Hive治理方向探讨Hive治理项治理临时性质的表控制分区表的分区数量和分区层级限制建表时使用的存储格式表或分区记录的location对应的HDFS路径实际不存在表级路径应是分区路径的前缀内部表使用非内部表路径外部表使用内部表路径表的属性个数异常按时…

[年中总结]真正的精彩都在海里

时间过得可真的是快啊,一眨眼就是六月底了 这半年的经历也是挺多彩 二月底的时候,跟老大提出了离职申请,经过 老大/hr/部门 leader 的谈话之后,依然决定离职 四月底拿到离职证明之后,就出去玩了一圈,六月份刚回来,哈哈哈哈 我不知道有没有人和我一样,非常在意能不能在一份工作…

企业微信 创建应用后如何构造网页授权 获取token 获取用户信息

第一次对接企业微信,上网找了各种方案。 目的是在企业微信中,公司发给员工一个地址,员工点开后打开画面,在这个画面上可以获取到这个员工的userid(后续功能操作就是各自不同的功能了哈,就不详细说了&#…

python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(下篇)

目录 一、前言二、基于轨迹与路面重心偏离度误差的预测自动差速小车循迹控制策略三、轨迹图像的处理要点四、本篇部分核心控制策略python代码:五、结论 一、前言 基于最近的测试,得到了一种粗略控制的算法,其控制效果适合单线路和急转弯的情…

【PTA】【C语言】母牛生小牛-递归

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?递归实现。 函数接口定义: int Cow(int n);该函数返回第n年牛的总数量&#xff…

递归案例 ---- 母牛生小牛

项目场景: 提示:这里简述项目相关背景: // 有一头小母牛。从第四年起每年生一头小母牛。 // 生的小母牛也是从第四年起每年生一头小母牛。 // 如此循环。编程求N年后有多少头母牛。。。。。。。 /* * 思路:递归套娃 * Year coun…