📄 lcd驱动程序往2_6_11内核移植 - ~ 悠悠风信子 ~ - csdnblog.htm
字号:
face=宋体>与</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>的物理连接,要根据</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>与</FONT></SPAN><SPAN>CPU</SPAN><SPAN><FONT
face=宋体>的具体连接来设置各个</FONT></SPAN><SPAN>CPIO</SPAN><SPAN><FONT
face=宋体>寄存器。</FONT></SPAN></FONT><SPAN><BR></SPAN><SPAN><FONT
face=宋体 size=2>注:具体修改详见驱动程序。</FONT></SPAN><SPAN><BR></SPAN><FONT
size=2><SPAN><FONT face=宋体>(</FONT></SPAN><SPAN>3</SPAN><SPAN><FONT
face=宋体>)、修改</FONT></SPAN><SPAN>arch/arm/mach-s3c2410/s3c2410.c</SPAN><SPAN><FONT
face=宋体>,在</FONT></SPAN><SPAN>s3c2410_iodesc</SPAN><SPAN><FONT
face=宋体>结构中添加:</FONT></SPAN></FONT><FONT
size=2><SPAN>IODESC_ENT(LCD)<BR></SPAN><SPAN><FONT
face=宋体>注:以上添加的语句就是为了将</FONT></SPAN><SPAN>CPU</SPAN><SPAN><FONT
face=宋体>的</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>寄存器的物理地址映射到所指向的虚拟地址上去,上面的结构还定义了虚拟地址所占用的区间,并指定了该区间所指向的域(的属性)。</FONT></SPAN></FONT><SPAN><BR></SPAN><FONT
size=2><SPAN><FONT face=宋体>(</FONT></SPAN><SPAN>4</SPAN><SPAN><FONT
face=宋体>)、修改</FONT></SPAN><SPAN>drivers/video</SPAN><SPAN><FONT
face=宋体>目录下的</FONT></SPAN><SPAN>Kconfig</SPAN><SPAN><FONT
face=宋体>文件,在最后添加如下内容:</FONT></SPAN></FONT><SPAN><BR><FONT
size=2>config FB_S3C2410<BR> tristate "S3C2410 LCD support"<BR> depends on FB && ARM && ARCH_S3C2410<BR> help<BR> This is a framebuffer device for the S3C2410 LCD Controller. If you plan to use the LCD display with your S3C2410 system, say Y here.<BR></FONT></SPAN><FONT
size=2><SPAN><FONT face=宋体>(</FONT></SPAN><SPAN>5</SPAN><SPAN><FONT
face=宋体>)、修改</FONT></SPAN><SPAN>drivers/video</SPAN><SPAN><FONT
face=宋体>目录下的</FONT></SPAN><SPAN>Makefile</SPAN><SPAN><FONT
face=宋体>文件,在最后添加如下内容</FONT></SPAN></FONT><FONT
size=2><SPAN>:<BR>obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o<BR></SPAN><SPAN><FONT
face=宋体>四、配置、编译内核。在内核顶层目录当中键入:</FONT></SPAN></FONT><SPAN><BR><FONT
size=2> #make smdk2410_defconfig<BR></FONT></SPAN><FONT
size=2><SPAN><FONT
face=宋体>由于</FONT></SPAN><SPAN>2.6</SPAN><SPAN><FONT
face=宋体>的内核默认就支持了</FONT></SPAN><SPAN>S3C2410</SPAN><SPAN><FONT
face=宋体>,所以就有一个默认的内核配置文件。里面只是包括了一个简单的配置,要使</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>驱动编译进内核,还要进行手工配置。</FONT></SPAN></FONT><SPAN><BR><FONT
size=2>#make menuconfig</FONT></SPAN></P>
<P style="BACKGROUND: white"><FONT
size=2><SPAN> Graphics support ---> <BR> [*] Support for frame buffer devices<BR> [*] S3C2410 LCD support(BASED ON S3C2400)<BR></SPAN><SPAN><FONT
face=宋体>将刚才添加的</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>驱动程序静态添加到内核当中。</FONT></SPAN></FONT><SPAN><BR></SPAN><SPAN><FONT
face=宋体 size=2>最后进行内核编译。</FONT></SPAN><SPAN><BR><FONT
size=2>#make<BR></FONT></SPAN><SPAN><FONT face=宋体
size=2>然后将镜像下载到开发板中去</FONT></SPAN><FONT
size=2><SPAN>.<BR></SPAN><SPAN><FONT
face=宋体>而且在</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>显示屏上的左上角会显示一个小企鹅的图标。查看设备文件。</FONT></SPAN></FONT><FONT
size=2><SPAN> <BR>[root@fa /]# ls -al /dev/fb/0<BR></SPAN><SPAN><FONT
face=宋体>由此可见,</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>已经成功驱动,要测试驱动程序可以用</FONT></SPAN><SPAN> </SPAN><SPAN><FONT
face=宋体>自己写(见附件</FONT></SPAN><SPAN>test.c</SPAN><SPAN><FONT
face=宋体>)在显示屏上显示任意颜色的线条。</FONT></SPAN></FONT><SPAN><BR></SPAN><SPAN><FONT
face=宋体 size=2>问题解析</FONT></SPAN><SPAN><BR></SPAN><FONT
size=2><SPAN><FONT
face=宋体>在</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>驱动程序移植的过程中,出现的问题主要就是由于寄存器设置不正确而造成的问题。</FONT></SPAN></FONT><SPAN><BR></SPAN><FONT
size=2><SPAN><FONT
face=宋体>在对驱动程序进行了函数替代以及改写了一些函数之后,将驱动程序编译进内核里,内核可以正确的编译连接并生成镜像文件,把镜像文件下载到开发板上,可以看到</FONT></SPAN><SPAN>drivers/video</SPAN><SPAN><FONT
face=宋体>目录下看到系统注册的一个设备文件,但是在系统启动之后就是无法看见小企鹅的图标并且用测试程序去测试,</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>屏幕上也无法显示任何有色的线条。通过多次查阅源代码,才发现原来就是</FONT></SPAN><SPAN>CPU</SPAN><SPAN><FONT
face=宋体>有关</FONT></SPAN><SPAN>LCD</SPAN><SPAN><FONT
face=宋体>的</FONT></SPAN><SPAN>8</SPAN><SPAN><FONT
face=宋体>个寄存器的设置以及对</FONT></SPAN><SPAN>GPC</SPAN><SPAN><FONT
face=宋体>和</FONT></SPAN><SPAN>GPD</SPAN><FONT
face=宋体><SPAN>寄存器的设置不正确。后来对这几个寄存器进行了正确的设置就可以在系统启动之后看到小企鹅的图标。由于屏幕的背景是蓝色的,所以该图标的颜色显示不正确,但是用自己写的测试程序去画设置好的颜色的线条,在屏幕上总能正确的显示出来,所以至于这个屏幕的颜色问题至今尚未解决。</SPAN><SPAN></SPAN></FONT></FONT></P> <BR><BR>
<P id=TBPingURL>Trackback:
http://tb.blog.csdn.net/TrackBack.aspx?PostId=1516243</P><BR></DIV>
<DIV class=postFoot>
<SCRIPT src=""></SCRIPT>
[<A title=功能强大的网络收藏夹,一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]
youyoufengxinzi发表于 2007年02月27日 19:17:00 </DIV></DIV><LINK
href="http://blog.csdn.net/youyoufengxinzi/Services/Pingback.aspx"
rel=pingback><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Descriptionrdf:about="http://blog.csdn.net/youyoufengxinzi/archive/2007/02/27/1516243.aspx"dc:identifier="http://blog.csdn.net/youyoufengxinzi/archive/2007/02/27/1516243.aspx"dc:title="LCD驱动程序往2.6.11内核移植"trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=1516243" /></rdf:RDF>-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR><BR><BR>
<DIV class=post id=csdn_zhaig_ad_yahoo></DIV>
<SCRIPT type=text/javascript>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</SCRIPT>
<SPAN class=PreAndNext id=viewpost.ascx_PreviousAndNextEntriesDown>
<DIV align=center><A
href="http://blog.csdn.net/youyoufengxinzi/archive/2007/02/27/1516248.aspx">上一篇: Writing
Linux LCD drivers </A> | <A
href="http://blog.csdn.net/youyoufengxinzi/archive/2007/02/27/1516241.aspx">下一篇: 关于Linux下的帧缓冲介绍</A></DIV></SPAN>
<DIV id=comments><SPAN id=Anthem_Comments.ascx_ltlComments__><SPAN
id=Comments.ascx_ltlComments><BR>
<DIV id=comments>
<H3>����</H3>没有评论。 </DIV></SPAN></SPAN></DIV>
<SCRIPT language=javascript>
ad_width=468;
ad_height=60;
adcss=2;
unionuser=19;
ad_type='j';
count=5;
</SCRIPT>
<SCRIPT language=javascript
src="LCD驱动程序往2_6_11内核移植 - ~ 悠悠风信子 ~ - CSDNBlog.files/showads.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javascript
src="LCD驱动程序往2_6_11内核移植 - ~ 悠悠风信子 ~ - CSDNBlog.files/showgm.js"
type=text/javascript></SCRIPT>
<!--done-->
<DIV class=comments>添加新评论 <BR>
<DIV id=Anthem_PostComment.ascx_CommentUpdatePanel__>
<DIV id=PostComment.ascx_CommentUpdatePanel>
<TABLE class=commentsTable id=CommentForm cellSpacing=2
cellPadding=0 border=0>
<TBODY>
<TR>
<TD width=75>大名</TD>
<TD><INPUT id=PostComment.ascx_tbName style="WIDTH: 322px"
disabled maxLength=32 size=40 name=PostComment.ascx:tbName></TD>
<TD><SPAN id=PostComment.ascx_RequiredFieldValidator2
style="VISIBILITY: hidden; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
errormessage="Please enter your name"
controltovalidate="PostComment.ascx_tbName">Please enter your
name</SPAN></TD></TR>
<TR>
<TD>网址</TD>
<TD><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 322px"
disabled maxLength=256 size=40 name=PostComment.ascx:tbUrl></TD>
<TD></TD></TR>
<TR>
<TD colSpan=3><BR>评论 <SPAN
id=PostComment.ascx_RequiredFieldValidator3
style="VISIBILITY: hidden; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
errormessage="Please enter a comment"
controltovalidate="PostComment.ascx_tbComment">Please enter a
comment</SPAN><BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 400px" disabled name=PostComment.ascx:tbComment rows=6 cols=50></TEXTAREA>
</TD></TR>
<TR>
<TD colSpan=3><SPAN
id=Anthem_PostComment.ascx_btnSubmit__></SPAN></TD></TR>
<TR>
<TD colSpan=3><SPAN id=PostComment.ascx_Message
style="COLOR: red">当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击<A
href="http://passport.csdn.net/member/UserLogin.aspx?from=http://blog.csdn.net/youyoufengxinzi/archive/2007/02/27/1516243.aspx">登录</A></SPAN></TD></TR></TBODY></TABLE></DIV></DIV></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE
style="BORDER-RIGHT: white 5px solid; BORDER-LEFT: white 5px solid; BORDER-BOTTOM: white 5px solid"
cellSpacing=0 cellPadding=0 width="84%" align=center border=0>
<TBODY>
<TR>
<TD class=footer align=left>
<SCRIPT
src="LCD驱动程序往2_6_11内核移植 - ~ 悠悠风信子 ~ - CSDNBlog.files/counter.js"></SCRIPT>
<!--done-->
<DIV class=footer>Copyright ©2007 风信子 模板提供:<A class=footerlink
href="http://blog.hjenglish.com/">沪江博客</A><BR></DIV></TD></TR></TBODY></TABLE><!-- 页面内因素 -->
<SCRIPT type=text/javascript>
<!--
var Page_Validators = new Array(document.getElementById("PostComment.ascx_RequiredFieldValidator2"), document.getElementById("PostComment.ascx_RequiredFieldValidator3"));
// -->
</SCRIPT>
<INPUT id=__EVENTVALIDATION type=hidden
value=/wEWMAL+raDpAgKz3MGoCgLOscX7CwL29ZjrCgL29ayAAgL29fBoAvb1hIwIAtne9pQFAtnemsgMAtneru0HAtnesoIPAtnexqcGAtne6twJAtne/nEC2d6ClQgC2d7W/Q4C2d76kgYC7LS21QwC7LTaigQC7LTurw8C7LTyxAYC7LSG+AkC7LSqnQEC7LS+sggC7LTC1wMC7LSWvgYC7LS60wkC152U+goC1524nwIC153MtAUC153Q6QwC153kjgQC152Iog8C152cxwYC152g/AkC1530xAwC152Y+AcClP6ZjwIClP6tpAUClP6x2QwClP7F/gcClP7pkw8ClP79yAYClP6B7AkClP6VgQECqrTotAMCwLLi2wwCouvO2AnIYBHnKb+UazY6RdzXU18nRnZglQ==
name=__EVENTVALIDATION>
<SCRIPT type=text/javascript>
<!--
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
ValidatorOnLoad();
}
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
else {
return true;
}
}
// -->
</SCRIPT>
</FORM>
<SCRIPT language=javascript type=text/javascript>
<!--
try
{
hide();
}
catch(e){}
//-->
</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 + -