Linux ARM QT FrameBuffer
Framebuffer
在Linux系统中,Framebuffer(帧缓冲区)是用于存储显示内容的一块内存区域。Framebuffer(帧缓冲区)的主要作用是提供一个在图形环境下与显示设备(如显示器、LCD屏幕等)进行交互的接口。通过Framebuffer,操作系统可以直接向显示设备输出图像内容,而不需要依赖于复杂的Linux图形子系统(如X11)。对于基于ARM架构的设备,通常会有多个Framebuffer设备,尤其是当设备支持多个显示屏、分辨率或显示输出接口时。
常见的Framebuffer数量
- 单显示屏设备:通常只有一个Framebuffer设备,比如
/dev/fb0
。 - 多显示屏设备:如果设备有多个显示输出,可能会有多个Framebuffer设备,比如
/dev/fb0
、/dev/fb1
等。
QT
桌面版本的 Linux 都会带有类似 xorg 这样的图形服务,桌面程序和应用程序的 UI 都是通过图形服务渲染的。但是有些系统为了减少系统体积、提升性能,会把图像服务和没有用到的模块裁剪掉,如:嵌入式系统。
没有图形服务程序就不能直接渲染显示 UI,这时候我们可以使用 Framebuffer 进行渲染。
Framebuffer 也叫帧缓冲,它相当于屏幕的显示内容缓存,修改 Framebuffer 的内容,屏幕显示的内容也会同步修改。
Qt 支持 Framebuffer 显示,在编译 Qt 环境的时候,configure 加上启用 Framebuffer 的参数
QT在Linux中支持多种显示插件,包括EGLFS、LinuxFB、DirectFB、Wayland等。可以通过--platfrom选项指定选择何种插件。
运行 Qt 程序的时候指定 Framebuffer 设备
sudo ./app -platform linuxfb:fb=/dev/fb0