在Linux中实现FrameBuffer

Framebuffer对应的源文件在linux/drivers/video/目录下。总的抽象设备文件为fbcon.c,在这个目录下还有与各种显卡驱动相关的源文件。

(一)、分析Framebuffer设备驱动

需要特别提出的是在INTEL平台上,老式的VESA1.2卡,如CGA/EGA卡,是不能支持Framebuffer的,因为Framebuffer要求显卡支持线性帧缓冲,即CPU可以访问显缓冲中的每一位, 但是VESA1.2 卡只能允许CPU一次访问64K的地址空间。

FrameBuffer设备驱动基于如下两个文件:

1) linux/include/linux/fb.h

2) linux/drivers/video/fbmem.c 下面分析这两个文件。

1、fb.h

几乎主要的结构都是在这个中文件定义的。这些结构包括:

1)fb_var_screeninfo

这个结构描述了显示卡的特性:

struct fb_var_screeninfo
{
__u32 xres; /* visible resolution */
__u32 yres;
__u32 xres_virtual; /* virtual resolution */
__u32 yres_virtual;
__u32 xoffset; /* offset from virtual to visible resolution */
__u32 yoffset;
__u32 bits_per_pixel; /* guess what */
__u32 grayscale; /* != 0 Gray levels instead of colors */
struct fb_bitfield red; /* bitfield in fb mem if true color, */
struct fb_bitfield green; /* else only length is significant */
struct fb_bitfield blue;
struct fb_bitfield transp; /* transparency */
__u32 nonstd; /* != 0 Non standard pixel format */
__u32 activate; /* see FB_ACTIVATE_* */
__u32 height; /* height of picture in mm */
__u32 width; /* width of picture in mm */
__u32 accel_flags; /* acceleration flags (hints) */
/* Timing: All values in pixclocks, except pixclock (of course) */
__u32 pixclock; /* pixel clock in ps (pico seconds) */
__u32 left_margin; /* time from sync to picture */
__u32 right_margin; /* time from picture to sync */
__u32 upper_margin; /* time from sync to picture */
__u32 lower_margin;
__u32 hsync_len; /* length of horizontal sync */
__u32 vsync_len; /* length of vertical sync */
__u32 sync; /* see FB_SYNC_* */
__u32 vmode; /* see FB_VMODE_* */
__u32 reserved[6]; /* Reserved for future compatibility */
};

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, struct
, framebuffer
, sync
, 32
, framebuffer双缓冲
, framebuffer设置背景
Picture
linux framebuffer、linux的framebuffer、linux qt framebuffer、framebuffer、android framebuffer,以便于您获取更多的相关知识。

时间: 2024-09-27 22:11:47

在Linux中实现FrameBuffer的相关文章

嵌入式Linux中基于framebuffer设备的jpeg格式在本地LCD屏显示

在基于Linux的视频监控采集系统中,摄像头采集到的一帧视频图像数据一般都是经过硬件自动压缩成jpeg格式的,然后再保存到摄像头设备的缓冲区.如果要把采集到的jpeg格式显示在本地LCD屏上,由于我们的Linux系统没有移植任何GUI系统,就要考虑以下方面: 1. 将jpeg格式解压缩为位图格式,也就是jpeg解码. 2. 将解码出来的位图格式输出到本地的LCD屏上. 在Linux系统下是通过写入帧缓冲(framebuffer)来实现的. 3. framebuffer相当于为LCD设备提供一个统

linux中PHP dirname(

  在php 中dirname() 函数返回路径中的目录部分,__FILE__而当前运行文件的完整路径和文件名.如果用在被包含文件中,则返回被包含的文件名.这是一个魔法变量(预定义常量),在windows中没有问题但在linux中路径出现的问题,下面我们一起来看看路径问题解决方法. 近期在给wordpress开发模板功能时发现,直接使用include("文件名")的形式调用其他php代码片段时会出现路径错误.之前服务器环境一直都是iis,未曾出现过类似的BUG,但换成linux服务器后

linux中的"瑞士军刀"

linux中的"瑞士军刀" busybox 俗称linux中的瑞士军刀,它类似于linux系统中bash 的一个缩微版,常用于嵌入式设备中,例如你的android手机中等等.busybox作为一个开源的应用,它的解析命令行的应用是值得学习的 http://busybox.net/

Linux中让显示器不休眠?

Linux中让显示器不休眠? 我们可以使用setterm命令: 操作如下: setterm -blank 0setterm -blank n (n为等待时间) setterm命令的其它选项: setterm: Argument error, usage setterm&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; [ -term terminal_name ]  [ -reset ]  [ -initialize

Linux中如何运行多个X窗口?

Linux中如何运行多个X窗口? startx默认以display :0.0起第一个X,通过传递参数给Xserver可以起多个X: # startx -- :1.0# startx -- :2.0... 然后用Ctrl-Alt-F7/F8...切换

linux 中配置apache 网站 编码设置为gb2312 浏览乱码

问题描述 linux 中配置apache 网站 编码设置为gb2312 浏览乱码 httpd.conf 添加了 AddDefaultCharset GB2312? 网页添加了 浏览器浏览的时候默认编码格式还是utf-8 显示乱码 解决方案 将环境变量LANG设置LANG="zh_CN GBK"

Linux中提示No such file or directory解决方法

  问题描述 解决方法 分析原因,可能因为我平台迁移碰到权限问题我们来进行权限转换 1)在Windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行.转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可. 2)方法 用vim打开该sh文件,输入: [plain] :set ff 回车,显示fileformat=dos,重新设置下文件格式: [plain] :set ff=uni

Linux中如何切换到X桌面?

Linux中如何切换到X桌面? 如果你是以图形登录方式登录linux,那么点击登录界面上的session(任务)即可以选择gnome和kde.如果你是以文本方式登录,那执行switchdesk gnome或switchdesk kde,然后再startx就可以进入gnome或kde. (或者vi ~/.xinitrc,添加或修改成exec gnome-session 或exec startkde,然后用startx启动x)

Linux中svn提交文件后自动同步更新到网站目录

 下面来为各位介绍Linux中svn提交文件后自动同步更新到网站目录希望文章对各位有帮助.     有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkout代码,例如我的目录是/data/www/test svn co https://127.0.0.1/test/trunk/ /data/www/test/ 注意,这是因为有时我会在服务器上直接修改代