7.framebuffer驱动详解

本文详细介绍了Linux Framebuffer(fb)的概念、使用方法以及驱动编程实践,包括Framebuffer的设备文件、获取设备信息、mmap映射和显示操作。同时,文章分析了Framebuffer驱动框架的组成部分,如fbmem_init、register_framebuffer等,并探讨了在应用层无法设置分辨率的问题以及内核启动logo的定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.1.framebuffer介绍
7.1.1、什么是framebuffer

(1)裸机中如何操作LCD
(2)OS下操作LCD的难点
(3)framebuffer帧缓冲(简称fb)是linux内核中虚拟出的一个设备
(4)framebuffer向应用层提供一个统一标准接口的显示设备
(5)从驱动来看,fb是一个典型的字符设备,而且创建了一个类/sys/class/graphics

7.1.2、framebuffer的使用
(1)设备文件 /dev/fb0
(2)获取设备信息 #include <linux/fb.h>
(3)mmap做映射
(4)填充framebuffer

7.2.framebuffer应用编程实践1
7.2.1、打开设备
7.2.2、获取设备信息

(1)不可变信息FSCREENINFO,使用ioctl的FBIOGET_FSCREENINFO名
(2)可变信息VSCREENINFO,使用ioctl的FBIOGET_VSCREENINFO名

7.3.framebuffer应用编程实践2
7.3.1、mmap做映射

做完了mmap后fb在当前进程中就已经就绪了,随时可以去读写LCD显示器了。

7.3.2、fb显示之刷背景

7.4.framebuffer应用编程实践3
7.4.1、设置分辨率

(1)实验失败,实验结果是只能修改虚拟分辨率,不能修改可视分辨率。原因要去驱动里找。
(2)正确的做法是在驱动中去修改参数,然后重新编译运行,才能解决。

7.4.2、写字、画线、图片显示等

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>

// 宏定义
#define FBDEVICE	"/dev/fb0"

// 旧开发板
//#define WIDTH		800	
//#define HEIGHT		480
// 新开发板
#define WIDTH		1024	
#define HEIGHT		600


#define WHITE		0xffffffff			// test ok
#define BLACK		0x00000000
#define RED			0xffff0000
#define GREEN		0xff00ff00			// test ok
#define BLUE		0xff0000ff			


#define GREENP		0x0000ff00			// 一样,说明前
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值