Wince将Public和Private下的代码移植到BSP,快速编译Public和Private下的代码

         有时候在调试驱动或是学习驱动的过程发现源码在Public下,而这部分又不能乱动。同时对于Private下的代码更是如此了。如果能将这部分代码移植到自己的BSP下岂不是可以随意加入调试信息从而更好的掌握代码的实现机制,也可以自己加些功能什么的也不用担心Private或是Public下的内容被改掉。
那么就来看看如何做吧。首先看如何把Public下的驱动移植到BSP去:
将Public下的驱动移植到BSP下比较容易,实际上PB也提供了相关的工具:Sysgen_capture(参考MSDN:Cloning the Microsoft Public Common Code)。那么如何来用这个工具呢? 下面就以SDMemory为例子来介绍一下:首先把D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\SDCARD\SDCLIENTDRIVERS下的SDMEMORY文件夹拷贝到<Platform>\SRC\DRIVERS\路径下。然后在命令行中设置到该路径下,键入sysgen_capture sdmemory之后回车。那么在该文件夹下出现一个sources.sdmemory打开该文件有如下的设置:
TARGETNAME=sdmemory 
TARGETTYPE=DYNLINK 
RELEASETYPE=PLATFORM 
SYNCHRONIZE_DRAIN=1 
DLLENTRY=DllEntry 
DEFFILE=$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\sdmemory.def 
SOURCELIBS= 
TARGETLIBS=\ 
    $(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\sdmemory_lib.lib \ 
    $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \ 
    $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\sdcardlib.lib \ 
    $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\sdbus.lib \ 
    $(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib 
SOURCES=
有了这个以后就可以修改了。根据DEFFILE的设置路径找到这个sdmemory.def把它拷贝到我们的SDMEMORY中,然后把这个DEFFILE的值直接改成sdmemory.def。之后看TARGETLIBS下的东西,可以看到有个sdmemory_lib.lib这个lib就是SDMEMORY下的源码所生成的,所以直接把这个拿掉。在SOURCES下把该目录下的源文件都加上。这样就可以生成sdmemory.dll了,同时也会生成一个同名的lib。如果要使用这个lib使用$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\来设置路径。
通过使用sysgen_capture可以简化我们移植的步骤,它把生成该Dll所需的lib都列出来了。只需要略作修改即可了。如果我们要把Private下的代码移植到BSP下该如何做呢?还是举个例子吧,下面以把FATFS移植到BSP为例来介绍:同样的把
D:\WINCE500\PRIVATE\WINCEOS\COREOS\FSD下的FATFS复制到<Platform>\SRC\DRIVERS\路径下。之后到D:\WINCE500\PUBLIC\COMMON\CESYSGEN路径下打开makefile文件,搜索fatfsd可以找到如下的信息: 
fatfsd::fsdmgr 
        @set TARGETLIBS=$(OWNLIB) $(SG_OUTPUT_OAKLIB)\fsdmgr.lib 
OWNLIB=$(SG_INPUT_LIB)\$@.lib
从这些信息可以看出fatfsd.dll是由fatfsd.lib和fsdmgr.lib生成的。有了这些信息,我们就到BSP下的FATFS目录下打开sources文件,该sources有下面的内容:
WINCEOEM=1 
IMGNODFLTDDK=1 
TARGETNAME=fatfsd 
TARGETTYPE=LIBRARY 
CONDITIONAL_INCLUDES=fakepeg.h pfake.h pcmd.h sys\types.h 
INCLUDES= .. 
SOURCES=\ 
    ..\api.c       \ 
    ..\buffer.c    \ 
    ..\cache.c     \ 
    ..\disk.c      \ 
    ..\fat.c       \ 
    ..\file.c      \ 
    ..\find.c      \ 
    ..\misc.c      \ 
    ..\name.c      \ 
    ..\path.c      \ 
    ..\stream.c    \ 
    ..\streamrun.c \ 
    ..\volume.c 
x86_SOURCES=\ 
    ..\x86\chkstk.asm 
TARGETDEFNAME=fatfsd 
DEFFILE=fatfsd.def 
WINCETARGETFILE0=$(_RELEASELIBDIR)\fatfsd.def 
根据TARGETTYPE看到生成的是个lib。我们把它改成DYNLINK,这样就让它生成dll。同时DEFFILE就直接设为fatfsd.def。由SOURCES下的源文件可以生成fatfsd.lib,还缺一个fsdmgr.lib。那我们就把这个lib用TARGETLIBS的方式把它链进来,这样就OK啦。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SPI(Serial Peripheral Interface)是一种用于设备间通信的串行总线协议。在Windows CE(Wince)操作系统中,SPI驱动是一种控制和管理SPI接口设备的软件模块。下面是关于Wince下SPI驱动的回答: Spi驱动是Wince操作系统中用于控制和管理SPI设备的驱动程序。SPI总线是一种串行通信协议,常用于嵌入式系统中,通过该驱动程序可以实现与其他设备的高速通信。 Wince下的SPI驱动提供了对SPI接口的底层控制和管理功能。它允许操作系统与连接在SPI总线上的外设进行数据交换。SPI驱动负责配置和初始化SPI总线、传输数据、进行中断处理等操作。 Wince下的SPI驱动由操作系统提供,并且可以通过SPI函数库进行调用。应用程序可以通过调用特定的API函数与SPI驱动进行交互,并实现与SPI设备的通信。SPI驱动提供了一组API函数,用于设置SPI总线的工作模式、传输数据、控制引脚等。应用程序可以通过这些函数来完成对SPI设备的操作。 SPI驱动在Wince中的使用具有很高的灵活性和可扩展性。可以通过配置SPI驱动参数来适配不同的SPI设备。同时,SPI驱动还支持中断处理,可以实现实时响应和高效的数据传输。 总之,Wince下的SPI驱动是一种用于控制和管理SPI接口设备的软件模块,它提供了与SPI设备进行高速通信的功能,并具有灵活性和可扩展性,可以满足各种不同的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值