您的位置:首页 > 产品设计 > UI/UE

wince 笔记

2011-09-28 11:11 477 查看
摘自challengezcy博客

http://challengezcy.blog.163.com/blog/static/69229272200951810148574/

 1. WinCE目錄

(1)Private:WinCE OS核心程式碼,通常不需要修改,若需要修改需MS協助;
    (2)Public:與硬體平台無關可共用的程式碼,與Private不同,屬可公開修改部分;

        Public\Common\OAK\CSP包含高度整合周邊晶片,如RTC、controllers; 

        Public\Common\OAK\Drivers包含非內建驅動程式

    (3)Platform:裝置相關檔案與程式碼,包含BSP套件,新增的BSP也是放在這後,於VSS加入

          Platform\<PlatformName>為硬體相關驅動程式原始碼,如BSP drivers;

  2.環境變數

:Platform/Settings/Environment/New,或在建構命令中輸入 set <var>=<value>
3. build

影像檔建構程序:(1)Sysgen;(2)Build;(3)Buildrel;(4)makeimage

4. makeimg

產生影像檔時makeimg.exe會呼叫:
(1)cenlscmp.exe,結合nlscfg.inf、common.str、nlssrc.txt產生國際語系和地區設定的輸出檔wince.nls;

(2)fmerge.exe,合併common.bib、config.bib、project.bib、platform.bib為ce.bib(定義所有要包含到最終影像檔的檔案)。

                            合併common.reg、project.reg、platform.reg為reginit.ini(註冊檔資訊)。

                           合併common.dat、project.dat、platform.dat為initobj.dat(定義執行時間影像檔的檔案及資料夾目錄資訊)。

                          合併common.db、project.db、platform.db為initdb.ini(定義產生於object store裡的資料庫資訊);

(3)regcomp.exe,讀取reginit.ini檔並壓縮成二進制註冊檔Dfault.fdf;

(4)txt2ucde.exe,轉換fmerge.exe產生的initobj.tmp檔案ASCII文字為unicode,並存成為initobj.dat;

(5)romimage.exe,讀取ce.bib檔案以結合需要檔案成為nk.bin

5.檔名說明

檔名說明:*.bib為binary image builder file,其中config.bib定義核心記憶體類型及大小,
                       *.dat定義冷開機時RAM內檔案系統目錄、檔案和連結,

                      *.db定義冷開機時Object Store資訊,

                     *.reg定義冷開機時起始registry key

6.記憶體形式

:ROM(EPROM、EEPROM、Masked ROM)、RAM(DRAM、SRAM)、FLASH(NAND Flash、NOR Flash)

7.DispPerf.exe

DispPerf.exe的原始碼放在%_WINCEROOT%\Public\Common\OAK\INC,若要編譯,在WinCE 6.0環境的話,只要在VSS2005的Solution Explorer找到後,滑鼠右鍵後選「include from build」,但試過並未成功,所以還是類似WinCE 5.0的作法,以新增應用程式,並照著MSDN的步驟,複製貼上、修改include header,編譯成自己的DispPerf。

8.目前PND的顯示color depth多已做到65K或16.7M顏色,也就是15、16 bpp或24 bpp。

9.寫Display Driver

要寫Display Driver就是完成三十個DDI functions,然後用DispPerf檢查哪些適合軟體加速或硬體加速,配合幾個sample dirver看如何寫軟硬體加速。
10.FLAT Display Driver

FLAT Sample Display Driver:VGA functionality、Color depths: 8, 16, 24, 32 bpp、Software acceleration、Source code: %_WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\DISPLAY\VGAFLAT
10. Emulation library for software-accelerated blits

:%_WINCEROOT%\Public\Common\OAK\Drivers\Display\Emul
11.ATI Sample Display Driver

:GPE-based, 8, 16, 24, 32 bpp、800x600 and 16 bpp is tested、a mixture of software and hardware acceleration、Source code: %_WINCEROOT%\Public\Common\OAK\Drivers\Display\ATI
12.在WinXP上,可用dxdiag.exe得到DirectX的資訊、版本,在DirectX8.0時,已經沒有DirectDraw,被視為理所當然的包進Direct3D。但在DirectX7.0還有,但已經沒有更新資料與支援了。據說在DireCTX9.0會再出現,但用法不太相同。

13.

若要讓Display Driver支援DirectDraw,微軟建議Display Dirver自GPE完成,否則得看文件修改DDHAL Callback Function、DDHAL Marco、DDHAL Structures。若是用GPE,則只需改用DDGPE類別,修改HAL即可支援DirectDraw。

14.

顯示驅動程式透過DrvEnableDriver()將其他三十個Device Driver Interface (DDI) Functions的pointer傳回給GDI,所以只有DrvEnableDriver的function identifier不能改,其他的DDI Functions名字可以內部認到即可。API-to-DDI的對映和使用,詳見MSDN「Primary Display Drivers」、「DrvEnableDriver」和「DRVENABLEDATA」。除了DisplayInit(),在PIC顯示卡的環境,此一函式在GWES.exe載入顯示驅動程式時,首先執行檢查,比DrvEnableDriver更早,但此函式為條件式需要、對其他顯示卡非必要。另一個可能exposed的DDI是DrvGetMasks()函式。對於其他DDI函式,實做時符合Winddi.h的函式原型即可。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息