//=====================================================================
//TITLE:
// 怎么让TCC89x支撑480×272的分辨率
//AUTHOR:
// norains
//DATE:
// Friday 01-April-2011
//Environment:
// Visual Studio 2005
// Windows CE 6.0
// Telechips TCC8900
//=====================================================================
TCC89x是功能强大的多媒体CPU,其默许支撑的分辨率为800×480。假如运用的屏刚好是该分辨率,那么全部都很简单,但假如是别的的分辨率,比方480×272,那么就需求动一番脑力了。
好吧,下面咱们就来看看怎么设置480×272这个分辨率吧!
一般来说,涉及到设置的问题,咱们一般习惯于翻开Magellan.bat文件。这次当然也不破例,咱们在其中看到有如下的代码段:
@REM *************************************************************
@REM * Display Setting
@REM * RGB888 or RGB565 ex)set RGB888=1
@REM * Display Height ex)set LCDHEIGHT=1E0
@REM * Display Width ex)set LCDWIDTH=320
@REM *************************************************************
set RGB565=1
set LCDHEIGHT=1E0
set LCDWIDTH=320
是不是意味着只需修正LCDHEIGHT和LCDWIDTH就能够完成480×272的分辨率了呢?很惋惜,假如你设置了,而且编译了体系,会发现全部让你很绝望,全部都是仍旧。在评论下一步怎么去弄之前,咱们先看看LCDHEIGHT和LCDWIDTH终究影响到了哪里。
用软件查找,发现该环境变量在Platform.reg中有界说运用,如下所示:
[HKEY_LOCAL_MACHINE/Drivers/Display/Magellan/CONFIG]
DisplayDll=Display.dll
LCD_Width=dword:$(LCDWIDTH)
LCD_Height=dword:$(LCDHEIGHT)
但实践上,这个界说是没有任何含义的。由于注册表LCD_Width和LCD_Height这两个数值,会在WinCE跑起来之后,被Display驱动设置回800×480。
消除经过修正Magellan.bat来到达改变分辨率的主意,咱们仍是先实打实地从头开端怎么进行设置吧。在开端之前,咱们必需求清晰一点,从广义上来说,显现分为两个部分,一个是bootloader,另一个则是WinCE开端跑起来之后。
首先是bootloader,这儿需求修正的是./Src/BOOT/lcd.h文件。要修正的有两个当地,先开刀的是lcd_cfg这个数组。咱们需求将lcd_cfg[0]设置为所用屏的参数,在这儿先给出一个样本,假如实践运用的屏与此不同,咱们可自行修正:
[cpp] view plaincopystatic lcd_cfg_t lcd_cfg[3] =
{
// [A0481A 4.3 Color TFT LCD ]
{480, 272, 8, 10, 1, 1, 41, 1, 1, 0xC, 60 },
// [CLAA104XA01CW 104 Color TFT LCD (LVDS)]
{1024, 768, 1, 1, 1, 36, 1, 1, 318, 0xC, 60},
// [HT121WX2-103 121 Color TFT LCD (LVDS)]
{1280, 800, 1, 1, 3, 20, 1, 10, 150, 0xC, 60 },
};
然后还有DISP_WIDTH和DISP_HEIGHT这两个数值。假如懒得费事,能够直接在文件的最终undef这两个宏,然后再从头设置,如下所示:
[cpp] view plaincopy#undef DISP_WIDTH
#undef DISP_HEIGHT
#define DISP_WIDTH 480
#define DISP_HEIGHT 272
假如数值的设置和实践的屏共同的话,那么现在编译boot并烧录,应该现已能看到正常的480×272的界面了。
接下来需求弄的便是WinCE的部分。正如前面所说的,Display驱动会主动调用SetMode(0)函数,或许这样会给咱们这样一个感觉,只需修正SetMode函数的调用就能够了。但实践上这主意是不可行的,由于该函数的调用是封装在Telechips的自带的某个lib中,咱们是无法更改的。其实,咱们完全能够不必理睬代码。默许不是调用Mode 0么?咱们只需更改Display Mode 0的数值即可。也便是说,咱们能够翻开platform.reg文件,将LCD_Width0和LCD_Height0别离设置为480和272即可,如下所示:
[HKEY_LOCAL_MACHINE/Drivers/Display/Magellan/CONFIG]
LCD_Width0=dword:1E0 ;480
LCD_Height0=dword:110 ;272
编译体系,将NK.ROM烧录到板子,能够发现进入WinCE后的界面现已全部正常了。