新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何讓TCC89x支持480x272的分辨率

        如何讓TCC89x支持480x272的分辨率

        作者: 時間:2016-09-12 來源:網絡 收藏

        //=====================================================================

        本文引用地址:http://www.104case.com/article/201609/304829.htm

        //TITLE:

        // 如何讓TCC89x支持480x272的分辨率

        //AUTHOR:

        // norains

        //DATE:

        // Friday 01-April-2011

        //Environment:

        // Visual Studio 2005

        // Windows CE 6.0

        // Telechips TCC8900

        //=====================================================================

        TCC89x是功能強大的多媒體CPU,其默認支持的分辨率為800x480。如果使用的屏剛好是該分辨率,那么一切都很簡單,但如果是另外的分辨率,比如480x272,那么就需要動一番腦力了。

        好吧,下面我們就來看看如何設置480x272這個分辨率吧!

        一般來說,涉及到設置的問題,我們一般習慣于打開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就能夠實現480x272的分辨率了呢?很遺憾,如果你設置了,并且編譯了系統,會發現一切讓你很失望,一切都是依舊。在討論下一步如何去弄之前,我們先看看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驅動設置回800x480。

        打消通過修改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并燒錄,應該已經能看到正常的480x272的界面了。

        接下來需要弄的就是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后的界面已經一切正常了。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 谢通门县| 余姚市| 沂南县| 靖安县| 武乡县| 株洲县| 普兰县| 东港市| 闽侯县| 海晏县| 岳普湖县| 滦平县| 台湾省| 康平县| 高淳县| 肥乡县| 滨海县| 建阳市| 大兴区| 定兴县| 田阳县| 郧西县| 金秀| 炎陵县| 兴城市| 泗洪县| 大理市| 寿宁县| 富民县| 松原市| 桃源县| 库尔勒市| 江孜县| 航空| 锡林浩特市| 云浮市| 毕节市| 金堂县| 库车县| 凤山市| 华池县|