搜索
bottom↓
楼主: gwnpeter

开贴研究:JLINK RTT,完爆各种printf形式,从此swo是路人

  [复制链接]

出0入0汤圆

发表于 2014-9-21 09:13:27 | 显示全部楼层
恭喜,感谢分享

出0入9汤圆

发表于 2014-9-22 14:54:09 | 显示全部楼层
在JTAG模式下调试A8内核的芯片。这个功能用不了。

出0入0汤圆

发表于 2014-9-22 15:35:39 | 显示全部楼层
J_link V7也能够实用,printf以外还有哪些好的功能?要让MDk处于调试状态,感觉不是很方便    不如 STMStudio 只要连上stlink 可以监测内存变量

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-23 08:19:53 | 显示全部楼层
强大的帖子,学习一下

出0入0汤圆

发表于 2014-9-24 11:12:27 | 显示全部楼层
gwnpeter 发表于 2014-9-11 00:56
直接运行rttclient还真的不行。不过搞定了JLinkRTTLogger,需要修改官方源代码

也不能说是修改官方代码, ...

你好,想问下我装的最新的jlink4.91a,里怎么找不到JLinkRTTLogger.exe呢,这个难道还是特定版本才有的?

出0入0汤圆

发表于 2014-9-24 13:25:41 | 显示全部楼层
本帖最后由 lxhu 于 2014-9-24 13:34 编辑
sokou 发表于 2014-9-22 14:54
在JTAG模式下调试A8内核的芯片。这个功能用不了。


Supported Targets
RTT can be used with any target, which is supported by J-Link and allows background memory access while the target is running.
Core        RTT
Cortex-M0, Cortex-M1, Cortex-M3, Cortex-M4        Yes
RX100, RX200, RX600        Yes




出0入0汤圆

发表于 2014-9-26 10:07:42 | 显示全部楼层
之前cortex-m0上试了成功了,今天想在arm9上式,怎么也不成功,一打开jlinkrtt.exe,IAR下地址数据就有问题,没法运行。看了segger介绍,原来rtt只支持cortex-m啊。可惜了

出0入0汤圆

发表于 2014-9-28 14:58:01 | 显示全部楼层
本帖最后由 tyqman 于 2014-9-28 15:00 编辑

在这里,我也分享一下自己将jlink V8 升级成4.9e时遇到的问题(参考67,72楼,谢谢两位)。

由于我之前没有自己亲自尝试过,所以自升级过程中遇到一些麻烦-----在刷老的固件(这个固件是网上down的)后,自己的S/N 就变成了805306163, 在j-link commader 里面执行 exec setsn = XXXXXXXX 时,总是报错,提示说不能重写 sn。后来在网上查了下,解决办法(固件需要稍作改动)如下:
        首先使用winHEX( 或 UltraEdit )打开 V8.bin 固件,并且找到以0xFF00为起始地址的4个Bytes并将其修改为0xFF FF FF FF,并在下面不远的地方找到GDBFull,其相对应的十六进制的代码47 44 42 46 75 6C 6C 改成47 44 42 46 55 4C 4C (将小写的改成大写的,目的是跳过GDBFull)并且保存此修改好的固件文件.

        然后重新重复之前的动作,执行 exec setsn = XXXXXXXX  成功。

希望给之前没弄过的,正好遇到和我一样问题的朋友一个参考,节省一些时间。。。

出0入0汤圆

发表于 2014-9-29 22:54:44 | 显示全部楼层
本帖最后由 tyqman 于 2014-9-29 22:57 编辑
shangdawei 发表于 2014-9-11 10:58
//
// Allocate buffers for channel 0
//


看了一些RTT例子,但自己RTT多次 怎么也没成功。
1、目前还没有搞清楚,什么情况下需要选择 microLib, 什么情况下不勾选microLib。(我的IDE keil, MCU 内核 cortex M3, 无SWO).大神可否提示一二?

2、大神可否指导一下啊,目前官网 RTT 代码貌似更新了(0925),能否帮忙瞧瞧,或写个详细点的教程,供菜鸟们参考下。。。。

3、还有关于 trace LOG 到文件的,目前正是调试的需要啊,在非调试模式下,到底咋弄啊,弄了两天,发现 RTT client 和 RTT log 都没成功过。。。郁闷啊!

出0入0汤圆

发表于 2014-9-30 00:06:04 | 显示全部楼层
本帖最后由 shangdawei 于 2014-9-30 00:11 编辑
tyqman 发表于 2014-9-29 22:54
看了一些RTT例子,但自己RTT多次 怎么也没成功。
1、目前还没有搞清楚,什么情况下需要选择 microLib, 什 ...

尝试写个软件用于非调试模式下查看RTT的输出



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-30 08:05:12 | 显示全部楼层
酷哇  这个必须mark

出0入0汤圆

发表于 2014-9-30 08:13:08 | 显示全部楼层
研究的这么深入?

出0入0汤圆

发表于 2014-9-30 08:13:21 | 显示全部楼层
这个方法很好啊,学习

出0入0汤圆

发表于 2014-9-30 10:09:27 | 显示全部楼层
shangdawei 发表于 2014-9-30 00:06
尝试写个软件用于非调试模式下查看RTT的输出

能否介绍一下在工程中 加入RTT 代码的方法?
另外,在RTX OS 能否使用啊?晕,我怎么发不了图片啊?

出0入0汤圆

发表于 2014-9-30 10:18:03 | 显示全部楼层
楼主,你好,现在 RTT 官网的代码更新了,我尝试用你们之前的办法,整了两天,没整出结果。
可否介绍下新代码的方法啊?另外,工程中 是否有使用微库(microLib) 是否有影响。

出0入0汤圆

发表于 2014-9-30 14:25:20 | 显示全部楼层
新版本 SRAM 调试解决方案  : RTT_Implementation_140925.zip

// ******************************* SEGGER_RTT_Conf.h ************************************
//
// Define SEGGER_RTT_IN_RAM as 1
// when using RTT in RAM targets (init and data section both in RAM).
// This prevents the host to falsly identify the RTT Callback Structure
// in the init segment as the used Callback Structure.
//
// When defined as 1,
// the first call to an RTT function will modify the ID of the RTT Callback Structure.
// To speed up identifying on the host,
// especially when RTT functions are not called at the beginning of execution,
// SEGGER_RTT_Init() should be called at the start of the application.
//
#define SEGGER_RTT_IN_RAM                         (1)

// ******************************* SEGGER_RTT.c ************************************
//
// Initialize SEGGER Real-time-Terminal control block (CB)
//
static SEGGER_RTT_CB _SEGGER_RTT = {
#if SEGGER_RTT_IN_RAM
  "SEGGER RTTI",
#else
  "SEGGER RTT",
#endif
  SEGGER_RTT_MAX_NUM_UP_BUFFERS,
  SEGGER_RTT_MAX_NUM_DOWN_BUFFERS,
  {{ "Terminal", &_acUpBuffer[0],   sizeof(_acUpBuffer),   0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }},
  {{ "Terminal", &_acDownBuffer[0], sizeof(_acDownBuffer), 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }},
};


/*********************************************************************
*
*       _Init
*
*  Function description
*    In case SEGGER_RTT_IN_RAM is defined,
*    _Init() modifies the ID of the RTT CB to allow identifying the
*    RTT Control Block Structure in the data segment.
*/
static void _Init(void) {
#if SEGGER_RTT_IN_RAM
  if (_SEGGER_RTT.acID[10] == 'I') {
    _SEGGER_RTT.acID[10] = '\0';
  }
#endif

}

出0入0汤圆

发表于 2014-9-30 14:35:55 | 显示全部楼层
本帖最后由 shangdawei 于 2014-9-30 15:27 编辑

SWD 速度 12 MHZ, 缓冲区为 32 KB, 速度可以达到 234 KB/s



JTAG 速度 15 MHZ, 缓冲区为 32 KB, 速度可以达到 360 KB/s

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-10-1 12:29:52 | 显示全部楼层
本帖最后由 gwnpeter 于 2014-10-1 12:31 编辑
caixiuwen 发表于 2014-9-16 10:59
我只是简单测试了一下printf速度。。。
我用的是JTAG 12MHz。用SWD 4Mhz就不能到29KB/s了。


还有你的分析分析得不怎么好。
SWO经常有大量数据,比如开个PC sampling,连续500KB/s的数据。大量数据都有软件辅助分析,根本不会要撞墙。。。
        再多的话,但是SWO毕竟是专用的,专业的肯定会快点。
UART加一个缓冲,也可以实现CPU占用率低。。。
        环形缓冲区吗,rtt本身就是环形缓冲区,但是uart的发送不需要cpu参与吗?rtt还真的不需要cpu参与
JTAG读目标内存可以到700KB/s,你应该分析一下为啥读RTT的内存只有30KB/s
        不为啥,12Mclk情况下,别人测试的是200K+,毕竟不是连续读取ram,还要处理缓冲区指针呢??!!

最后这个例子举得很不好。
你之前只能用UART只能说明你有工具都不会用。
        真的不好意思,发现自己懂得东西越来越少了.............

发现问题出现后,不慌不忙地接上JLink,打开IAR,勾选Attach to running target,启动调试。目标板不会被打断,更不会复位。这时,可以直接观察系统状态。包括内存、外设状态,和普通调试一样的。
完全没有必要电脑7×24小时接着。。。
        确实,但是我要教会一个现场操作的人懂这个,估计我要吐血...................我需要的是简单的,如果这些事情都是我才能处理,那么获取这一个数据的成本(出差时间成本,出差费用成本,其他商务成本...)估计是10K+

即使你只知道用UART,你也可以实现个缓冲,把LOG存里面,但不立即发送,等待UART收到指定字符或字符串后再启动发送。。。
        谢谢提醒,敝人比较懒,还要加上shell,很多时候就不想搞了........话说这个世界不就是为懒人设计的吗

出0入0汤圆

发表于 2014-10-1 15:17:20 | 显示全部楼层
这东西好

出0入42汤圆

发表于 2014-10-2 19:20:56 | 显示全部楼层
为什么我试的的什么也不打印,我应该从哪查找原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-2 19:34:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-10-3 01:17:26 | 显示全部楼层
厉害,标记学习!

出0入42汤圆

发表于 2014-10-3 10:55:09 | 显示全部楼层
gwnpeter 发表于 2014-10-1 12:29
还有你的分析分析得不怎么好。
SWO经常有大量数据,比如开个PC sampling,连续500KB/s的数据。大量数据都 ...

大侠,可否帮助一下?为什么我的一点反应也也没有,我用的segger是4.92的。

出0入42汤圆

发表于 2014-10-3 19:46:53 | 显示全部楼层
liyang121316 发表于 2014-10-3 10:55
大侠,可否帮助一下?为什么我的一点反应也也没有,我用的segger是4.92的。 ...

搞定了,在RAM中调试的时候除了将相关宏定义成1之外,需要手动输入一个地址(见图划线部分),这个地址是在仿真的时候找到的_SEGGER_RTT的地址。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-3 22:04:15 | 显示全部楼层
好教程~~~~~~~~~~~~~~

出0入0汤圆

发表于 2014-10-3 23:56:19 | 显示全部楼层
li.wen 发表于 2014-9-11 12:03
谢谢,亲测成功!
总结下来简单的几步:
1. 装4.90e的驱动

可以提供老固件嗎?
謝謝。

出0入0汤圆

发表于 2014-10-4 00:02:56 | 显示全部楼层
jarodzz 发表于 2014-10-3 23:56
可以提供老固件嗎?
謝謝。

4.9的安装包可以自己去SEGGER官网下。太大,没有压到包里面!

其余的是刷固件的方法和固件本身

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-4 23:03:44 | 显示全部楼层
li.wen 发表于 2014-10-4 00:02
4.9的安装包可以自己去SEGGER官网下。太大,没有压到包里面!

其余的是刷固件的方法和固件本身 ...

感謝,剛剛試過刷這個firmware後是可以用segger 4.90e 在更新firmware,
但是SN變成-1,如圖,這樣會有問題嗎?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-5 13:25:44 | 显示全部楼层
執行exec setsn=87878787 就可以改變SN為87878787,如圖

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-6 11:18:38 | 显示全部楼层
liyang121316 发表于 2014-10-3 19:46
搞定了,在RAM中调试的时候除了将相关宏定义成1之外,需要手动输入一个地址(见图划线部分),这个地址是 ...

兄台,是否有搞定脱离调试模式的?还有log 搞定了吗?指导下?

出0入12汤圆

发表于 2014-10-6 11:45:43 | 显示全部楼层
tyqman 发表于 2014-10-6 11:18
兄台,是否有搞定脱离调试模式的?还有log 搞定了吗?指导下?

调试模式肯定是不能脱离的,因为其基本原理就是 JTAG 轮询内存的内容。

出0入12汤圆

发表于 2014-10-6 11:46:50 | 显示全部楼层
liyang121316 发表于 2014-10-3 19:46
搞定了,在RAM中调试的时候除了将相关宏定义成1之外,需要手动输入一个地址(见图划线部分),这个地址是 ...

看 map 文件是可以直接知道的,不用再仿真一次。

出0入42汤圆

发表于 2014-10-6 14:10:42 | 显示全部楼层
abutter 发表于 2014-10-6 11:46
看 map 文件是可以直接知道的,不用再仿真一次。

谢啦,知道了,map中看总比我这个好。

出0入42汤圆

发表于 2014-10-6 14:11:15 | 显示全部楼层
tyqman 发表于 2014-10-6 11:18
兄台,是否有搞定脱离调试模式的?还有log 搞定了吗?指导下?

么有啊!时间紧任务重啊!

出0入0汤圆

发表于 2014-10-6 14:59:23 | 显示全部楼层
abutter 发表于 2014-10-6 11:45
调试模式肯定是不能脱离的,因为其基本原理就是 JTAG 轮询内存的内容。

不能脱离吗?楼主的说是可以的哦!

出0入12汤圆

发表于 2014-10-6 15:54:11 | 显示全部楼层
tyqman 发表于 2014-10-6 14:59
不能脱离吗?楼主的说是可以的哦!

你对调试模式的理解是什么?

如果是脱离 MDK 的话,当然可以,如果是脱离 jlink prob 的话,那就要换成其他的 probe。

出0入0汤圆

发表于 2014-10-6 16:34:31 | 显示全部楼层
cddx 发表于 2014-9-13 17:32
刚才试了,这个可能替代swo的printf功能,rtx它还不支持,可能segger的os能支持吧,我没有试过,不能还是多 ...

你是在哪里看到 RTX 还不支持的?可否讨论下?

出0入0汤圆

发表于 2014-10-6 16:37:19 | 显示全部楼层
tyqman 发表于 2014-10-6 14:59
不能脱离吗?楼主的说是可以的哦!

可以不用在debug下用,
只要把J-Link RTT logger 打開設定好,
J-Link RTT clinet 就可以收到 print 的東西了。

出0入0汤圆

发表于 2014-10-6 16:48:33 | 显示全部楼层
jarodzz 发表于 2014-10-6 16:37
可以不用在debug下用,
只要把J-Link RTT logger 打開設定好,
J-Link RTT clinet 就可以收到 print 的東 ...

知道那个 log 到日志文件 怎么弄不?

出0入0汤圆

发表于 2014-10-6 19:05:10 | 显示全部楼层
tyqman 发表于 2014-10-6 16:48
知道那个 log 到日志文件 怎么弄不?

只要指定路徑給他就可以,像我是設為d:\rtt.log
但是我的firmware裡沒有print 到 channel 1,所以log裡不會有任何東西,
但是RTT client 就可以收到 print 到 channel 0 的資料。

出0入0汤圆

发表于 2014-10-6 19:23:41 | 显示全部楼层
给非常感谢,正在学习STM32

出0入0汤圆

发表于 2014-10-8 21:30:27 | 显示全部楼层
不错,支持scanf吗?

出0入0汤圆

发表于 2014-10-21 15:47:16 | 显示全部楼层
为了试验把以前的开发板找出来了,jlink又出现clone的问题,鼓捣了一下午,x

出0入8汤圆

发表于 2014-11-2 17:06:43 | 显示全部楼层
gwnpeter 发表于 2014-9-10 23:24
顶顶.................
教程来了.............

我吧你的固件烧写到我的jlinkv8里面去了,应该是烧写成功了。打开jlink  command也出现和你说的第二点里面的那个界面。

但是我用keil(swd)给板子下载程序的时候提示找不到swd。

这个对keil有没有要求?

jlink驱动也是装的4.9的,keil路劲下也是最新的JLINKARM.EXE。

求解

系统是win7 64

出0入8汤圆

发表于 2014-11-2 17:16:37 | 显示全部楼层
jarodzz 发表于 2014-10-4 23:03
感謝,剛剛試過刷這個firmware後是可以用segger 4.90e 在更新firmware,
但是SN變成-1,如圖,這樣會有問 ...

我打开jinlink  command就出现你图片中的界面    这说明4.9的固件已经烧写成功了么?


但是只要我的jlink通过swd方式和板子连接,再打开jinlink  command就提示no  device  on jtag  chain  也烧不了程序  

还有
jlink  rtt软件在哪个位置  找不到啊

出0入0汤圆

发表于 2014-11-3 15:58:11 | 显示全部楼层
记号 备用        

出0入0汤圆

发表于 2014-11-7 16:21:19 | 显示全部楼层
真是太感谢楼主提供的方法了

出0入0汤圆

发表于 2014-11-10 17:15:52 | 显示全部楼层
标注一下  回头学习一下  JLINK RTT,完爆各种printf形式

出0入0汤圆

发表于 2014-11-11 07:49:01 | 显示全部楼层
回头用我的jlink v9试试

出0入0汤圆

发表于 2014-11-11 09:32:50 来自手机 | 显示全部楼层
好方法,这个方便调试啊!先收藏了!

出0入0汤圆

发表于 2014-11-20 08:45:43 | 显示全部楼层
jlink rtt logger运行不了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-20 12:26:29 | 显示全部楼层
mark,楼主牛

出0入0汤圆

发表于 2014-11-26 10:04:02 | 显示全部楼层
很不错,留爪,仔细看看

出0入0汤圆

发表于 2014-11-26 11:13:38 | 显示全部楼层
很好用,谢谢楼主分享这么好的教程。

出0入0汤圆

发表于 2014-11-26 11:23:39 | 显示全部楼层
楼主给力,又学习了。

出0入0汤圆

发表于 2014-11-26 14:44:08 | 显示全部楼层
果断收藏

出0入0汤圆

发表于 2014-11-26 15:33:55 | 显示全部楼层
湛无双 发表于 2014-9-11 14:53
你要确定在C盘确实有个temp的文件夹,然后里面确实有个文件名为RTT.log才行  对于RTT Loger而言 是不会主 ...

Windows7系统下,不能直接在c盘操作应该是权限问题。新创建的文件,权限比较宽松,所以就能操作了

出0入0汤圆

发表于 2014-11-26 15:42:53 | 显示全部楼层
留名,仔细阅读

出0入4汤圆

发表于 2014-11-26 22:40:22 | 显示全部楼层
本帖最后由 yangpeng012 于 2014-11-26 23:08 编辑

JLINK V8应该也支持的,这样不错,不用买新的了!

出0入4汤圆

发表于 2014-11-26 23:05:29 | 显示全部楼层
gwnpeter 发表于 2014-9-11 00:05
书上说jtag和swd都可以,我只是实验了swd接口

JLinkRTTLogger.exe这个就是专门用来log的,但是还没有搞 ...

“书上说”指的是什么书??

出0入0汤圆

发表于 2014-12-25 16:09:37 | 显示全部楼层
求教成功的各位,
CLIENT没有问题,正常。

按楼主说的,添加通道1的两个数组,以及对应的结构

static char _acUpBuffer  [BUFFER_SIZE_UP];
static char _acDownBuffer[BUFFER_SIZE_DOWN];

static char _acUpBuffer1  [BUFFER_SIZE_UP];
static char _acDownBuffer1[BUFFER_SIZE_DOWN];
//
// Initialize SEGGER Real-time-Terminal control block (CB)
//
static SEGGER_RTT_CB _SEGGER_RTT = {
  "SEGGER RTT",
  SEGGER_RTT_MAX_NUM_UP_BUFFERS,
  SEGGER_RTT_MAX_NUM_DOWN_BUFFERS,
  {{ "Terminal", &_acUpBuffer[0],   sizeof(_acUpBuffer),   0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP },
  { "Log",       &_acUpBuffer1[0],  sizeof(_acUpBuffer1),   0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }
  },
  {{ "Terminal", &_acDownBuffer[0], sizeof(_acDownBuffer), 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP },
   { "Log",      &_acDownBuffer1[0],sizeof(_acDownBuffer1), 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }
  },
};


然后
        while(1)
        {
                SEGGER_RTT_printf(0,"hello ch0\r\n");
                SEGGER_RTT_printf(1,"hello ch1\r\n");

//                SEGGER_RTT_WaitKey();
                for(a=0;a<0xfff0;a++)
                      __nop();               
                led_sh();
        }


下载后重新上电运行,打开LOGGER,  小写stm32f103c8  默认,默认,默认,文件e:\test.log       然后打开client,查看control panel     .      client正常接收数据,panel里面也能看到,  而且client里面显示pro是logger,   d盘下也生成了test.log文件,但是logger里面没反应,panel里通道1也没数据,文件也是0字节。

出0入0汤圆

发表于 2014-12-25 16:21:03 | 显示全部楼层
名字可以随便取么?楼主的panal里面的RTT页chanel里面1是不是有名字? 我的只显示#1, 不像CH0后面还跟了名字terminal

出0入0汤圆

发表于 2014-12-25 17:19:55 | 显示全部楼层
这个不错用得着,学习了,有空试试

出0入0汤圆

发表于 2014-12-25 22:29:00 来自手机 | 显示全部楼层
这个好啊,不顶不行

出50入0汤圆

发表于 2014-12-25 22:49:13 | 显示全部楼层
mark,收藏

出0入0汤圆

发表于 2014-12-26 07:54:33 | 显示全部楼层
留脚印关注

出0入0汤圆

发表于 2015-1-14 16:37:31 | 显示全部楼层
好方法,学习

出5入42汤圆

发表于 2015-1-14 16:45:30 | 显示全部楼层
有养分的帖子,先占位MARK。

关键词keil,jlink,printf。

出0入0汤圆

发表于 2015-1-27 13:56:34 | 显示全部楼层
Jlink 4.96 RTT可以使用;   Llink Flash下载程序和RTT有冲突,下载会失败,需要再下载, 成功后RTT Viewer需要重启!

出0入53汤圆

发表于 2015-1-28 08:12:20 | 显示全部楼层
LZ对JLINK研究颇深哦

出0入0汤圆

发表于 2015-1-28 08:46:08 | 显示全部楼层
这个好东西啊,不过请问支持输入不啊?平时用串口调试,可以比较方便的输出参数,达到不同效果,这个很重要的哦

出0入0汤圆

发表于 2015-1-30 16:09:29 | 显示全部楼层
标记一下,回头试试,省串口了

出0入0汤圆

发表于 2015-1-31 21:36:24 | 显示全部楼层
MARK,这帧可以是酷的。太好了。

出0入0汤圆

发表于 2015-1-31 22:48:58 | 显示全部楼层
这个赶紧标记~!学习了!@

出0入0汤圆

发表于 2015-1-31 22:49:39 | 显示全部楼层
学习了!支持1!msrk

出0入0汤圆

发表于 2015-2-12 09:14:38 | 显示全部楼层
RTT ARM IAR

出0入0汤圆

发表于 2015-2-12 09:16:20 | 显示全部楼层
好,收下了,谢谢分享

出0入0汤圆

发表于 2015-2-12 09:19:30 | 显示全部楼层
mark,路过看一下

出0入0汤圆

发表于 2015-2-12 10:36:34 | 显示全部楼层
gwnpeter 发表于 2014-10-1 12:29
还有你的分析分析得不怎么好。
SWO经常有大量数据,比如开个PC sampling,连续500KB/s的数据。大量数据都 ...

其实这个原理应该是这样的:
jlink halt CPU,查找并读取SRAM的内容,显示到jlink_rtt,然后再run cpu,这样反复。。
CPU运行和jlink 读取SRAM,应该是做不到同时运行的。

出0入0汤圆

发表于 2015-4-4 16:51:42 | 显示全部楼层
其实RTT的速度已经很快了,很多常规问题都能抓到.SWO是快,但是只能用在调试模式,无法长期连续运行,这才是缺点.

出0入0汤圆

 楼主| 发表于 2015-4-5 10:33:05 | 显示全部楼层
f1yh1347 发表于 2015-2-12 10:36
其实这个原理应该是这样的:
jlink halt CPU,查找并读取SRAM的内容,显示到jlink_rtt,然后再run cpu,这 ...

cm内核是不用halt cpu的,
arm9之前的需要halt才能访问数据

出0入0汤圆

发表于 2015-4-6 11:37:44 | 显示全部楼层
容易出错,多打印几个程序就卡死了。
还不能设断点

出0入0汤圆

 楼主| 发表于 2015-4-6 11:58:02 | 显示全部楼层
本帖最后由 gwnpeter 于 2015-4-6 12:26 编辑
yixin1851 发表于 2015-4-6 11:37
容易出错,多打印几个程序就卡死了。
还不能设断点


我用的没有出现这个问题............

不过就是rtt监控软件还有点不好用...每次重启mcu都要重新打开rtt监控软件。
调试模式下使用existing session倒还是可以,就是每次都要进入dbg模式

出0入0汤圆

发表于 2015-4-6 12:09:47 | 显示全部楼层
好东西,可以省下一个串口打印了

出0入0汤圆

发表于 2015-4-6 12:14:03 | 显示全部楼层
gwnpeter 发表于 2015-4-6 11:58
我用的没有出现这个问题............

不过就是rtt软件还有点不好用...每次重启mcu都要重新打开rtt软件。 ...

我的貌似不用进入调试模式
我在程序的测试流程里,添加很多RTT输出,前面几个输出没有问题,到最后几个输出,程序就卡死了,而且没法断点调试。
感觉白兴奋了,还是回到串口吧。

出0入0汤圆

 楼主| 发表于 2015-4-6 12:24:17 | 显示全部楼层
yixin1851 发表于 2015-4-6 12:14
我的貌似不用进入调试模式
我在程序的测试流程里,添加很多RTT输出,前面几个输出没有问题,到最后几个输 ...

确实是不用进入调试模式的,
我要表达的是...普通运行模式下....打开了rtt监控软件,然后重启mcu,需要重新打开了rtt监控软件

你的是不是rtt输出的东西太多了,rtt可以设置fifo的模式的,有 循环覆盖模式 , 溢出丢弃模式  , 和 溢出等待模式
其中 溢出等待模式 会如果没有读取fifo,会阻塞程序的执行的..........

另外尝试增加fifo的深度试试............

出0入0汤圆

发表于 2015-4-7 09:27:46 | 显示全部楼层
gwnpeter 发表于 2015-4-6 12:24
确实是不用进入调试模式的,
我要表达的是...普通运行模式下....打开了rtt监控软件,然后重启mcu,需要重 ...

我对RTT了解还不深入,RTT输出东西很少,如下:
void debug_output(uint16_t err_code,int16_t value)
{
        uint16_t i = 0;
        SEGGER_RTT_WriteString(0,"Error is ");
        for(i = 0;i < 60 ;i++)
        {
                if(err_code == errcode.errkey)
                {
                        SEGGER_RTT_WriteString(0,errcode.errname);
                }
        }
        SEGGER_RTT_WriteString(0,"\r\n");
        SEGGER_RTT_printf(0,"Error Code : %d\r\n",err_code);
        SEGGER_RTT_printf(0,"Error vaule is  %d\r\n",value);
        SEGGER_RTT_WriteString(0,"\r\n");
}

就是在不同的地方调用debug_output()这个函数,前面几次调用还没有问题,到某调用,就出错了,帮忙分析一下,如下图:


谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-4-7 09:39:48 | 显示全部楼层
gwnpeter 发表于 2015-4-6 12:24
确实是不用进入调试模式的,
我要表达的是...普通运行模式下....打开了rtt监控软件,然后重启mcu,需要重 ...

添加一点,如果不打开RTT Viewer,程序就会正常执行下去

出0入0汤圆

 楼主| 发表于 2015-4-7 22:41:39 | 显示全部楼层
mcu程序感觉没有什么问题,
到时pc上的  changed active terminal to -1   怎么感觉都不对...........没有-1这个编号的terminal呀
你用的segger是什么版本的?换最新的吧,好用

出0入0汤圆

发表于 2015-4-8 10:17:06 | 显示全部楼层
johncoop 发表于 2014-9-11 08:19
要是ST——LINK也有这个功能就好了

可以用TRACE——LOG

出0入0汤圆

发表于 2015-4-8 12:28:49 | 显示全部楼层
好东西,收藏了

出0入0汤圆

发表于 2015-5-23 11:40:09 | 显示全部楼层
我的LPC1768不知道为什么打印不出来。用的是jlink V4.98a ,里面有个RTT VIEWER,全速运行,但terminal 0没打印出来。KEIL的dll保证是 V4.98a的,jlink V8也确保固件是升级过。程序编译没报错。上传程序,求高手解答。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-6-2 15:19:20 | 显示全部楼层
好实用的功能啊,做项目的过程中发现,SWO和SPI_CLK是复用,已经用到三个SPI接口,只能舍弃SWO了,没想到RTT就可以引刃而解

出0入0汤圆

发表于 2015-6-9 21:05:57 | 显示全部楼层
gwnpeter 发表于 2015-4-6 11:58
我用的没有出现这个问题............

不过就是rtt监控软件还有点不好用...每次重启mcu都要重新打开rtt监 ...

CPU运行的同时JTAG读内存,这个有文档吗?

出0入42汤圆

发表于 2015-6-15 17:00:35 | 显示全部楼层
这个好啊,调试跟踪方便多了

出0入0汤圆

发表于 2015-6-25 14:24:35 | 显示全部楼层
标记下。

出0入0汤圆

发表于 2015-7-8 11:38:47 | 显示全部楼层
有时间试一试啊.

出0入0汤圆

发表于 2015-8-28 10:42:50 | 显示全部楼层
mark一下啊

出0入0汤圆

发表于 2015-9-1 20:04:25 | 显示全部楼层
太实用了,谢谢

出0入0汤圆

发表于 2015-9-19 17:18:52 | 显示全部楼层
谢楼主分享,按照楼主的教程成功了,唯一的坑就是离线调试要手动新建文件夹。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 15:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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