wince串口打印信息的屏蔽与打开

2440BSP

如果想某个驱动打印debug的信息,那么请这么做:

第一种:
将下面这句代码加入到驱动所在目录中的sources文件中即可:
CDEFINES=$(CDEFINES) -DDEBUG
第二种


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

这样这个驱动文件里的所有调试信息都会打印出来,并且不理会DebugZone的设置。 
      如果想屏蔽某个驱动的所有打印信息怎么办?在驱动前面加入如下宏定义即可

      

#define SHIP_BUILD  1

#ifdef SHIP_BUILD

#define ERRORMSG(cond,printf_exp) ((void)0)
#define RETAILMSG(cond,printf_exp) ((void)0)
#define DEBUGMSG(cond,printf_exp) ((void)0)
#define DEBUGLED(cond,parms) ((void)0)
#define DBGCHK(module,exp) ((void)0)
#define DEBUGCHK(exp) ((void)0)
#define DEBUGREGISTER(hMod) ((void)0)
#define RETAILREGISTERZONES(hMod) ((void)0)

#endif

 

效果很好,只是编译会多几个警告,不过这个不影响使用的。哈哈,以后就这么干了。

 

 

 

 

======================================================================================

*************************************************************************************************

======================================================================================

 

不管在WinCE5.0还是在WinCE6.0中,我们在调试驱动或者应用的时候都会用到打印函数。在驱动里面,我们可能会用DEBUGMSG(..),RETAILMSG(..),还有NKDbgPrintfW(..)。在我们使用这些打印函数调试我们的程序之前,我们需要实现串口打印功能。

在WinCE的BSP中,如果想调用DEBUGMSG(..)或者RETAILMSG(..)来从串口打印信息,必须在我们的BSP中的OAL层找到debug.c,在这个文件里面实现下面的4个函数:

void OEMInitDebugSerial(void) :   初始化用于打印信息的串口

int OEMReadDebugByte (void):      从串口读一个byte,出错时返回OEM_DEBUG_COM_ERROR;没有数据时返回OEM_DEBUG_READ_NODATA

void OEMWriteDebugByte(BYTE ch):   写一个byte到串口

void OEMWriteDebugString(unsigned short* str):写一个字符串到串口,这个函数其实就是通过调用OEMWriteDebugByte(..)实现的。

实现了上述的4个函数,就可以通过串口打印来调试程序了。一般这4个函数在OAL中的debug.c中实现。
在BSP中,我们一般会用3个函数来实现打印:DEBUGMSG,RETAILMSG,NKDbgPrintfW。简单介绍一下:
 
NKDbgPrintfW(..)函数一般只在OAL中使用,可以直接从串口中打印出信息,不受编译选项的影响。
 
DEBUGMSG(..)函数只有在工程在Debug模式下编译以后,才会打印出信息来。如果是在Release模式下编译的,就不会打印信息出来。
 
RETAILMSG(..)函数在Debug模式下和Release模式下编译都会打印出调试信息,但是如果你在工程的属性中的"Build option"中选择了"Enable ship build",那么RETAILMSG函数就不会打印信息了。

==========================================================================

在 debug.c中将#define NODEBUG 1 //1改为0,然后将该文件中所有函数中的UART1-BASE改为UART0-BASE,重新编译,下载就可以了

-------------------------------------------------------------------------------------------------------------------------------------

在CSDN上看到很多网友反应友善的2440串口无法输出调试信息,为这个问题我和同学晕了大半天,按照网上说的方法做还是不行,最后在一篇博客上看到了关键的一步,结果串口好了,下面是正解:

1.首先修改platform.reg 屏蔽串口0的注册表信息。

2、其次在目录 WINCE500/PLATFORM/mini2440/Src/Inc中找到options.h

 找到

view plaincopy to clipboardprint?
// --- by customer  
#define KITL_NONE  
//#define KITL_SERIAL_UART0  
//#define KITL_SERIAL_UART1  
//#define KITL_USBSERIAL  
//#define KITL_ETHERNET 
// --- by customer
#define KITL_NONE
//#define KITL_SERIAL_UART0
//#define KITL_SERIAL_UART1
//#define KITL_USBSERIAL
//#define KITL_ETHERNET

然后 解除对#define KITL_SERIAL_UART0的屏蔽即可

另一种方法是:进入目录WINCE500/PLATFORM/mini2440/Src/Kernel/Oal,找到Debug.c

对代码修改如下

view plaincopy to clipboardprint?
#if defined(KITL_SERIAL_UART0)  
#define BSP_DEBUG_UART0  
#elif defined(KITL_SERIAL_UART1)  
#define BSP_DEBUG_UART1  
#endif  
 
#define BSP_DEBUG_UART0//lqy_rain add  
 
#undef BSP_DEBUGPORT  
#if defined(BSP_DEBUG_UART0) || defined(BSP_DEBUG_UART1)  
#define BSP_DEBUGPORT  
#endif 
#if defined(KITL_SERIAL_UART0)
#define BSP_DEBUG_UART0
#elif defined(KITL_SERIAL_UART1)
#define BSP_DEBUG_UART1
#endif

#define BSP_DEBUG_UART0//lqy_rain add

#undef BSP_DEBUGPORT
#if defined(BSP_DEBUG_UART0) || defined(BSP_DEBUG_UART1)
#define BSP_DEBUGPORT
#endif

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dragonliabc/archive/2010/04/20/5505234.aspx

试了一下,有问题。其实还需要改一下: 

在SRC->INC->bsp_cfg中加上
#define BSP_UART0_ULCON        0x03                // 8 bits, 1 stop, no parity
#define BSP_UART0_UCON          0x0005              // pool mode, PCLK for UART
#define BSP_UART0_UFCON        0x00                // disable FIFO
#define BSP_UART0_UMCON        0x00                // disable auto flow control
#define BSP_UART0_UBRDIV        (S3C2440A_PCLK/(115200*16) - 1)


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/menuconfig/archive/2010/09/20/5896364.aspx

 

但是,出现了多个警告。先不管。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值