分类:
2010-03-18 21:36:10
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的文档