咨询一下STM32的printf输出到SWD口

发布: 2010-1-14 19:23 | 作者: simonqian | 来源: StmFans思蜕盟 OPELC 自由电子联盟

一个欧洲的Versaloon用户提出一个很有意思的调试方法,据说在IAR下,可以吧printf的输出信息重定向到SWD接口,调试时直接可以在IDE的界面中显示。
有人知道是怎么实现的吗?
simonqian (2010-1-14 20:49:09)
看了一下,貌似是可以使用SWO脚来实现这个功能
binglin (2010-1-14 23:38:55)
异步跟踪输出脚(TRACESWO)和TDO是复用的,它只能在SWD模式下使用,关键是printf的输出信息重定向到异步跟踪输出脚(TRACESWO),也就是说TRACESWO怎样才能使用。


SWO.jpg

binglin (2010-1-14 23:59:40)


TRACESWO.jpg




TRACECLKIN.jpg



29.17.10 配置的例子
● 设置Debug Exception and Monitor Control 寄存器的TRCENA位;
● 在TPIU Current Port Size寄存器中写入期望值(默认是0x1,指示端口长度为1bit);
● 向TPIU Formatter and Flush Control寄存器中写入0x102(默认值);
● 写TPIU Select Pin Protocol寄存器,选择同步或异步模式。例如写0x2选择NRZ编码的异步模式(类似URAT);
● 向DBGMCU Control寄存器写入0x20(置位IO_TRACEN),为异步模式分配TRACE的I/O口。此时TPIU将发出一个同步包(FF_FF_FF_7F);
● 配置ITM并且写ITMStimulus寄存器输出数据。
simonqian (2010-1-15 02:49:53)
已经确认,软件实现并不复杂,实现一个putc,吧数据赋值给SWO的相关寄存器就可以了。
调试工具也只是需要把SWO接到UART的RX脚就可以了,实现一个简单的CDC就能实现这个功能。
binglin (2010-1-15 16:08:52)
不过这个功能似乎意义也不是很大。
simonqian (2010-1-16 19:30:46)
呵呵,还是有一些意义的,IAR和MDK都有这个功能,调试时直接在GUI中显示实时星系信息
trinove (2010-1-16 20:10:24)
调试大一点的软件的时候,这个功能应该还是很有意义的
binglin (2010-1-16 21:51:17)

QUOTE:

已经确认,软件实现并不复杂,实现一个putc,吧数据赋值给SWO的相关寄存器就可以了。
调试工具也只是需要把SWO接到UART的RX脚就可以了,实现一个简单的CDC就能实现这个功能。 ...
simonqian 发表于 2010-1-15 02:49
明白了,你的意思是说把SWO接到UART的RX脚,然后在串口调试器或MDK或IAR来查看信息而不占用原来的USART口?
simonqian (2010-1-18 01:40:50)
是的,可惜偶的VersaloonRC5版本不支持这个了
正式版本中会增加这个功能,目前已经实现的功能包括STM32_JTAG/SWD调试,STM32_ISP下载,STM8_SWIM下载,STM8的调试功能还在和ST谈。之后会增加STM32的SWO的Trace功能。

为什么这里的论坛还能开?
不是所有的论坛,包括技术论坛都要关闭吗?