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

按照以下步骤操作:

 

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的文档

你可能感兴趣的:(如何将自己的生成的DLL写入到WINCE内核中)