关闭

wince 液晶屏 LCD 驱动 学习

标签: WINCE驱动
751人阅读 评论(0) 收藏 举报
分类:

所谓图形加速,一般都是指加速渲染,比如可以把2D渲染归类为一系列“原语”:画线,画长方形等等。如果是软件自己画,即不加速,则由软件一个像素一个像素的按照图形算法将线和长方形在“显存”(framebuffer, rendertarget,随便你怎么称呼)上“填”出来;即是由CPU在显存上画出来的。如果加速呢?那么CPU要做的事就很少了,它只需要通过某种方式告诉“加速硬件”,就是通常意义上的“GPU(图形芯片)”,或者嵌入式的DSP等,你希望画什么就行了,比如emit_prim_command(quad), emit_prim_command(line),具体在显存上将像素“填”出来的工作就是由GPU来完成的。自然CPU的负担少了很多。
还有一种就是upload to screen的操作,这个也可以看作一种原语(抽象),即“BitBlt”,这种操作一般来说就是启用DMA操作就行了。

 

eclipse开发工具开发QT应用程序
http://www.armbbs.net/forum.php?mod=viewthread&tid=10437

http://dl.dbank.com/c0k6fw5n8b

 
pDeviceInfo参数:
 pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
    pDeviceInfo->uiWidth = 800;
    pDeviceInfo->uiHeight = 480;
    pDeviceInfo->VBPD_Value = 29;
    pDeviceInfo->VFPD_Value = 13;
    pDeviceInfo->VSPW_Value = 3;
    pDeviceInfo->HBPD_Value = 40;
    pDeviceInfo->HFPD_Value = 40;
    pDeviceInfo->HSPW_Value = 48;
    pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
    pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
    pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
    pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
    pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
    pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
    pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
    pDeviceInfo->Frame_Rate = 60;    
    break;  

pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
pDeviceInfo->uiWidth = 800;
pDeviceInfo->uiHeight = 600;
pDeviceInfo->VBPD_Value = 25;
pDeviceInfo->VFPD_Value = 12;
pDeviceInfo->VSPW_Value = 4;
pDeviceInfo->HBPD_Value = 47;
pDeviceInfo->HFPD_Value = 15;
pDeviceInfo->HSPW_Value = 95;
pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
pDeviceInfo->VCLK_Source = CLKSEL_F_HCLK;//CLKSEL_F_LCDCLK;
pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
pDeviceInfo->Frame_Rate = 60;    
break;     


    pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
        pDeviceInfo->uiWidth = 480;
        pDeviceInfo->uiHeight = 800;
        pDeviceInfo->VBPD_Value = 3;
        pDeviceInfo->VFPD_Value = 3;
        pDeviceInfo->VSPW_Value = 3;
        pDeviceInfo->HBPD_Value = 6;
        pDeviceInfo->HFPD_Value = 6;
        pDeviceInfo->HSPW_Value = 15;
        pDeviceInfo->VCLK_Polarity   = IVCLK_FALL_EDGE;
        pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
        pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
        pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
        pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
        pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
        pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
        pDeviceInfo->Frame_Rate = 60; 

1,对于水平波纹,这个很可能是LCD背板输出电压不稳定造成的,可以用示波器查看下;
2,如果时序不对,同步信号的极性,那么在EBOOT阶段就会出现花屏等现象,WINCE5.0中,LCD时序是在Kernel\0al/init.c和EBOOT中的MAIN.C中两部分都有的;而在WINCE6.0中,结构不同了~但思想还是一致的;

SMDK2416 3.5"LCD驱动程序的移植

使用S3C2416 ARM 系统平台,使用WINCE6.0操作系统,LCD屏是奇美的LQ035NC111或科万宏的KWH035ST12-F01,其时序入下图。根据S3C2416芯片资料,自己编写的FrameRate计算器软件计算FrameRate,如下图:

得到FrameRate=61

一、修改的程序文件

      1. D:\WINCE600\PLATFORM\SMDK2416\Src\Drivers\Display\s3c2416_ldi_lib\s3c2416_ldi.c

      2. D:\WINCE600\PLATFORM\SMDK2416\Src\Inc\bsp_cfg.h

二、修改内容

1. D:\WINCE600\PLATFORM\SMDK2416\Src\Drivers\Display\s3c2416_ldi_lib\s3c2416_ldi.c

switch(g_ModuleType)
{
  // Tianma 3.5"  
case LDI_UT35A_RGB:
   //SureLion
  pDeviceInfo->RGBOutMode = DISP_24BIT_RGB888_P ;
  pDeviceInfo->uiWidth = 320;
  pDeviceInfo->uiHeight = 240;
  pDeviceInfo->VBPD_Value = 15;
  pDeviceInfo->VFPD_Value = 4;
  pDeviceInfo->VSPW_Value = 3;
  pDeviceInfo->HBPD_Value = 38;
  pDeviceInfo->HFPD_Value = 20;
  pDeviceInfo->HSPW_Value = 30;
  pDeviceInfo->VCLK_Polarity = IVCLK_RISE_EDGE;
  pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
  pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
  pDeviceInfo->VDEN_Polarity = IVDEN_LOW_ACTIVE;
  pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
  pDeviceInfo->VCLK_Source = CLKSEL_F_HCLK;
  pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
  pDeviceInfo->Frame_Rate = 61;
RETAILMSG(1,(TEXT("[LDI:INF] Output Devce Type [LDI_UT35A_RGB] =[%d] x [%d]\n\r"),pDeviceInfo->uiWidth,pDeviceInfo->uiHeight));
  break;

2. D:\WINCE600\PLATFORM\SMDK2416\Src\Inc\bsp_cfg.h

#define LCD_MODULE_TYPE    (LCD_MODULE_UT35A)      // Tianma 3.5"      320x240
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT43A)       // Qunchuang 4.3"   480x272
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT50A)      // Dianbang 5 "     800x480
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT70A)      // Qunchuang 7"     800x480
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT102A)     // Qunchuang 10.2"  800x480
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT104A)     // AUO 10.4"        800x600
//#define LCD_MODULE_TYPE    (LCD_MODULE_UTVGA6448)      // VGA              640x480
//#define LCD_MODULE_TYPE (LCD_MODULE_UTVGA8060)  //VGA    800x600

三、编译下载

       VISUAL STUDIO 2005 菜单"Build"->"Advanced Build Commands"->"Clean Sysgen"或”Build and Sysgen"编译,最好用DNW软件按步骤下载OK。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:166104次
    • 积分:4025
    • 等级:
    • 排名:第7705名
    • 原创:225篇
    • 转载:99篇
    • 译文:3篇
    • 评论:10条
    文章分类
    最新评论