如何在Linux中添加其他帧缓冲设备?


15

我正在运行Ubuntu 12.04 LTS作为家庭NAS服务器,而没有使用X。最近,我开始对其进行调整,使其也可以用作视频播放媒体设备。此时安装X可能更容易,但是我决定尝试使用具有帧缓冲播放功能的mplayer。它奏效了,一切都很好。

但是,出于好奇和可能的实际后果,我也不能停止考虑帧缓冲区。似乎只有一个帧缓冲设备/dev/fb0。(顺便说一句,我正在使用vesafs驱动程序)如果运行多个使用帧缓冲区的程序,则会出现混乱。例如,从fbterm运行mplayer只会使其崩溃。奇怪的是,fbi图像查看器设法以某种方式查看图像。显然,程序无法共享设备,毕竟没有窗口系统。

那么(vesa)fb设备的数量是否仅限于硬件显示设备?还是原则上可以有更多,例如有多个tty?是否会添加更多帮助同时运行使用它们的软件?我如何添加更多?

同样,帧缓冲如何连接到tty的逻辑对我来说也不是很清楚...例如,mplayer在每个tty上显示它是视频帧,但fbi却不。此外,Ubuntu默认控制台(fbcon?)显示在视频叠加层的后面,这让我感到奇怪。这是怎么回事?

Answers:


18

由于没有人回答,并且经过数小时的谷歌搜索和测试,我对这个主题有了一定的了解,我将回答它。

由于帧缓冲设备接口是一种非常通用的接口,因此原则上可以有更多的fb设备。但是,由于我使用的VESA驱动程序提供了某种硬件设备和帧缓冲设备文件之间的直接连接,因此,拥有比真正的设备更多的设备是没有意义的。

有一个用于虚拟帧缓冲设备的驱动程序vfb。(注意:与xvfb不同,xvfb是X的虚拟帧缓冲区)我自己尚未对此进行测试,但是可以使用虚拟设备的人可以拥有尽可能多的fb设备。我也认为原则上没有什么可以阻止将虚拟设备通过管道传输到硬件帧缓冲设备,从而允许构建帧缓冲多路复用器

关于帧缓冲区和tty之间的连接:没有。帧缓冲区只是被绘制到屏幕上,而无视任何内容。

最初让我感到困惑的是fbi图像查看器的行为。事实证明,它巧妙地检查了正在运行的tty是否打开,并据此绘制到帧缓冲区。(这就是为什么它不像mplayer一样拒绝通过SSH运行的原因-它不接受伪终端。)但是类似于多路复用器的功能与帧缓冲区本身无关。

如果有多个进程写入帧缓冲区,则它们不会相互阻塞。事实证明,我先前同时使用多个fb程序的问题(崩溃等)根本与帧缓冲区无关。使用fbterm终端并从中运行mplayer:没问题。fbterm和fbcon终端以及fbi图像查看器仅在更新某些内容时才会绘制缓冲,因此mplayer实际上在100%的时间里控制着屏幕。但是,如果您尝试运行两个mplayer,则将闪烁显示一个和另一个的帧的视图,因为它们试图绘制具有竞争条件的缓冲区。

一些有用的链接:

http://moi.vonos.net/linux/framebuffer-drivers/

https://www.kernel.org/doc/Documentation/fb/framebuffer.txt


如果您有一个小的LCD第二显示屏作为辅助显示屏(例如320x240像素,3英寸),则使用fb1是可行的。我有一个小小的Adafruit adafruit.com/product/1601,一个使用(仅)fb1。他们的软件是开源的,但他们的OS映像试图以320x240的GUI运行Linux,但失败了。作为第二台设备,可能还可以,我已经有两年没使用过了。见男人mknod。
艾伦·科里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.