码迷,mamicode.com
首页 > 系统相关 > 详细

Linux framebuffer的介绍和使用

时间:2016-05-10 02:04:58      阅读:447      评论:0      收藏:0      [点我收藏+]

标签:

1. 介绍

Linux下的framebuffer是用于在显示器上显示图像的硬件无关抽象层, 意味着包含当前视频帧的一块内存区域

Framebuffer看成是显示内存的一个映像, 将其映射到进程地址空间之后, 可以直接进行读写操作, 写操作可以立即反应在屏幕上, 这种操作是抽象统一的, 用户态进程不必关心物理显存的位置、换页机制等等具体细节(由Framebuffer设备驱动来完成)

2. Framebuffer的使用

Framebuffer对应的设备文件一般是/dev/fb0、/dev/fb1等

2.1 相关结构体

Framebuffer使用前需要了解两个结构体
fb_var_screeninfo: 显卡的显示属性, 如屏幕分辨率、每个像素点的比特数, 用户可修改
fb_fix_screeninfo:  显卡的硬件属性, 用户不可修改, 驱动程序初始化时设置

2.2 使用方法

一般的步骤如下:
- 打开framebuffer设备(/dev/fbX)
- 通过ioctl FBIOGET_VSCREENINFO命令获取当前fb_var_screeninfo信息
- 设置需要修改的fb_var_screeninfo参数, 并通过ioctl FBIOPUT_VSCREENINFO设置这些信息(可选)
- 设置global alpha和blank/unblank参数, 通过用于多个fb的情况(可选)
- 计算屏幕的总大小(占用字节数): xres * yres * bits_per_pixel / 8
- 映射到用户进程地址空间: mmap
- 往映射的地址空间写入数据
- 删除映射(munmap), 关闭framebuffer设备

2.3 实例

实例

3. Linux中framebuffer驱动的实现

Linux实现framebuffer在文件层的部分, 提供了对用户的接口(部分接口同时需要驱动实现), 同时对驱动提供了注册接口
详细见文件linux/drivers/video/fbmem.c

对驱动提供的注册接口是register_framebuffer(struct fb_info *fb_info)
其中, 参数fb_info描述特定硬件的FrameBuffer驱动信息
主要成员包含fb_var_screeninfo、fb_fix_screeninfo、fb_cmap和fb_ops

Linux framebuffer的介绍和使用

标签:

原文地址:http://www.cnblogs.com/hzl6255/p/5476012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!