wince 液晶屏 LCD 驱动 学习

24 篇文章 1 订阅

所谓图形加速,一般都是指加速渲染,比如可以把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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值