免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 720 | 回复: 0
打印 上一主题 下一主题

uClinux的frame buffer [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-19 16:33 |只看该作者 |倒序浏览
uClinux 的framebuffer简介
下面的内容主要是关于framebuffer 的一些知识, 主要是根据我们实际开发过程中的一些体会,其中难免错漏之处, 欢迎指正。
什么是framebuffer 设备?
framebuffer 是一种能够提取图形的硬件设备,是用户进入图形界面很好的接口。有了framebuffer,用户的应用程序不需要对底层的驱动的深入了解就能够做出很好的图形。对于用户而言,它和/dev 下面的其他设备没有什么区别,用户可以把framebuffer 看成一块内存,既可以向这块内存中写入数据,也可以从这块内存中读取数据。第一个被注册的framebuffer 的minor 等于0,第二个被注册的framebuffer的minor 等于1,以此类推。
    framebuffer 内部结构
    数据结构:framebuffer 设备很大程度上依靠了下面四个数据结构。这三个结构在fb.h 中声明。
    Struct fb_var_screeninfo
    Struct fb_fix_screeninfo
    Struct fb_info
    第一个结构是用来描述图形卡的特性的。通常是被用户设置的。
    第二个结构定义了图形卡的硬件特性,是不能改变的,用户选定了哪一个图形卡,那么它的硬件特性也就定下来了。
    第三个结构定义了当前图形卡framebuffer 设备的独立状态,一个图形卡可能有两个framebuffer, 在这种情况下,就需要两个fb_info 结构。这个结构是唯一在内核空间可见的。
    设计自己的framebuffer 设备驱动
    用户首先需要添加下面的代码到fbmem.c
static struct {
const char *name;
int (*init)(void);
int (*setup)(char*);
} fb_drivers[] __initdata = {
#ifdef CONFIG_FB_YOURCARD
{ "driver_name", xxxfb_init, xxxfb_setup },
#endif
其次在xxfb.c 中根据自己的需要重新分配显存大小。例如: #define
VIDEOMEMSIZE (1*1024*1024) /* 1 MB */
再次根据自己的硬件设备修改相应的var 信息。主要修改xxfb_set_var(structfb_var_screeninfo *var, int con, struct fb_info *info)函数。
如何添加framebuffer 设备驱动
在make menuconfig 的时候首先进入Character devices,选中里面的Virtualterminal.如果希望控制台在液晶上输出,则选中Support for console on virtual terminal。(选用了msh(minix shell),再在rc中放入了一条sh

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/74101/showart_1729787.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP