不然你要我怎么样

彪悍的代码不需要注释

Archive for the ‘Framebuffer’ tag

【转贴】全面的framebuffer详解(二)

leave a comment

2、 fbmem.c
fbmem.c 处于Framebuffer设备驱动技术的中心位置它为上层应用程序提供系统调用也为下一层的特定硬件驱动提供接口;那些底层硬件驱动需要用到这儿的接口来向系统内核注册它们自己. fbmem.c 为所有支持FrameBuffer的设备驱动提供了通用的接口,避免重复工作。

1) 全局变量

struct fb_info *registered_fb[FB_MAX];
int num_registered_fb;

这两变量记录了所有fb_info 结构的实例,fb_info结构描述显卡的当前状态,所有设备对应的fb_info结构都保存在这个数组中,当一个FrameBuffer设备驱动向系统注册自己时,其对应的fb_info结构就会添加到这个结构中,同时num_registered_fb 为自动加1。

static struct {
const char *name;
int (*init)(void);
int (*setup)(void);
} fb_drivers[] __initdata= { ….};

Read the rest of this entry »

转载请注明: 转载自不然你要我怎么样
本文链接地址: 【转贴】全面的framebuffer详解(二)

Written by xiangmocheng

八月 27th, 2009 at 11:29 上午

Posted in Linux

Tagged with

【转贴】全面的framebuffer详解(一)

leave a comment

原文地址:http://blog.chinaunix.net/u1/51844/showart_1710984.html

一、FrameBuffer的原理

FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。

Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。

但Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池,CPU将运算后的结果放到这个水池,水池再将结果流到显示器,中间不会对数据做处理。应用程序也可以直接读写这个水池的内容.在这种机制下,尽管Framebuffer需要真正的显卡驱动的支持,但所有显示任务都有CPU完成,因此CPU负担很重。

Read the rest of this entry »

转载请注明: 转载自不然你要我怎么样
本文链接地址: 【转贴】全面的framebuffer详解(一)

Written by xiangmocheng

八月 27th, 2009 at 11:28 上午

Posted in Linux

Tagged with