cn_silicon
驱动牛犊
驱动牛犊
  • 注册日期2006-08-19
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望54点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
阅读:2667回复:7

大虾过来看看阿 wince 串口驱动加载问题

楼主#
更多 发布于:2007-10-18 16:22
我在 wince 下注册表的HKLM\drivers\buildin\serials 键下设定值如下:
devicearrayidex    128
dll                             ms2_serial.dll
iclass                      {cc5195ac-b...}
irq                            22
membase              1074790400
memlen                  64
order                       0
prefix                      COM
sysyintr                   29


通过跟踪打印log 发现  系统并没有调用  COM_Init()
但是却调用了ms2_serial.cpp的 CSerialPDD * CreateSerialObject()

是不是驱动程序加载 不需要从COM_Init()
作为入口阿?
高手指点下
buaadallas
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2007-10-18
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望47点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-10-18 16:45
你查查是CreateSerialObject是被哪个函数调用的。
cn_silicon
驱动牛犊
驱动牛犊
  • 注册日期2006-08-19
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望54点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-10-18 16:58
谢谢先
被 Cserpdd.cpp 的SerInit()调用,但是我在里面加了log却没有打印出来,不知道为什么
SerInit(
       ULONG   Identifier, // @parm Device identifier.
       PVOID   pMddHead,   // @parm First argument to mdd callbacks.
       PHWOBJ  pHWObj      // @parm Pointer to our own HW OBJ for this device
       )
{
    RETAILMSG(1, (TEXT("wfq-----serpddcm==cserpdd.cpp--> SerInit(Identifier=%d)\r\n"),Identifier));//wfq for tst

    DEBUGMSG (ZONE_CLOSE,(TEXT("+SerInit, 0x%X\r\n"), Identifier));
    CSerialPDD * pSerialPDD = NULL;
    if (pHWObj) {
        DWORD dwIndex= pHWObj->dwIntID;
        pHWObj->dwIntID = 0;
    RETAILMSG(1, (TEXT("wfq-----serpddcm==cserpdd.cpp-->will call CreateSerialObject(Identifier=%d)\r\n"),Identifier));//wfq for tst

        pSerialPDD = CreateSerialObject((LPTSTR)Identifier,pMddHead, pHWObj,dwIndex);
    }
我用的是pxa270平台
。。。。
}
我安装PB时候用的是 retail方式
cn_silicon
驱动牛犊
驱动牛犊
  • 注册日期2006-08-19
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望54点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-10-18 17:00
CSerialPDD * CreateSerialObject(LPTSTR lpActivePath, PVOID pMdd,PHWOBJ pHwObj, DWORD DeviceArrayIndex)
{
    CSerialPDD * pSerialPDD = NULL;
    RETAILMSG (TRUE, (TEXT("wfq----ms2_serial.cpp--> CSerialPDD * CreateSerialObject(DeviceArrayIndex=%d) \r\n"), DeviceArrayIndex));//wfq tst
。。。
}
打印函数应该没有问题,因为wfq----ms2_serial.cpp--> CSerialPDD * CreateSerialObject(DeviceArrayIndex=xx已经打印出来了
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-19 08:01
应该是加了调试信息的代码没有被编译,把那些代码与你现在的文件一起编译就能出来了.
学海无涯
cn_silicon
驱动牛犊
驱动牛犊
  • 注册日期2006-08-19
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望54点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-19 09:06
谢谢microsun   但是我采用的是  
在 WM602\BuildScripts\WPC_MAINSTONEIII_Retail2\BaseOSEnv.bat  键入bldsdmem
bldstk    bldbt  bldcsp
然后执行
WM602\BuildScripts\WPC_MAINSTONEIII_Retail2\BuildAll.bat   命令

这样Cserpdd.cpp 都不能编到么/
我先改错一个代码试一试
cn_silicon
驱动牛犊
驱动牛犊
  • 注册日期2006-08-19
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望54点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-10-19 15:57
通过改代码发现 public\common\oak\drivers\serial\serpddcm\Cserpdd.cpp 的SerInit()没有被调用。该文件都没有编,这样就奇怪了,除此之外整个程序都没有地方调用CreateSerialObject
。这究竟是怎么回事情啊,感觉就像闹鬼一样
驱动程序没有理由不掉用com_init 啊,
cn_silicon
驱动牛犊
驱动牛犊
  • 注册日期2006-08-19
  • 最后登录2009-02-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望54点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-10-20 19:33
搞定!
原来驱动还是通过dllentry进入  com_init也被加载。
是我这边的lib连接有问题!没有正确联上~

谢谢microsun 和buaadallas    
游客

返回顶部