九鼎创展论坛

标题: X210_II 的Wince6.0 Debug 串口使用总结 [打印本页]

作者: LinkHS    时间: 2013-2-21 09:36
标题: X210_II 的Wince6.0 Debug 串口使用总结
首先感谢名为“ARM”的QQ群管理员,在他耐心的指导下,解决了我的问题。
1. 在wince中,可以用如下的3个函数打印调试信息,详细信息如下:
NKDbgPrintfW(..)函数一般只在OAL中使用,可以直接从串口中打印出信息,不受编译选项的影响。
DEBUGMSG(..)函数只有在工程在Debug模式下编译以后,才会打印出信息来。如果是在Release模式下编译的,就不会打印信息出来。
RETAILMSG(..)函数在Debug模式下和Release模式下编译都会打印出调试信息,但是如果你在工程的属性中的"Build option"中选择了"Enable ship build",那么RETAILMSG函数就不会打印信息了。

所以我们一般选择RETAILMSG 函数来输出信息。


2. 要使用Debug 串口,要在源码中启动这个串口,我们以板子上的USART0为例,说明要修改的地方。
(1)在WINCE600\platform\smdkv210的SMDKV210.bat 文件要加入:set BSP_DEBUGPORT=SERIAL_UART0
这样告诉内核你要使用SERIAL_UART0 作为板级的调试串口。
(2)在 WINCE600\platform\smdkv210\src\common\dbgserial的Dbgserial.c文件中加入:
#define DEBUG_PORT  DEBUG_UART0
这句话在下面的流程分析中起作用。


3. 我们来分析一下内核是如何调用这个串口输出信息的。
(1)首先启动时候在 WINCE600\platform\smdkv210\src\oal\oallib的Init.c 文件中的InitializeCLKGating 函数里开启了UART0的时钟:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Application%20Data/youdao/ynote/images/2DEF39606ADB426FB7B76F1DA7C6443C/clipboard.png
(2)在WINCE600\platform\smdkv210\src\common\dbgserial 的dbgserial.c 文件中OEMInitDebugSerial 函数里初始化了ARM芯片串口的相关寄存器。输出函数调用此文件中的OEMWriteDebugByte 函数。

附:在Platform\smdkv210\cesysgen\filesPlatform\smdkv210\files 目录都存Platform.bib Platform.reg Platform.dat Platform.db 这四个文件。我们在VS2005中修改的都是 Platform\smdkv210\files 目录下的,当编译nk.bin文件时,wince会把这4个文件中无用的环境变量删除,然后拷贝到Platform\smdkv210\cesysgen\files 目录下,所以Source Insight 工程可以不加此目录下的文件。




作者: ARM    时间: 2013-2-25 16:43

作者: 鹏宇    时间: 2013-3-21 22:49
将串口0 作为用户端口设置,貌似除了在SMDKV210.bat 文件注释set BSP_DEBUGPORT=SERIAL_UART0后,在串口驱动里还要注释些代码吧
作者: 绣恩沐    时间: 2020-9-23 16:26
经验啊... 向楼主学习












http://www.topjianzhu.com
http://www.topjiao.com
http://www.topjiaocai.com
http://www.topjiaoche.com
http://www.topjiaocheng.com
http://www.topjiaotong.com





欢迎光临 九鼎创展论坛 (http://bbs.9tripod.com/) Powered by Discuz! X3.2