网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> 技术文库 >> 嵌入式 >> 文章正文
  uClinux下如何写framebuffer 设备驱动           ★★★ 【字体:
uClinux下如何写framebuffer 设备驱动
作者:A009    文章来源:本站    点击数:    更新时间:2007-3-1    
下面的内容主要是关于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(struct
fb_var_screeninfo *var, int con, struct fb_info *info)函数。
如何添加framebuffer 设备驱动
首先在config.in 文件中添加一行代表用户自己驱动的选项。具体做法请参考
config.in 的帮助文档。
在make menuconfig 的时候首先进入Character devices,选中里面的Virtual
terminal 和Support for console on virtual terminal.
退到上一层界面我们就可以看到Console device 的选项,进入后将光标落在
Framebuffer Support 上,按回车键进入,在里面选择自己所需要的framebuffer
设备即可。自己所添加的设备驱动的类型(如果在uclinux 下,应该以*选中,而不
是M 选中),在编译的时候就会产生相应的o 文件。
在Advanced low level 中可以配置bpp packed pixel support,然后选中Select
compiled-in fonts 即可。等操作系统运行以后就会在/dev 下面看到fb 这个设备。它的major 应该是29,
第一个设备的minor 应该是0。
如何使用framebuffer 设备
我们可以在几个支持图形显示的平台上开发一些图形界面。例如microwindows,
minigui,Qtembed,等等。在这里我们就不详细介绍具体做法,感兴趣的朋友可以
到我们网站上下载。
这里我们假设用户已经通过tftp 或者mount 命令将测试例子demo 传到
/var/test 目录下。在/test 目录下启动后台服务程序./nano-X &,这时可以看到屏
幕有一个闪动,然后会变为黑色,接着就可以运行测试程序了,执行./demo 即可。
               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    “硬实时”为Linux注入新活力
    基于Linux的EPA无线通信卡的…
    基于Linux的红外网络通信的实…
    基于Linux系统的软PLC设计
    Linux多线程编程和Linux 2.6…
    Linux下的多线程编程
    基于2.6.19内核的小型Linux系…
    基于嵌入式Linux的接口转换卡…
    Linux2.4与Linux2.6内核调度…
    Linux 内核解读入门
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号