如何将自己的生成的DLL写入到WINCE内核中

来源:互联网 发布:mac迅雷一打开就闪退 编辑:程序博客网 时间:2024/05/18 17:40

按照以下步骤操作:

1) 首先确保自己的PB平台上已经有一个NK.bin WINCE操作系统映象文件在:..\WINCE420\PUBLIC\SMDK2410\RelDir\SAMSUNG_SMDK2410_ARMV4IRelease\下面,如果没有这个NK.bin,那么首先编译生成一个NK.bin


2)生成了NK.bin之后,将自己生成的DLL放到上面的和NK.bin在同一个路径下面去(copy)

3)修改PB里面的project parameters设置,具体是:打开PB之后,选择一个平台,比如SMDK2410,然后在左边的窗口
选择Parameters...,点击SMDK2410->Project Specific Files, 选择Project.bib,然后在里面贴加以下东西:

MODULES
;  Name            Path                                           Memory Type
;  --------------  ---------------------------------------------  -----------
   ;dm9000.dll      $(_FLATRELEASEDIR)\dm9000.dll                     NK       SH

  这里的NAME表示是你的DLL名称,路径表示你放的DLL的位置,内存表示是和NK一起进入到内存中,SH表示和系统一起起来,并且是可见的文件形式。这里是以dm9000.dll为例说明了一下

如果你的DLL和设备硬件有关系,比如是设备驱动程序,那么你需要分配中断号,内存基地址,总线号,启动方式这些资源,以便驱动程序(DLL)来读取这些参数,因此修改Project.reg工程注册表。
贴加以下东西(以DM9000.dll为准):

;=============Start of DM9000A================

[HKEY_LOCAL_MACHINE\Comm\DM9CE]
   "DisplayName"="DM9000 ISA Fast Ethernet Adapter"
   "Group"="NDIS"
   "ImagePath"="dm9000.dll"

[HKEY_LOCAL_MACHINE\Comm\DM9CE\Linkage]
    "Route"=multi_sz:"DM9CE1"

[HKEY_LOCAL_MACHINE\Comm\DM9CE1]
    "DisplayName"="DM9000 ISA Fast Ethernet Adapter"
     "Group"="NDIS"
     "ImagePath"="dm9000.dll"

 [HKEY_LOCAL_MACHINE\Comm\Tcpip\Linkage]
      "Bind"="dm9pci1"

[HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms]
   "BusNumber"=dword:0
   "BusType"=dword:1   ;ISA BUS
      "XmitBuffer"=dword:20
      "RecvBuffer"=dword:20
   "IoAddress" =dword:A4000300  ;nGCS2,Note /Kernel/HAL/ARM/Map.a 
      "IrqNumber"=dword:1F  ;IRQ = FIRMWARE+15=31,Note INC/Oalintr.h
      "SysIntr"=dword:1F

[HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms\TcpIp]

 "EnableDHCP"=dword:1
       "UseZeroBroadcast"=dword:0
        "DefaultGateway"="192.168.1.1."
        "IpAddress"="192.168.1.22."
        "Subnetmask"="255.255.255.0"
         "DNS"="192.168.1.1"
         "WINS"="192.168.1.1"

;==========END DM9000A===================

如果你的DLL仅仅是一个应用程序的封装形式,不需要分配硬件资源,那么不需要修改Project.reg。

然后Platform Builder IDE->菜单Build->MakeImage(记得千万不要Build或者Rebuild,否则你就要重新来一遍)到此得到的NK.bin就包含了DLL.这样你就可以调用DLL的资源了
详细的说明,大家可以参考MSDN的文档