Linux Framebuffer 实验
Contents
一、准备
- linux虚拟机或ARM开发板
- Ubuntu18.04
二、Framebuffer介绍
次笔记主要的目的是实验,所以我不介绍了,有需要的小伙伴可以去看下面博客 Linux LCD Frambuffer 基础介绍和使用:https://blog.51cto.com/u_13064014/5079683 Linux应用开发【第一章】Framebuffer应用开发:https://zhuanlan.zhihu.com/p/443120506 Linux Framebuffer 技术:https://zhuanlan.zhihu.com/p/496623603 为了能直观的看明白 Framebuffer 的原理,所以我从他们博客中引用了几张图片,如下所示:
1. LCD 显示原理

2. Framebuffer架构

从上面图中很容易看明白Framebuffer是怎么回事,接下来我们进行测试,分别在ubuntu和ARM开发板上进行测试。
三、Framebuffer 测试命令
为了方便测试 Framebuffer 可用,可以快速通过命令进行简单测试,如下所示:
1. 清屏命令
|
|
2. 截屏命令
|
|
注意:这里的截屏其实就是拷贝 中的数据,所以只有当framebuffer中有数据存在时才能截屏成功
3. 将保存的信息显示传回framebuffer
|
|
4. 往屏幕的左上角画一个白色的像素点
|
|
5. 花屏指令
|
|
四、Framebuffer 测试程序
fb_test_app.c文件
|
|
makefile 文件
|
|
五、ubuntu测试
1. 驱动查看
测试之前先查看自己的虚拟机是否开启了Framebuffer驱动,在设备中可以看到 fbx的驱动,并且主设备号为29
|
|
2. 关闭图形显示
因为在虚拟机中,不关闭图形显示会看不到现象,也有可能信息会被其他显示模块覆盖
|
|
3. 运行测试程序
|
|
注意:如果出现错误Error : can not open framebuffer device 时,切换到root用户执行即可
4. 测试结果
注意:这里显示的图像会把命令窗口给覆盖,所以看不到运行时打印的信息
六、ARM开发板测试
从图中可以看出执行后打印的信息,到此我们测试就算完成了,说明LCD的驱动是没问题的,可以进行GUI的开发。
注意:如果LCD的屏是RGB8888格式的,那么可能出现黑屏不显示的现象,这是需要适当调整一下数据格式,如下图所示:

参考链接
- Linux LCD Frambuffer 基础介绍和使用:https://blog.51cto.com/u_13064014/5079683
- Linux应用开发【第一章】Framebuffer应用开发:https://zhuanlan.zhihu.com/p/443120506
- Linux Framebuffer 技术:https://zhuanlan.zhihu.com/p/496623603
Author 软件开发大郭
LastMod 2022-09-30