![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| uClinux下如何写framebuffer 设备驱动 | |||||
作者:A009 文章来源:本站 点击数: 更新时间:2007-3-1 ![]() |
|||||
|
程中的一些体会,其中难免错漏之处, 欢迎指正。 什么是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条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|