bluefishhttp://blog.yesky.com/Blog/vincentzhou/复制地址
公告栏
专注wince底层开发,学习linux 为生活而奋斗!
控制面板
日历
<2008年9月>
SuMoTuWeThFrSa
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
留言簿(13)
文章分类
文章档案
日记档案
向强人学习

所有的修改只涉及到2个文件platform\smdk2440\inc\s2440.h和platform\smdk2440\drivers\display\s3c2440lcd\s3c2440disp.cpp

在s2440.h文件中#define TFT800_600 5,别的一些宏照抄已经有的分辨率的形式改写就好了(包括前肩后肩等这些东西,这些东西要等到系统跑起来之后看lcd的偏移情况来调整了),这个很简单。

在s3c2440disp.cpp文件中,首先要改的就上S3C2440DISP类的m_nScreenWidth和m_nScreenHeight,他们的初始化都在构造函数中。接下来就是InitializeHardware了,在这其中要修改m_VirtualFrameBuffer的大小,具体修改VirtualAlloc和VirtualCopy的相应参数。当我用0xA0000时去调试10.4寸的屏,出现的是花屏(虽然这是我第一次调试lcd的驱动,没有一点点经验,但是有些事在做之前就应该想想大概有那些东西需要处理的)。在改成了0xF0000之后就ok了。

接下来要修改的是--(按照原来驱动的注释来说就是)clear rest of frame buffer out。这个就简单了,按照你现在想要的分辨率来写就好了。但是那4个固定的值是什么意思还没有弄清楚,希望知道的兄弟可以说一声。
//for 800*600
for (index = 0; index < 800*600; index++)
{
 if(index < 800*150)
 {
  ptr[index] = 0xf800;
 }
 else if(index < 800*150*2)
 {
  ptr[index] = 0x07e0;
 }
 else if(index < 800*150*3)
 {
  ptr[index] = 0x001f;
 }
 else
 {
  ptr[index] = 0xffff;
 }
}


作者:bluefish 阅读() 评论()  编辑 发表于:2007-07-30 16:22
相关内容
文章评论

  • # re: 支持lcd分辨率,驱动修改步骤
  • 当在2440(wince4.2)中,按照上述步骤将lcd的分辨率改成800*600(当然lcd要支持这样的分辨率)后,系统可以正常显示。但是当移动鼠标或者操作键盘的时候,屏会出现抖动(轻微的上下抖动)主要的是还会出现一条条白色的横线(随着鼠标等的操作结束而消失)。出现该问题,一般可以通过修改CLKVAL的值来调节。这个问题应该和wince4.2的系统也有关系,据说同样的驱动放到wince5.0下就没有上述的问题,不过这个我没有实现过。还有就是这种不稳定是不会影响到TTL接口的TFT液晶屏的稳定性的!除非你用的是LVDS接口LCD或者LCD转VIDEO这类对时序要求严格的,才会抖动。嘿嘿,我用的就是LVDS接口LCD。
    bluefish | 2007-08-01 10:52
  • # re: 支持lcd分辨率,驱动修改步骤
  • 那四个固定值是对应的颜色值
    对应红绿蓝白三中颜色
    天极博友 | 2007-10-31 09:07

    发表评论
    标题 *  
    姓名 *  
    内容 *  
       验证码: *       
           
    版权声明:天极是本Blog托管服务提供商。如本文牵涉版权问题,天极不承担相关责任,请版权拥有者直接与文章作者联系解决。
    Powered by:

    Copyright © bluefish