打印
[STM32F4]

jlink rtt 在stm32f407上的使用流程

[复制链接]
345|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
串口作为经典的调试方式已经存在好多年了,缺点是需要一个专门的硬件接口。现在有了 SEGGER 的
RTT(Real Time Transfer),无需占用系统额外的硬件资源,而且速度超快,是替代串口调试的绝佳方
式。


使用特权

评论回复
沙发
顽强de板子|  楼主 | 2024-11-1 15:36 | 只看该作者
RTT的优点:
1.RTT 的 API 可以在中断和多任务环境中正常使用。并且 JLINK 处于 MDK 或者 IAR 的调试状态,RTT
功能依然可以正常使用。最重要的是速度非常快,普通的 JLINK 也可以飙到几百 KB/S。
2. RTT Viewer 小软件支持多个虚拟端口消息展示,比如用户可以一个用于标准输出,一个用于错误输
出,另一个用于调试输出。根据需要还可以再增加输出窗口。
3. RTT 组件和官方用户手册下载地址:
http://forum.armfly.com/forum.php?mod=viewthread&tid=86014 。
4.这个软件不需要用到 SWO 引脚,使用标准的下载接口即可。以我们的开发板为例,用到 VCC,GND,
SWDIO,SWCLK 和 NRST。大家使用三线 JLINK-OB 也是没问题的,仅需用到 GND,SWDIO 和
SWCLK。
5.大家买的 D 版 JLINK,基本都是来自 JLINK BASE,需要使用 V8,V9, V10 均可。

使用特权

评论回复
板凳
顽强de板子|  楼主 | 2024-11-1 15:43 | 只看该作者
通过 RTT,可以输出来自目标芯片的信息,并以非常高的速度发送给应用程序,而不会影响目标的实
时行为。当前所有的 JLINK 都支持 RTT 功能。RTT 的多通道都支持双向通信(发送或者接收,跟串口一样)。默认情况下每个方向一个通道,用于终端的输入和输出。JLINK 的小软件 RTT Viewer 支持多个“虚拟”终端,允许用一个目标缓冲区打印到
多个窗口,例如一个用于标准输出,一个用于错误输出,另一个用于调试输出。
这个软件不需要用到 SWO 引脚,使用标准的下载接口即可。以我们的开发板为例,用到 VCC,GND,
SWDIO,SWCLK 和 NRST。大家使用三线 JLINK-OB 也是没问题的,仅需用到 GND,SWDIO 和 SWCLK。

使用特权

评论回复
地板
顽强de板子|  楼主 | 2024-11-1 16:57 | 只看该作者
RTT 方式与 SWO 和半主模式的速度对比

测试条件使用 STM32F407,主频 168MHz,通过重定向 printf 实现。由上面的测试数据,可以看到 RTT
输出 82 个字符需要 1us,SWO 模式需要 120us,而半主模式需要 10700us。

使用特权

评论回复
5
顽强de板子|  楼主 | 2024-11-1 17:04 | 只看该作者
RTT 是如何工作的
RTT 在芯片内存中使用控制块结构来管理数据的读取和写入。控制块包含一个 ID,以便通过连接的
JLINK 在内存中找到它,并为每个可用通道提供一个结构体,用于描述缓冲区及其状态。
可用通道的最大数量可以在编译时进行配置,并且每个缓冲区都可以在运行时由应用程序进行配置和
添加。上行和下行缓冲区可以分开处理。
每个通道可以配置为阻塞或非阻塞。在阻塞模式下,当缓冲区已满时,应用程序将等待,直到有空间
可以写入数据,虽然应用程序状态被阻止,但可以防止数据丢失。在非阻塞模式下,只有不超过缓冲区大
小的数据被写入,其余的数据将被丢弃。即使没有连接调试器,也可以实时运行。而且开发人员不必创建
特殊的调试版本,代码可以保留在以后发布的项目工程中。

使用特权

评论回复
6
顽强de板子|  楼主 | 2024-11-1 17:12 | 只看该作者
RTT 控制块的结构如下

Up Buffer Descriptors 表示上行缓冲区描述符,即由芯片通过 JLINK 向电脑端上传缓冲区中的数据。
Down Buffer Descriptors 表示下行缓冲区描述符,即由电脑端通过 JLINK 向芯片下行缓冲区发送数据。
每个缓冲区大小可以单独配置。缓冲区中的灰色区域是包含有效数据的区域。对于上行缓冲区,写入
指针由芯片代码写入,读取指针由 JLINK 写入。当读取和写入指针指向相同的元素时,缓冲区为空

使用特权

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

本版积分规则

4

主题

67

帖子

0

粉丝