九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 2274|回复: 2

X210_II 的Wince6.0 Debug 串口使用总结

[复制链接]
发表于 2013-2-21 09:36:40 | 显示全部楼层 |阅读模式
首先感谢名为“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 工程可以不加此目录下的文件。



回复

使用道具 举报

发表于 2013-2-25 16:43:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2013-3-21 22:49:54 | 显示全部楼层
将串口0 作为用户端口设置,貌似除了在SMDKV210.bat 文件注释set BSP_DEBUGPORT=SERIAL_UART0后,在串口驱动里还要注释些代码吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2019-9-20 13:38 , Processed in 0.106683 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表