<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何讓TCC89x支持480x272的分辨率

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

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

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

          本文引用地址:http://www.ex-cimer.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是功能強(qiáng)大的多媒體CPU,其默認(rèn)支持的分辨率為800x480。如果使用的屏剛好是該分辨率,那么一切都很簡單,但如果是另外的分辨率,比如480x272,那么就需要動一番腦力了。

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

          一般來說,涉及到設(shè)置的問題,我們一般習(xí)慣于打開Magellan.bat文件。這次當(dāng)然也不例外,我們在其中看到有如下的代碼段:

          @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就能夠?qū)崿F(xiàn)480x272的分辨率了呢?很遺憾,如果你設(shè)置了,并且編譯了系統(tǒng),會發(fā)現(xiàn)一切讓你很失望,一切都是依舊。在討論下一步如何去弄之前,我們先看看LCDHEIGHT和LCDWIDTH究竟影響到了哪里。

          用軟件查找,發(fā)現(xiàn)該環(huán)境變量在Platform.reg中有定義使用,如下所示:

          [HKEY_LOCAL_MACHINE/Drivers/Display/Magellan/CONFIG]

          DisplayDll=Display.dll

          LCD_Width=dword:$(LCDWIDTH)

          LCD_Height=dword:$(LCDHEIGHT)

          但實際上,這個定義是沒有任何意義的。因為注冊表LCD_Width和LCD_Height這兩個數(shù)值,會在WinCE跑起來之后,被Display驅(qū)動設(shè)置回800x480。

          打消通過修改Magellan.bat來達(dá)到變更分辨率的念頭,我們還是先實打?qū)嵉貜念^開始如何進(jìn)行設(shè)置吧。在開始之前,我們必須要明確一點,從廣義上來說,顯示分為兩個部分,一個是bootloader,另一個則是WinCE開始跑起來之后。

          首先是bootloader,這里需要修改的是./Src/BOOT/lcd.h文件。要修改的有兩個地方,先開刀的是lcd_cfg這個數(shù)組。我們需要將lcd_cfg[0]設(shè)置為所用屏的參數(shù),在這里先給出一個樣本,如果實際使用的屏與此不同,大家可自行修改:

          [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這兩個數(shù)值。如果懶得麻煩,可以直接在文件的最后undef這兩個宏,然后再重新設(shè)置,如下所示:

          [cpp] view plaincopy#undef DISP_WIDTH

          #undef DISP_HEIGHT

          #define DISP_WIDTH 480

          #define DISP_HEIGHT 272

          如果數(shù)值的設(shè)置和實際的屏一致的話,那么現(xiàn)在編譯boot并燒錄,應(yīng)該已經(jīng)能看到正常的480x272的界面了。

          接下來需要弄的就是WinCE的部分。正如前面所說的,Display驅(qū)動會自動調(diào)用SetMode(0)函數(shù),可能這樣會給我們這樣一個感覺,只要修改SetMode函數(shù)的調(diào)用就可以了。但實際上這想法是不可行的,因為該函數(shù)的調(diào)用是封裝在Telechips的自帶的某個lib中,我們是無法更改的。其實,我們完全可以不用理會代碼。默認(rèn)不是調(diào)用Mode 0么?我們只要更改Display Mode 0的數(shù)值即可。也就是說,我們可以打開platform.reg文件,將LCD_Width0和LCD_Height0分別設(shè)置為480和272即可,如下所示:

          [HKEY_LOCAL_MACHINE/Drivers/Display/Magellan/CONFIG]

          LCD_Width0=dword:1E0 ;480

          LCD_Height0=dword:110 ;272

          編譯系統(tǒng),將NK.ROM燒錄到板子,可以發(fā)現(xiàn)進(jìn)入WinCE后的界面已經(jīng)一切正常了。



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();