串口打印信息的奇怪问题

遇到的问题:

 

自己解决加入串口打印信息碰到了郁闷的事情。
刚开始,我只想把C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/SERIAL/COM_MDD2编译成debug版本,来打印信息的。
我采用了如下方法:
第一种:
将下面这句代码加入到驱动所在目录中的sources文件中即可:
CDEFINES=$(CDEFINES) -DDEBUG
第二种


#undef DEBUGMSG
#define DEBUGMSG(x,s) NKDbgPrintfW s

这样这个驱动文件里的所有调试信息都会打印出来,并且不理会DebugZone的设置。


没有想到照样没有输出信息,真是神了,而且串口编译出来确实可用的。并且以前第二种方法我在BSP的驱动下确实可行的。

后来我干脆重新建立工程,把整个NK都编译成debug,很多启动信息,但是就是没有C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/SERIAL/COM_MDD2的信息,真是气人啊。
后来发现这个DEBUGMSG和RETAILMSG都是使用NKDbgPrintfW 实现的,我直接使用NKDbgPrintfW 放在DLL入口也不行。
怎么回事啊,很是郁闷,大家来说说咋回事呢?

 

 

 

解决的办法:
我刚才把原来的工程删除了,留下个工程模板
并且在串口的MDD.c中加上
//------------add 2009-02-11-------
#define DEBUG 1

#include <dbgapi.h>

#undef  DEBUGMSG
#define DEBUGMSG(x,s) NKDbgPrintfW s //还是这个牛B,编译的工程非常小。以后就这么干了。

然后以build and sysgen方式编译整个工程,没有想到这次居然出来了。
难道是这个设置SHIP_BUILD这个环境变量为0起了作用?
现在慢慢看着先了。

如果修改一点点public下的代码就要整个build and sysgen方式编译那太不厚道了吧。
等下试试,用驱动调试助手来调试,一定很有意思。

 

原因分析:

    ,突然想起这个MDD中断的事情,无意间意识到这个MDD线程启动是靠PDD线程来带动的,其实这样已经获得了成功了。

只是我一直相信网上大家的文章介绍,陷入了 泥塘。其实这个PDD的线程已经完成调用MDD的功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值