您的位置:首页 > 编程语言

BSP下生成Public下的usbser代码(使用sysgen_capture命令)

2011-03-08 17:01 447 查看
前段时间因为工作需要,需要将pubic下生成lib的代码重新生成Dll文
件,由于直接修改Public下的文件编译要花很长的时间,因此想到把它Clone到BSP包下编译,这样既节约时间,又方便修改。下面以Clone
C:/WINCE600/PUBLIC/COMMON/OAK/DRIVERS/USB/CLASS/USBSER下的代码为例介绍具体的实现过程:

     PS:USBSER是微软提供的可以直接使用的USB转串口的设备驱动程序(本人测试过PL2303串口芯片是可行的)。

    平台:s3c6410+Wince6.0

   

     1、复制Public下的USBSER整个文件夹到C:/WINCE600/PLATFORM/SMDK6410/Src/Drivers/Usb;

     2、在PB下打开命令行工具,并切换路径到当前USBSER文件夹所在的路径,使用命令 sysgen_capture -p common usbser 
转换完成后,将在当前目录下会生成sources.xxx的文件,由于我们只需要生成usbser的目标文件,因此可以将其他sources.xxx文件删除。

     3、下面的工作就是如何生成dll文件:

           实现方式一:(使用LIB生成DLL)

          (1)在当前目录下新建一个文件夹XXX(USBSERDLL),把sourcess.usbser拷贝到该新建文件夹并重命名为sources;

          (2)打开该sources,将DEFFILE宏修改为DEFFILE=$(TARGETNAME).def;

          (3)从USBSER文件夹将usbser.def文件和makefile文件复制一份到USBSERDLL,即USBSERDLL文件夹中现在只有Makefile、sources和.def文件;

          (4)在USB文件夹下的dir文件中,加入USBSERDLL、USBSER的编译选项信息;

          (5)在USBSER的sources文件中删除WINCETARGETFILE0=$(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/$(TARGETDEFNAME).def;

          (6)build Usb文件夹,把编译报错的头文件(主要是在pubic下未包含的文件,该例子主要是缺少usbserv.h、usbinstl.h和usbclientfunc.h)复制到USBSER文件夹下,rebuild Usb,OK!

           实现方式二:(直接生成DLL)

         
(1)打开USBSER下的sources文件,将TARGETNAME修改为TARGETNAME =
USBSER(DLL的名称,不修改也可,主要是以前是USBSER_LIB以免引起误解),同时将TARGETTYPE修改为动态链接库
TARGETTYPE=DYNLINK;

          (2)删除WINCETARGETFILE0=$(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/$(TARGETDEFNAME).def;

           (3)打开生成的sourcess.usbser,拷贝其中的DLLENTRY=_DllMainCRTStartup到USBSER下的sources文件,同时拷贝SOURCELIBS和TARGETLIBS下的内容到sources文件;

          (4)删除SOURCELIBS和TARGETLIBS下
要连接的usbser相关的静态库或res(因为现在是直接生成DLL不需要了),这里即是删除$(_PUBLICROOT)/common/oak
/lib/$(_CPUINDPATH)/usbser_lib.lib /;

          (5)将TARGETLIBS下的$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/com_mdd2.lib 复制到SOURCELIBS下,否则会报error LNK2001:的错误;

          (6)在USB文件夹下的dir文件中,加入USBSER的编译选项信息;

          (7)build Usb文件夹,把编译报错的头文件(主要是在pubic下未包含的文件,该例子主要是缺少usbserv.h、usbinstl.h和usbclientfunc.h)复制到USBSER文件夹下,rebuild Usb,OK!
 

     这里适合于对USBSER文件夹下的源文件进行比较小的修改,如果要对这个驱动的源码进行比较大的或全面的修改,建议将SOURCELIBS和TARGETLIBS下涉及到的lib库对应的源文件全部拷贝出来,重新编译生成所需的动态库,具体可参考以下网址:http://blog.csdn.net/gooogleman/archive/2010/01/15/5192356.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息