打印
[STM32F1]

有SWO测试能用的例子吗?

[复制链接]
1786|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z_no1|  楼主 | 2016-8-17 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我找了JLINK官方的例子,在板上试了可以,然后压缩打包后,今天拿出来用,就停在
void SWO_PrintChar(char c) {
  //
  // Check if ITM_TCR.ITMENA is set
  //
  if ((ITM_TCR & 1) == 0) {
    return;
  }
  //
  // Check if stimulus port is enabled
  //
  if ((ITM_ENA & 1) == 0) {
    return;
  }
  //
  // Wait until STIMx is ready,
  // then send data
  //
   while ((ITM_STIM_U8 & 1) == 0);
  ITM_STIM_U8 = c;
}


while ((ITM_STIM_U8 & 1) == 0);不动了。
有知道如何解决的吗?
沙发
mmuuss586| | 2016-8-17 12:36 | 只看该作者
ITM_STIM_U8
那你看下这里哪里定义的,在做哪些操作,为什么没执行,找找原因,总能找到的

使用特权

评论回复
板凳
icecut| | 2016-8-17 12:58 | 只看该作者
swo 调试用2根线,加输出是不是用三根线?记不清了....你要确认的东西有点多

使用特权

评论回复
地板
z_no1|  楼主 | 2016-8-17 13:53 | 只看该作者
SWO使用时要不要使能或初始化啊?有的代码里有初始化的代码,反正没效果。jlink官方的就上面的简单几行,以前测试是通过的。能看到数据。

使用特权

评论回复
5
z_no1|  楼主 | 2016-8-17 14:33 | 只看该作者
试了一下,STLINKII可以,JLNK8不行,估计是软件版本太低?

使用特权

评论回复
6
z_no1|  楼主 | 2016-10-18 11:50 | 只看该作者
试了很久,按上面的会有时能发送,有时不能发送,按STM32F10XXX参考手册的P749,跟踪引脚也是需要设置的。
设了以后就一直稳定输出了。

  DBGMCU->CR = DBGMCU->CR & ~((uint32_t)3<<6);
   DBGMCU->CR = DBGMCU->CR | ((uint32_t)1<<5);

使用特权

评论回复
7
gowow| | 2016-10-18 12:31 | 只看该作者
用RTT吧,jlink-OB也能用,又不用多接swo线,很方便

使用特权

评论回复
8
z_no1|  楼主 | 2016-10-18 13:43 | 只看该作者
怎么用呢?给个链接?

使用特权

评论回复
9
z_no1|  楼主 | 2016-10-18 15:33 | 只看该作者
算了,不折腾了,看了下,RTT只有JLINK支持,STLINK不支持。那就不用了,反正我觉得SWO的速度能满足我的需求了,我就是用它打印出错信息而已。

使用特权

评论回复
10
z_no1|  楼主 | 2016-11-18 17:19 | 只看该作者
在使用SWO的过程中,发现会丢数据,一般是输出字符串的开始丢失。如果把swo设置里的prescaler 设置低点,会好点,我设到了输出始终0.75M,但有时还是丢.要把PC SAMPIING的 prescaler 设为最低 64×1,然后使能periodic period 算出来的时间是888.0ns,等于采样频率 1.12M,host buffer size 我设为了1M.基本不丢数据了。

使用特权

评论回复
11
z_no1|  楼主 | 2016-11-21 11:58 | 只看该作者
又试了一下,用JLINK V8+jlink440配MDK474,不丢数据,但在2进制模式下隔1秒左右有0x00,或0x08的数据出来,使得终端模式前面不对齐,
用stlinkii的自带软件和MDK都不会有这个问题。回头找JLNKK V9试下。

使用特权

评论回复
12
z_no1|  楼主 | 2016-11-23 21:53 | 只看该作者
买的JLINK V9.4就不需要做这些设置,默认也不丢数据了。

使用特权

评论回复
13
z_no1|  楼主 | 2017-3-8 22:45 | 只看该作者
有对RTT和SWO做对比测试,不是很完全,
SWO 要占用一个管脚,这样SPI3就不能用了,RTT不用,
RTT要占用默认1K 字节的RAM,SWO不用。
RTT不适合用在IAP模式,就是一个程序跳转到另一个程序的模式,(或者是我不会),SWO可以用。
RTT占用CPU小,SWO相对多,不过都不是太多。
RTT只能用在JLINK下,SWO其他的仿真器也可以用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

2644

帖子

10

粉丝