zoukankan      html  css  js  c++  java
  • 将Wince 6.0 Public下的Battdrvr驱动移植到BSP

    将Wince 6.0 Public下的Battdrvr驱动移植到BSP

    By:zsz @ 2011/5/19

    1、 Public下的Battdrvr目录拷贝到BSPDir\SRC\Drivers目录下,并在此目录下的dir文件中增加battdrvr,记BSPDir\SRC\Driver\battdrvr目录为BSPBattdrvr

    2、 更改BSPBattdrvr\PDD目录下的sources文件

    sources文件为:

    TARGET=battdrvr_stubpdd

    TARGETNAME=$(TARGET)

    TARGETTYPE=LIBRARY

     

    SOURCES = \

            sbattif.c

    改为:

    RELEASETYPE=PLATFORM          #加入这句标明lib放在BSP lib路径下

    TARGET=battdrvr_stubpdd_ZGT     #改名,为了和原来lib区别

    TARGETNAME=$(TARGET)

    TARGETTYPE=LIBRARY

    WINCEOEM=1     #设置该值表示需要使用WinCE下的一些公用的库和头文件

     

    SOURCES = \

            sbattif.c

    3、 更改BSPBattdrvr\MDD目录下的sources文件

    sources文件为

    TARGET=battdrvr_mdd

    TARGETNAME=$(TARGET)

    TARGETTYPE=LIBRARY

     

    TARGETDEFNAME=battdrvr

    DEFFILE=$(TARGETDEFNAME).def

    WINCETARGETFILE0=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\$(TARGETDEFNAME).def

     

    SOURCES = \

            battdrvr.c \

            battapi.c \

                battzones.c

    改为:

    RELEASETYPE=PLATFORM

    TARGET=battdrvr_mdd_ZGT

    TARGETNAME=$(TARGET)

    TARGETTYPE=LIBRARY

    WINCEOEM=1

     

     

    SOURCES = \

            battdrvr.c \

            battapi.c \

                battzones.c

    更改原因同2

    4、 更改BSPBattdrvr\LIB目录下的sources文件

    sources文件为:

    TARGET=battdrvr

    TARGETNAME=$(TARGET)_lib

    TARGETTYPE=LIBRARY

     

    SYNCHRONIZE_DRAIN=1

     

    SOURCELIBS=\

        $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\battdrvr_mdd.lib   \

        $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\battdrvr_stubpdd.lib

     

    WINCETARGETFILES=dummy

     

    SOURCES =

    改为:

    RELEASETYPE=PLATFORM

    TARGET=battdrvr

    TARGETNAME=$(TARGET)_lib_ZGT

    TARGETTYPE=LIBRARY

    WINCEOEM=1

     

    SYNCHRONIZE_DRAIN=1

     

    SOURCELIBS=\

        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\battdrvr_mdd_ZGT.lib      \

        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\battdrvr_stubpdd_ZGT.lib

    #注意修改的路径

     

    WINCETARGETFILES=dummy

     

    SOURCES =

    5、 BSPBattdrvr目录下增加DLL目录(并在dir文件中加上此目录),将makefilebattdrvr.def拷贝到这个目录下

    Battdrvr.def内容如下:

    LIBRARY BATTDRVR

    ; DESCRIPTION Battery MDD/sample driver

     

    EXPORTS Init

    Deinit

    Open

    Close

    Read

    Write

    Seek

    PowerDown

    PowerUp

          IOControl

    6、 BSPBattdrvr\DLL目录下新建sources文件,内容如下:

    TARGETNAME=battdrvr_ZGT

     

    TARGETTYPE=DYNLINK

    RELEASETYPE=PLATFORM

    SYNCHRONIZE_DRAIN=1

    WINCEOEM=1

     

    DLLENTRY=DllMain

     

    DEFFILE=battdrvr.def

     

    SOURCELIBS=

     

    TARGETLIBS=\

        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\battdrvr_lib_ZGT.lib \

        $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \

        $(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib

     

    SOURCES=

    将生成battdrvr_ZGT.dll文件

    7、 platform.bib中增加:

    IF BSP_NOBATTERY !

    battdrvr.dll        $(_FLATRELEASEDIR)\battdrvr_ZGT.dll                    NK SHK

    ENDIF BSP_NOBATTERY !

    注意:是将battdrvr_ZGT.dll重命名为battdrvr.dll

    8、 platform.reg中增加:

    IF BSP_NOBATTERY !

     

    ; HIVE BOOT SECTION

     

    [HKEY_LOCAL_MACHINE\System\Events]

        "SYSTEM/BatteryAPIsReady"="Battery Interface APIs"

     

    ; END HIVE BOOT SECTION

     

    ; These registry entries load the battery driver. The IClass value must match

    ; the BATTERY_DRIVER_CLASS definition in battery.h -- this is how the system

    ; knows which device is the battery driver. Note that we are using

    ; DEVFLAGS_NAKEDENTRIES with this driver. This tells the device manager

    ; to instantiate the device with the prefix named in the registry but to look

    ; for DLL entry points without the prefix. For example, it will look for Init

    ; instead of BAT_Init. This allows the prefix to be changed in the registry (if

    ; desired) without editing the driver code.

    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Battery]

       "Prefix"="BAT"

       "Dll"="battdrvr.dll"

       "Flags"=dword:8                      ; DEVFLAGS_NAKEDENTRIES

       "Order"=dword:0

       "IClass"="{DD176277-CD34-4980-91EE-67DBEF3D8913}"

     

    ENDIF BSP_NOBATTERY !

    9、 PB里选上Core OS->CEBASE->Core OS Services->Battery Driver

    选上这个是为了方便增加battery驱动所需要的Dependencies,但是我们不会用到这个驱动,因为我们用的是battdrvr_ZGT.dll

    10sysgen即可

  • 相关阅读:
    分组排序并显示序号
    power-design--tables-export-usage
    cache implement
    get system properties
    jbpm
    JVM内存管理机制和垃圾回收机制
    java读取excel
    Java编程中“为了性能”尽量要做到的一些地方
    json串与java对象互转
    apidoc的使用
  • 原文地址:https://www.cnblogs.com/Shangzhi/p/public_battdrvr.html
Copyright © 2011-2022 走看看