wince 笔记

摘自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的函式原型即可。

     

     

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值