单片机调试工具J-Scopex使用说明 以及实时传输 RTT函数应用

关于

    J-Scope 是一个免费软件,用于在目标运行时实时分析和可视化微控制器上的数据。采样可以使用 SEGGER 高速采样 (HSS)或 SEGGER 实时传输 (RTT) 技术进行。这两种技术都可用于提供后台内存访问的所有 MCU。
    SEGGER高速采样(HSS)或SEGGER实时传输(RTT)两钟技术进行采样,所有提供后台内存访问的MCU都可以使用这两种技术。SEGGER(HSS)无需进一步准备即可使用。SEGGER (RTT)使采样速度更快,但这需要对目标应用程序进行检测。

配置

在这里插入图片描述
    通过双击可执行文件启动,将出现欢迎对话框。选择"创建新项目",然后按"确定"。将打开配置对话框。

在这里插入图片描述

异步模式 (HSS)

    HSS 模式通过定期对内存位置进行采样。因此,采样率和ELF文件是必需的。ELF 文件用于确定采样符号的内存地址。将符号声明为"volatile"是一种好的做法,以便尽快将其写入内存。

同步模式 (RTT)

    使用 RTT 模式,必须在目标应用程序中实现 RTT。

采样

在这里插入图片描述
    数据采样可以通过工具栏上的记录按钮(红点)启动。采样开始时,将自动建立与 J-Link 或正在运行会话的连接。
项目管理
    项目配置(即 J-Link 连接设置、应用程序文件和所选符号的配置)可以保存到 J-Scope 项目文件 (.js-cope)。J-Scope 项目可用于进一步会话,并用于不同用户之间的交流。
    打开项目文件,用户可以在启动对话框中选择"现有项目",使用"打开项目…" 在 J-Scope 中打开项目文件。在"文件"菜单中选择"最近项目>"子菜单中列出的最近使用的项目文件之一。
    如果以前采样的任何数据已保存到文件中,J-Scope 将自动打开与项目关联的最新数据文件。

    

数据导出到 CSV

    当前在缓冲区中的采样数据可以导出为 CSV 格式,由其他工具(例如 Microsoft Excel、Apple Numbers 或 LibreOffice Calc)等打开和分析,通过选择"文件"=“导出数据…”

数据导出到 RAW

    当前在缓冲区中的采样数据可以保存为 RAW 格式,J-Scope 可以在以后的时间点重新打开该格式。RAW 数据文件只能在符号配置与最初用于采样数据的项目中使用。
    创建的最新 RAW 文件的位置将保存在项目文件中相对于项目文件的位置。请确保在导出数据文件后保存项目。如果加载了关联的项目,将打开数据文件。

界面介绍

选择对话框

在这里插入图片描述
I. 分类模式,将树视图中的符号作为其编译的子项(默认) 单位文件(例如,_NumAllocs.c FS_Core定义)
I. 字母模式,按字母顺序显示所有符号

II. 选择数组,虽然完整的数组不能进行采样,但阵列可以,采样受支持基类型的元素。为了取样特定的数组元素,数字可以填写相应的字段(IIa)。用户通过按 Enter 确认输入后,可选行将添加到对话框 (IIb)

III. 在"添加符号"中列出支持的基本符号的选型,并加上复选框类型 列。符号可以添加到采样符号列表中启用复选框。

IIlI. 特定结构的结构成员的选择可以通过单击 -结构 名称旁边的"+"成员。

V. 搜索 提供不区分大小写搜索。不能是 s- 的符号搜索结果中不显示 lected。结构显示为长名称或至少一个成员的名称包含搜索字符串。用户可以右键单击一个符号,以显示单击的符号的所有子项,即使它们与搜索字符串不匹配。

主体窗口

主窗口
I. 工具栏
Il. 指示器栏
Ill. 图例
lV. 图形区域
V. 符号监视
Vl.状态栏

工具栏

在这里插入图片描述

I. 打开项目设置
Il. 显示/隐藏图形 |显示/隐藏手表窗口
lll. 开始采样 |停止采样 |暂停/恢复采样
lV. 放大 |缩小
V. 上升沿上的设置/未设置触发器 |落边 |任何边缘
Vl. 启动目标 |停止目标 |重置目标

目标指示栏

在这里插入图片描述

I. 在缩放目标指示器位置显示时间(HSS 模式/带时间戳的 RTT 模式)或采样 num-ber(没有时间戳的 RTT 模式)
lI. 显示 ZTI 和垂直中心线之间的时间/样本编号差异

图例
在这里插入图片描述
I.显示每个符号的颜色、数字、名称、Y 分辨率和 Y 偏移。
lI. 图例可以独立于主窗口移动。如果移动主窗口,图例将捕捉到图形区域的右上角。

图形区域

在这里插入图片描述

   绘制图形的区域。该区域被划分为 100x100 像素(细灰色线,例如 I)。
   启动时,区域高 800 像素,宽 1000 像素。顶部 (IIa) 的第 4 行和右侧 (IIb) 的第 5 行称为中心线,每 20 像素有很少的标记。
   它们的位置与窗口大小无关。在图形区域 (III) 的左侧,每个符号的基准线由对应于符号编号的标签指示。如果触发器被激活,将显示一个名为"T"的特殊符号,表示触发器级别。如果触发器处于活动状态,则图形的移动方式为触发器事件位于 ZTI 位置 (IV)。
   符号的基准线以及触发级别和 ZTI 可以通过移动相应的标签(抓取和移动)来更改。

符号表

在这里插入图片描述
I. 符号名称根据提供的 .elf 文件 (HSS 模式) 或 “符号号 n” (RTT 模式)。前面有一个右对标(显示符号)或一个"X"(符号是隐藏的)
Il. 根据 .elf 文件(仅 HSS 模式)的符号地址
lll. 表示符号的图形颜色
lV. 符号的内存大小
V. 符号的可变类型
Vl. 采样的最当前值
Vll. 最小值
Vlll. 最大值
lX. 样本数据的移动平均数
X. 垂直分辨率
Xl. 垂直偏移到中心线

上下文菜单

在这里插入图片描述
在符号的上下文菜单中,可以更改符号的可视外观:

类型支持大小
Color打开颜色选择的对话框
Show显示/隐藏符号
AC coupling交流耦合去除直流偏置
Move up将符号向上移动符号表中的一个位置
Move down将符号向下移动符号表中的一个位置
Y-Offset up增加 Y 偏移(向上移动符号)
Y-Offset down减少 Y 偏移(向下移动符号)
Y-Resolution up增加垂直分辨率
Y-Resolution down将降低垂直分辨率
Draw Line绘制符号的图形为线
Draw Points将符号的图形绘制为点
Draw Line & Points将符号的图形绘制为直线和点
Remove Symbol删除符号(不适用于 RTT)
Add Symbols添加符号 打开用于选择新符号的符号选择对话框(不适用于 RTT)

状态栏

在这里插入图片描述

I. 显示最新状态消息
ll. 指示状态(开/关)、类型(RTT/HSS) 和当前采样速度。括号中的值是配置的采样速度,可能与实际采样速度不同。
lll. 显示当前缓冲区大小、在缓冲区中拟合的最大采样数据包数以及缓冲区的当前占用量(以百分比表示)

触发功能
    当在监视窗口中选择要触发的所需符号时,可以通过单击工具栏上的适当符号来激活触发。当触发模式处于活动状态时,数据会像不触发一样连续采样。如果发生触发器事件,则移动图形的可见部分。
    当触发处于活动状态时,可以通过移动图形窗口左侧的触发器标签来调整触发级别。

J-Scope说明

• 示例缓冲区的作用就像圆形缓冲区。如果缓冲区已满,则每个新条目将覆盖最早的数据。
• 如果暂停采样,目标也不会停止,HSS/RTT 也不会暂停,但所有传入的采样都将被丢弃,直到采样恢复。
• 如果在 RTT 模式下未提供时间戳,J-Scope 将按到达顺序对传入数据包进行编号。因此,所有基于时间的值都将显示为基于数字的值。
• J-Scope 使用指数平滑计算信号的直流偏置。在"交流耦合"模式下,图形由此值移动,而采样的数据不更改。计算使用以下公式完成,其中 alpha 设置为 0.0001:

J-Scope限制

    SEGGER网站上提供了有关J-Link功能的信息。HSS对变量数量和采样速度的限制在SEGGER J-Scope网页(部分模型比较)中有说明。
    有关速度限制的信息取决于J-Link模型、调试接口速度和RTT缓冲区大小,可在SEGGER RTT网页(部分性能)上找到。
    主机PC的操作系统或USB实现可能会造成进一步的限制。带有以太网连接的J-Link调试探针可与J-Scope一起使用,以便达到超出USB限制的速度。

RTT:应用程序

准备

首先,SEGGER RTT需要包含在目标应用程序中。
在RTT模式下,所有数据都由目标应用程序直接提供。如果需要时间戳,目标应用程序负责数据完整性并提供可靠的时基。

主要概念

目标应用程序给出了采样数据及其格式。
这种数据格式通过命名RTT通道向J-Scope公布。命名规则如下所述。
一旦目标应用程序收集了数据包所需的所有数据,它就会使用SEGGER_RTT_Write()将该数据包写入RTT通道。

RTT通道命名约定

    J-Scope搜索第一个名为JScope_FORMAT的RTT通道,其中FORMAT定义目标应用程序写入缓冲区的数据的格式。
•所有变量标识符由类型标识符和大小指示(字节)组成。
•数据包中的数据必须与格式中声明的顺序相同。
•如果提供了时间戳,则需要将其声明为第一个变量。

类型支持大小注意
t4指示每个数据包前面都有一个32位的值包含以µs为单位的时间戳
b1指定布尔值
f4,8指定32位或64位浮点值
i1,2,4指定有符号的8、16或32位值
u1,2,4指定无符号8、16或32位值

命名示例

    JScope_t4u1i4指定数据包以32位时间值开头,后跟无符号字符和有符号整数
    JScope_4i1指定数据包包含无符号int,后跟有符号字符

工作流示例

•用户希望对有符号int、unsigned int和signed char进行采样
•用户希望提供时间戳。
•因此,RTT信道被命名为JScope_t4i4u4i1
•根据使用情况,例如在计时器或条件下进行采样

案例一

•在本例中,用户决定每100µs采样一次
•用户添加一个基于时间的中断,每100µs发生一次。各个ISR收集必要的数据和当前时间戳。
•之后,ISR调用SEGGER_RTT_Write()

案例二

•在另一个用例中,用户可以决定在调用特定函数后进行采样。
•用户向该函数添加子函数调用。子函数准备可以作为参数传递或在全局范围内可用的数据,并使用SEGGER_RTT_Write()将其写入RTT缓冲区。

RTT模式下的策略

•RTT通道名称和数据格式不得在采样会话期间更改。

•RTT通道名称和数据格式可在采样会话之间更改(无需重新启动J-Scope)。

•RTT信道名称必须根据数据格式进行相应设置。

•只有符合RTT通道名称声明的数据格式的完整数据包才能写入RTT通道。

•RTT数据包必须按顺序发送。

•RTT模式应为NO_BLOCK_SKIP或BLOCK_IF_FIFO_FULL。

附录一

JScope_V611m 网盘链接:https://pan.baidu.com/s/1CyrirUY9m8vj_I_kbpqYPA
提取码:d7bj
    

/*********************************************************************
*
*       SEGGER_RTT_Write
*
*  Function description
*    Stores a specified number of characters in SEGGER RTT
*    control block which is then read by the host.
*
*  Parameters
*    BufferIndex  Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
*    pBuffer      Pointer to character array. Does not need to point to a \0 terminated string.
*    NumBytes     Number of bytes to be stored in the SEGGER RTT control block.
*
*  Return value
*    Number of bytes which have been stored in the "Up"-buffer.
*
*  Notes
*    (1) If there is not enough space in the "Up"-buffer, remaining characters of pBuffer are dropped.
*/
unsigned SEGGER_RTT_Write(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
  unsigned Status;
  volatile unsigned SavedState;
  //
  INIT();
  SEGGER_RTT_LOCK(SavedState);
  //
  // Call the non-locking write function
  //
  Status = SEGGER_RTT_WriteNoLock(BufferIndex, pBuffer, NumBytes);
  //
  // Finish up.
  //
  SEGGER_RTT_UNLOCK(SavedState);
  //
  return Status;
}

Example Code RTT函数包下载:https://download.csdn.net/download/qq_40696002/12692812

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值