Linux framebuffer的介绍和使用

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

时间: 2024-11-05 06:01:35

Linux framebuffer的介绍和使用的相关文章

Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理【转】

本文转载自:http://blog.csdn.net/liuxd3000/article/details/17464779 一.基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.用户不必关心物理显示缓冲区的具体位置及存放方式,这些都是由帧缓冲设备驱动本身来完成.对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示,下一小

Linux framebuffer显示bmp图片

framebuffer简介     帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.framebuffer是LCD对应的一中HAL(硬件抽象层),提供抽象的,统一的接口操作,用户不必关心硬件层是怎么实施的.这些都是由Framebuffer设备驱动来完成的.     帧缓冲设备对应的设备文件为/dev/fb*,如果系统有多个显示卡,Linux下还可支持多个帧缓冲设备,最多可达32个,分别为/d

Linux Framebuffer驱动框架之二软件架构(未完待续)【转】

本文转载自:http://blog.csdn.net/gqb_driver/article/details/12918547 /************************************************************************************************************************************/ 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb66

Linux Framebuffer编程简介

linux下,framebuffer设备文件名通常是/ dev/fb0,1,2等.控制framebuffer设备的一般步骤如下:1) 打开设备,映射framebuffer2)依照硬件要求,准备好数据3)把数据复制到framebuffer例子程序如下:1)打开设备,映射framebufferstatic void *fbbuf;int openfb(char *devname){    int fd;    fd = open(devname, O_RDWR);    if (ioctl(fd,

linux 防火墙详细介绍

1.其实匹配扩展中,还有需要加-m引用模块的显示扩展,默认是隐含扩展,不要使用 -m状态检测的包过滤-m state       --state {NEW,ESTATBLISHED,INVALID,RELATED}  指定检测那种状态-m multiport 指定多端口号      --sport      --dport      --ports-m iprange 指定IP段      --src-range ip-ip      --dst-range ip-ip-m connlimit

linux 之 yum 介绍 <转>

原文在这里  http://doophp.sinaapp.com/archives/linux/yum-setting-parameter.html 因为是程序员出身,平时虽然经常接触服务器,偶尔也会要装一些软件.配置优化什么的,可能还是个人习惯问题,一般情况下我还是以手工编译居多(这其中的优缺点就不在这里啰嗦了).这几天有同事提出YUM其实更便于日常管理维护,确实,相对于手工编译,服务器多的时候YUM确实要方便不少.今天整理了一下YUM相关的背景知识,东西还不够详细,后续会逐步完善. YUM简

linux的基本介绍和命令行

<linux的基本介绍和命令行> [什么是Shell] (1)简介:shell是一款保护内核的软件.bash是shell的一个版本. 性质:命令解析器 用途:接受用户命令 1)在计算机科学中,shell俗称壳(用来区别核),是指"提供使用者使用界面"的软件(命令解析器).他类似于DOS和后来的cmd.exe.他接收用户命令,然后调用相应的应用程序.同时他又是一种程序设计语言.作为命令语言,他交互式解释和执行用户输入的命令,或者自动地解释和执行预先设定好的一连串命令:作为程序

Linux系统启动过程介绍

Linux系统启动过程介绍 学习操作系统有必要了解一下系统的启动过程,这样在面对各种系统故障的时候能快速定位解决问题,下面以Centos来分析linux系统的启动过程. 1.BIOS自检:当开机的时候,系统进行bios自检工作,当识别出第一块硬盘(IDE SCSI)及其空间之后,系统控制将从BIOS传递到引导装载程序 2.引导装载程序(grub lilo):装载第一块硬盘的前512个字节的物理数据扇区即主引导区MBR到内存中,位于此扇区开始位置的引导装载程序将接管系统控制. (也可以这么理解,在

Linux core 文件介绍

Linux core 文件介绍 http://www.cnblogs.com/dongzhiquan/archive/2012/01/20/2328355.html 1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -a该命令将显示