JLINK-rtt使用经验

合集下载

jlink使用方法

jlink使用方法

jlink使用方法jlink使用方法详解什么是jlink?jlink是Java 9中引入的一个新工具,用于创建自定义的JRE (Java Runtime Environment)。

它允许您通过选择和排除需要的模块,以及优化所需的资源,创建一个更小更快的JRE。

使用jlink创建自定义JRE的步骤1.安装Java 9或更高版本确保您已经安装了Java 9或更高版本的JDK。

2.找到所需的模块您可以使用jdeps工具来分析您的应用程序,并找出它所依赖的模块。

例如,要分析一个名为``的应用程序,使用以下命令:jdeps --list-deps此命令将列出``所依赖的所有模块。

3.创建自定义JRE使用jlink命令创建自定义的JRE。

以下是一个基本的jlink命令示例:jlink --module-path <path-to-modules> --add-modules<module1>,<module2>,... --output <output-path>•<path-to-modules>:指定包含所有模块的路径。

•<module1>,<module2>,...:指定需要的模块的列表。

•<output-path>:指定输出自定义JRE的路径。

例如,要在C:\myjre目录中创建自定义的JRE,该JRE仅包含和模块,可以使用以下命令:jlink --module-path <path-to-modules> --add-modules , --output C:\myjre4.运行应用程序使用创建的自定义JRE来运行您的应用程序。

例如,在上一个步骤中创建的自定义JRE的路径为C:\myjre,要运行``,可以使用以下命令:C:\myjre\bin\java -jar注意:确保您的应用程序中使用的模块在自定义JRE中是可用的,否则应用程序将无法正常运行。

jlink使用说明

jlink使用说明

Jlink安装使用说明
一、安装
1、解压jlink至任意位置。

解压完成后包含以下三个文件。

2、双击Setup_JLink_V490.exe。

点击YES
点击next
选择位置后点击next
四个全部勾选点击next
点击next
等待安装完成
点击cancel
点击finish
桌面生成此图标
二、使用说明
双击桌面图标
选择create a new project
点击start-J-Flash
选择project setting…
界面配置1 配置完成点击应用
界面配置2 配置完成点击应用
依次点击红圈内选项,跳出如下界面:
选择红圈中条目点击OK
选择红圈中条目点击确定
点击connect
跳出下图connect succeeessful
点击open data file…
选择.hex
选中要烧录的hex文件点击打开
跳出如下界面
点击auto
等待第一次进度条完成
等待第二次进度条完成
出现最终成功界面程序烧录完成。

jlink命令调用方法

jlink命令调用方法

jlink命令调用方法jlink命令用于将JDK的某个模块及其依赖项打包成一个可执行文件。

以下是jlink命令的调用方法:1. 打开命令提示符窗口(Windows)或终端窗口(Linux/macOS)。

2. 输入以下命令的基本格式:jlink module-path <module path> add-modules <module name> output <output location>其中:- `<module path>` 表示JDK的模块路径。

- `<module name>` 表示要打包的模块名称。

- `<output location>` 表示输出文件夹的路径。

示例:jlink module-path %JAVA_HOME%\jmods add-modules java.base output myimage3. 运行命令后,jlink将会从模块路径中找到指定的模块及其所有依赖项,并将它们打包成一个自包含的运行时镜像。

4. 在打包完成后,可以在输出文件夹中找到生成的运行时镜像。

附加选项:- `launcher <name>=<module>/<class>`:指定生成的运行时镜像中的启动器。

可以使用该启动器来直接运行模块中的特定类。

- `compress <level>`:指定压缩级别。

可选的压缩级别有`0`(不压缩),`1`(快速压缩)和`2`(最佳压缩)。

- `strip-debug`:去除调试信息以减少镜像大小。

- `no-header-files`:不包含标准C头文件。

- `no-man-pages`:不包含手册页。

注意:jlink命令在JDK 9及以上版本中可用。

JLINK使用教程详解

JLINK使用教程详解

配置jlink工程
菜单>Options>Projiect settings 1、Target Interface
这个根据需要选择,若不确定就选择自动。
配置Projiect settings
2、CPU 指定CPU并初始化
加快烧写速度
五条全部添加
初始化寄存器
配置jlink工程
菜单>Edit>DebugRel Settings 2、ARM C Compiler
目的:选择与ARM核相匹配的C代码编译器
配置ADS工程
菜单>Edit>DebugRel Settings 3、ARM Linker(Output)
目的:设置代码段的起始地址为RAM的起始地址。
在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly); 可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为 零的变量被称为ZI段(ZeroInit)。
JLINK使用教程详解
This is j-link
嵌入式 实验板 JTAG
JTAG 接口
电缆
并口
协议转换
ADS RDI KEIL
IAR
嵌入式 实验板 JTAG
JTAG 接口
JTAG 接口
JLINK
USB USB 接口
电缆
下载线
协议转换
JTAG:国际标准测试协议 RDI:ARM公司提出的调试接口标准
主要配置的选项:
1、ARM Assembler(编译器) 2、ARM C Compiler(编译器) 3、ARM Linker(链接器)
其他选项默认即可。
配置ADS工程
菜单>Edit>DebugRel Settings 1、ARM Assembler

JLINK使用教程详解

JLINK使用教程详解
菜单>Edit>DebugRel Settings
2、ARM C Compiler
目的:选择与ARM核相匹配的C代码编译器
配置ADS工程
菜单>Edit>DebugRel Settings
3、ARM Linker(Output)
目的:设置代码段的起始地址为RAM的起始地址。
在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly); 可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为 零的变量被称为ZI段(ZeroInit)。
目的:设置代码段的起始地址为FLASH的起始地址。
配置ADS工程
菜单>Edit>DebugRel Settings 5、ARM fromELF
目的:转换为二进制文件并指定输出位置。
编译生成.bin文件
菜单>Projiect>Make
配置jlink工程
菜单>Options>Projiect settings 1、Target Interface
配置ADS工程
菜单>Edit>DebugRel Settings
配置完毕之后一定要注意存盘(ctrl+s), 这样配置才会生效,否则编译时会报错。
编译并进入AXD
菜单>Projiect>Debug 命令介绍 Compile: 编译单个源文件,生成一个.o文件。 Make: 编译整个工程,生成多个.o文件和 一个.axf文件。 Debug: 编译整个工程,生成多个.o文件和 一个.axf文件,并进入AXD。 Run: 编译整个工程,生成多个.o文件和 一个.axf文件,并进入AXD,同时 运行程序。

Jlink在MDK下使用J-link_J-trace模式开发STM32的说明

Jlink在MDK下使用J-link_J-trace模式开发STM32的说明

Jlink在MDK下使⽤J-link_J-trace模式开发STM32的说明Jlink V7在MDK下使⽤J-link/J-trace 模式开发STM32的说明说句实话,STM32的官⽅程序库⽤起来真是有点⿇烦,绕来绕去的,初学者很容易犯迷糊。

求⼈不如靠⾃⼰啊,经过⼀晚上的摸索,终于⾃⼰在MDK开发环境下建⽴了⾃⼰的⼯程,⾛马灯也跑起来了,呵呵呵....开发环境:STM32F103RB(128K Flash 20K RAM)+MDK3.40PRC+JLINK V70.驱动安装安装Segger jlink V4.02驱动,安装在c:\Program Files\SEGGER\JLinkARM_V402插上jlink V7,可⾃动安装上驱动。

执⾏J-link command,查看版本。

如果已经连上⽬标板,可显⽰⽬标处理器信息。

也可以使⽤mdk中的驱动,在c:\keil\ARM\Segger\USBdriver1.建⽴MDK⼯程(1)选择STM32F103RB 并加⼊STARTUP⽂件,这⼀步就不⽤细说了吧,⽤过keil的⼈都会。

(2)⼯程中选择Options for target ‘xxx’,选择器件STM32F103RB(3) 配置Jlink:按照下图配置即可时钟改成1MHz以上,也是可以的,⽐如2MHz,明显编程速度会快些。

需要试验最⾼时钟速率。

这样,⼀个可以⽤Jlink调试的MDK⼯程就建⽴好了,接下来我们加⼊我们的C⽂件就可以开始调试了。

2 编写程序C⽂件源码如下:#define GPIOC_CRL (*((unsigned int *)(0x40011000)))#define GPIOC_BSRR (*((unsigned int *)(0x40011010)))#define GPIOC_BRR (*((unsigned int *)(0x40011014)))#define RCC_APB2ENR (*((unsigned int *)(0x40021018)))void delay(void){unsigned int i;for(i = 0; i < 0xffff; ++i);}int main(void){{RCC_APB2ENR |=(1<<2); //使能PORTA时钟GPIOA_CRL = 0x44444422;//PA0,1配置为输出while(1){GPIOA_BSRR |= BIT0;GPIOA_BRR |= BIT0;delay();GPIOA_BRR |= BIT0;GPIOA_BSRR |= BIT1;delay();}}如此,⼀个简单的⾛马灯程序就完成了,⽐起官⽅库,容易理解多了,呵呵。

JLINK使用教程详解,以及与JTAG区别

JLINK使用教程详解,以及与JTAG区别

JLINK使⽤教程详解,以及与JTAG区别对于⼀个新⼿来说,⼀切都不容易。

⽽从头学起也是⼀件⾮常美好的事。

调试ARM,要遵循的调试接⼝协议,JTAG就是其中的⼀种。

当仿真时,IAR、KEIL、ADS等都有⼀个公共的调试接⼝,RDI就是其中的⼀种,那么我们如何完成RDI-->ARM调试协议(JTAG)的转换呢?有以下两种做法:1.在电脑上写⼀个服务程序,把IAR、KEIL和ADS中的RDI命令解析成相关的JTAG协议,然后通后⼀个物理转换接⼝(注意,这个转换只是电⽓物理层上的转换,就像RS232那样的作⽤)发送你的的⽬标板。

H-JTAG就是这样的。

H-JTAG的硬件就仅是⼀个物理电平的转换接⼝,所以很简单。

⽽电脑中装的h-JTAG软件就是前⾯说到的服务程序,负责协议转换的。

2.做⼀个板,⽤此板直接接收来⾃IAR、KEIL和ADS等软件的调试命令,由此板做RDI->JTAG协议的转换。

然后与⽬标板通信,这就是JLINK的⼯作原理。

由上可以看出H-JTAG由于是软件作协议转换的,所以速度较慢,但是硬件简单。

⽽第⼆种⽅法的JLINK⼀般带⼀个强劲的CPU,作硬件协议转换,把以硬件复杂,但速度快。

JTAG的基本原理JTAG(JointTestActionGroup,联合测试⾏动组)是⼀种国际标准测试协议(IEEE1149.1兼容)。

标准的JTAG接⼝是4线——TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输⼊和数据输出线。

JTAG的主要功能有两种,或者说JTAG主要有两⼤类:1)⼀类⽤于测试芯⽚的电⽓特性,检测芯⽚是否有问题;2)另⼀类⽤于Debug,对各类芯⽚以及其外围设备进⾏调试;⼀个含有JTAGDebug接⼝模块的CPU,只要时钟正常,就可以通过JTAG 接⼝访问CPU的内部寄存器、挂在CPU总线上的设备以及内置模块的寄存器。

本⽂主要介绍的是Debug功能。

JTAG原理分析简单地说,JTAG的⼯作原理可以归结为:在器件内部定义⼀个TAP(TestAccessPort,测试访问⼝),通过专⽤的JTAG测试⼯具对内部节点进⾏测试和调试。

jlink的使用方法

jlink的使用方法

jlink的使用方法摘要:一、JLink简介二、JLink的安装与配置1.安装步骤2.配置方法三、JLink的使用方法1.连接设备2.烧写固件3.调试代码4.监控运行状态四、JLink的高级功能1.断点调试2.数据观察3.性能分析五、JLink的优缺点1.优点2.缺点六、总结与建议正文:一、JLink简介JLink是一款由SEGGER公司推出的硬件调试工具,广泛应用于嵌入式系统的开发与调试。

它支持多种处理器架构,如ARM、MIPS、AVR、STM32等,为开发者提供了便捷的编程与调试解决方案。

二、JLink的安装与配置1.安装步骤JLink的安装过程相对简单,只需遵循以下步骤:(1)下载JLink软件及驱动程序。

(2)安装JLink软件。

(3)根据设备类型及操作系统安装对应的驱动程序。

2.配置方法(1)打开JLink软件,设置目标设备型号、操作系统、调试器型号等参数。

(2)配置调试串口号、波特率等通信设置。

(3)连接设备并验证连接。

三、JLink的使用方法1.连接设备将JLink连接到目标设备,确保设备上电。

在JLink软件中配置好设备参数后,点击“Connect”按钮建立连接。

2.烧写固件在JLink软件中选择固件文件,点击“Download”按钮进行烧写。

烧写完成后,设备将自动重启。

3.调试代码在JLink软件中打开调试器,设置断点、监视变量等参数。

然后点击“Run”按钮,即可开始调试代码。

4.监控运行状态在调试过程中,可通过JLink观察运行状态、实时数据、内存使用情况等。

此外,还可使用JLink进行性能分析,找出代码中的瓶颈。

四、JLink的高级功能1.断点调试JLink支持断点调试,可以帮助开发者定位代码问题。

设置断点后,程序运行到断点位置时会自动暂停,方便进行调试。

2.数据观察JLink可以实时观察变量值、寄存器值等数据,便于分析程序运行状态。

3.性能分析JLink提供性能分析功能,可统计代码执行次数、执行时间等,帮助开发者优化代码。

使用仿真器代替串口打印调试的方法

使用仿真器代替串口打印调试的方法

S E G G E R -R T T经验萃取使用仿真器代替串口打印调试方法Roger.WY2020/02/14目录conten t “”Part 01引言Part 02RTT 简介Part 03RTT 的使用方法Part 04RTT 的使用总结1引言让我们来认识一下一个新的工程调试利器!引言串口作为经典的调试方式已经存在好多年了,缺点是需要一个专门的硬件接口。

现在有了SEGGER的RTT,无需占用系统额外的硬件资源,而且速度超快,是替代串口调试的绝佳方式。

2RTT简介Real Time Transfer2.1 什么是RTT?SEGGER的Real Time Transfer (RTT)是一项新技术,可以在嵌入式应用中进行用户I/O交互。

它结合了SWO和半主机的优点,具有极高的性能。

它的主要特点:➢可以与目标应用进行双向通信.➢极高的传输速率,同时不影响应用的实时响应.➢在目标板上不需要额外的硬件或引脚.➢在任何J-Link模式下都能正常使用.➢ARM Cortex-M0/M0+/M1/M3/M4/M7和Renesas RX100/200/600都支持➢有完整的代码来提供需要的功能和灵活的自由度.2.2 RTT是如何工作的?RTT利用了目标芯片内存上的SEGGER RTT 控制块来管理数据的读写。

控制块包含有一个ID号,这样接上J-Link之后,就可以在内存中发现控制块,并且为每个可用通道都提供了一个一个环形缓冲区结构体,用来描述通道缓冲区及其状态。

可用通道的最大数量可以在编译时进行配置,并且每个缓冲区都可以在运行时由应用程序进行配置和添加。

上行和下行缓冲区可以分开处理。

每个通道可以配置为阻塞或非阻塞。

在阻塞模式下,当缓冲区已满时,应用程序将等待,直到有空间可以写入数据,虽然应用程序状态被阻止,但可以防止数据丢失。

在非阻塞模式下,只有不超过缓冲区大小的数据被写入,其余的数据将被丢弃。

即使没有连接调试器,也可以实时运行。

jlink使用技巧

jlink使用技巧

jlink使用技巧
J-link是一种仿真器,在使用时有一些小技巧可以参考,具体如下:
- 读取MCU各类信息:当无法使用仿真器时,可输入“connect”并回车来判断是无法连接仿真器还是无法连接芯片。

若当前显示的芯片不是想要的目标芯片,可输入“?”并回车来进行芯片的选择。

选择芯片型号后,若是JTAG则输入“j”,若是SWD则输入“s”,点击回车输入指令,成功连接后可以使用各类指令。

- 直接读取故障件数据:通过j-link直接读取的方式,在不破坏当前状态的情况下获取相关寄存器/Flash/RAM中的数值,进行初步的故障判断。

- 开启J-link虚拟串口功能:首先确定J-LINK固件版本为V9以上,在SWD模式下,通过安装J-Link Commander软件并输入相应指令来开启该功能。

如需了解更多关于J-link的使用技巧,可以继续向我提问。

jlink的使用方法

jlink的使用方法

jlink的使用方法JLink是Segger公司开发的一款用于嵌入式系统的调试和仿真工具。

它是一种硬件和软件的解决方案,可用于调试和烧录各类微控制器,如ARM和Cortex-M系列。

在本文中,我将详细介绍JLink的使用方法,并提供一些常见问题的解决方案。

一、JLink的配置要使用JLink进行调试和仿真,首先需要进行一些基本的配置。

以下是配置JLink所需的步骤:1.安装JLink软件和驱动程序:在Segger官方网站上下载JLink软件并进行安装。

安装完成后,选择适合您的操作系统的驱动程序进行安装。

2.连接JLink调试器:将JLink调试器连接到电脑的USB接口上。

在连接之前,确保JLink调试器已插入目标设备上的JTAG或SWD接口。

3.配置调试选项:打开JLink软件,并选择目标设备的型号和调试接口类型。

您可以在菜单栏上的“文件”选项中找到这些选项。

4.配置调试连接:选择正确的调试连接选项,如JTAG或SWD。

您还可以选择连接速度和其他调试选项。

5.配置目标设备:选择目标设备的工作电压、频率等参数。

这些参数应与目标设备的规格书相匹配。

通过上述步骤配置JLink之后,您就可以开始使用JLink进行调试和仿真。

二、JLink的调试功能JLink具有强大的调试功能,可以帮助开发人员诊断和解决嵌入式系统中的问题。

以下是一些常见的JLink调试功能:1.断点调试:使用JLink可以设置断点,在程序执行到特定的代码行时暂停执行,以便开发人员检查程序状态和变量值。

2.单步调试:JLink支持单步调试功能,可以逐条执行程序,并在每个代码行上暂停执行,以便开发人员检查程序的执行流程。

3.变量监视:JLink可以监视变量的值,以便开发人员可以实时查看变量的值,并在程序运行时进行调试。

4.内存查看:JLink可以查看目标设备的内存内容,包括程序代码、数据和堆栈信息等。

这对于分析内存泄漏和其他相关问题非常有帮助。

jlink使用方法笔记

jlink使用方法笔记

jlink使用方法笔记这段时间在用jlink调试freescale的mx51板子,下面将使用jlink的方法在此做一个笔记。

jlink是segger公司的产品,由于正版的工具巨贵,所以现在大部分人都喜欢用山寨版的jlink,幸运的是我的山寨版jlink支持arm cortex a8,所以能调试mx51板子。

jlink的官方提供调试软件和驱动,调试软件有jlink commander(j-tag调试)、j-mem(内存查看)、j-flash(flash烧写)等。

我主要用到的是jlink commander,以下是它的命令集:SEGGER J-Link Commander V4.20h ('?' for help)Compiled Oct 5 2010 19:11:57DLL version V4.20h, compiled Oct 5 2010 19:11:41Firmware: J-Link ARM V8 compiled Oct 5 2010 08:59:59Hardware: V8.00S/N: 20100214Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFullVTarget = 3.280VInfo: TotalIRLen= ?, IRPrint = 0x..FFFFFFFFFFFFFFFFFFFFFFF1WARNING: CPU core not found.No devices found on JTAG chain. Trying to find device on SWD.WARNING: CPU core not found.****** Error: Parity error (Data = 0xFFFFFFFF, ReceivedParity = 1)No device found on SWD.Did not find any core.Info: TotalIRLen = 9, IRPrint = 0x0011Found 2 JTAG devices, Total IRLen = 5:#0 Id: 0x2B900F0F, IRLen: 04, IRPrint: 0x0, ARM ETB#1 Id: 0x07B76F0F, IRLen: 05, IRPrint: 0x1, ARM1176 CoreARM11 identified.J-Link>Available commands are:----------------------f Firmware infoh haltg goSleep Waits the given time (in milliseconds). Syntax: Sleep <delay>s Single step the target chipst Show hardware statushwinfo Show hardware infomem Read memory. Syntax: mem <Addr>, <NumBytes> (hex)mem8 Read 8-bit items. Syntax: mem8 <Addr>, <NumBytes> (hex) mem16 Read 16-bit items. Syntax: mem16 <Addr>, <NumItems> (hex) mem32 Read 32-bit items. Syntax: mem32 <Addr>, <NumItems> (hex)w1 Write 8-bit items. Syntax: w1 <Addr>, <Data> (hex)w2 Write 16-bit items. Syntax: w2 <Addr>, <Data> (hex)w4 Write 32-bit items. Syntax: w4 <Addr>, <Data> (hex)wm Write test words. Syntax: wm<NumWords>is Identify length of scan chain select registerms Measure length of scan chain. Syntax: ms<Scan chain>mr Measure RTCK react time. Syntax: mrq Quitqc Close JLink connection and quitr Reset target (RESET)rx Reset target (RESET). Syntax: rx<DelayAfterReset> RSetType Set the current reset type. Syntax: RSetType<type>Regs Display contents of registerswreg Write register. Syntax: wreg<RegName>, <Value>SetBP Set breakpoint. Syntax: SetBP<addr> [A/T] [S/H]SetWP Set Watchpoint. Syntax: <Addr> [R/W] [<Data> [<D-Mask>] [A-Mask]] ClrBP Clear breakpoint. Syntax: ClrBP <BP_Handle>ClrWP Clear watchpoint. Syntax: ClrWP <WP_Handle>VCatch Write vector catch. Syntax: VCatch<Value>loadbin Load binary file into target memory.Syntax: loadbin<filename>, <addr>savebin Saves target memory into binary file.Syntax: savebin<filename>, <addr>, <NumBytes>SetPC Set the PC to specified value. Syntax: SetPC<Addr>le Change to little endian modebe Change to big endian modelog Enables log to file. Syntax: log <filename>unlock Unlocks a device. Syntax: unlock <DeviceName>Type unlock without <DeviceName> to get a listof supported device names.nRESET has to be connected---- CP15 ------------rce Read CP15. Syntax: rce<Op1>, <CRn>, <CRm>, <Op2>wce Write CP15. Syntax: wce<Op1>, <CRn>, <CRm>, <Op2>, <Data>---- ICE -------------Ice Show state of the embedded ice macrocell (ICE breaker)ri Read Ice reg. Syntax: ri<RegIndex>(hex)wi Write Ice reg. Syntax: wi<RegIndex>, <Data>(hex)---- ETM -------------etm Show ETM statusre Read ETM reg. Syntax: re <RegIndex>we Write ETM reg. Syntax: we <RegIndex>, <Data>(hex)es Start trace---- ETB -------------etb Show ETB statusrb Read ETB register. Syntax: rb<RegIndex>wb Write ETB register. Syntax: wb<RegIndex>, <Data>(hex)---- TRACE -----------TAddBranch TRACE - Add branch instruction to trace buffer. Paras:<Addr>,<BAddr> TAddInst TRACE - Add (non-branch) instruction to trace buffer. Syntax: <Addr> TClear TRACE - Clear bufferTSetSize TRACE - Set Size of trace bufferTSetFormat TRACE - SetFormatTSR TRACE - Show Regions (and analyze trace buffer)TStart TRACE - StartTStop TRACE - Stop---- SWO -------------SWOSpeed SWO - Show supported speedsSWOStart SWO - StartSWOStop SWO - StopSWOStat SWO - Display SWO statusSWORead SWO - Read and display SWO dataSWOShow SWO - Read and analyze SWO dataSWOFlush SWO - Flush data---- File I/O --------fwrite Write file to emulatorfread Read file from emulatorfshow Read and display file from emulatorfdelete Delete file on emulatorfsize Display size of file on emulator---- Test ------------thg Run go/halt 1000 timests Run step 1000 timestestwspeed Test download speed. Syntax: testwspeed [<Addr> [<Size>]] testrspeed Test upload speed. Syntax: testrspeed [<Addr> [<Size>] [<NumBlock s>]]testcspeed Test CPU speed. Syntax: testcspeed [<RAMAddr>]---- JTAG ------------Config Set number of IR/DR bits before ARM device.Syntax: Config<IRpre>, <DRpre>speed Set JTAG speed. Syntax: speed <freq>|auto|adaptive, e.g. speed 2000, speed ai Read JTAG Id (Host CPU)wjc Write JTAG command (IR). Syntax: wjc<Data>(hex)wjd Write JTAG data (DR). Syntax: wjd<Data32>(hex), <NumBits>(dec) RTAP Reset TAP Controller using state machine (111110)wjraw Write Raw JTAG data. Syntax: wjraw<NumBits(dec)>, <tms>, <tdi>rt Reset TAP Controller (nTRST)---- JTAG-Hardware ---c00 Create clock with TDI = TMS = 0c Clock0 Clear TDI1 Set TDIt0 Clear TMSt1 Set TMStrst0 Clear TRSTtrst1 Set TRSTr0 Clear RESETr1 Set RESET---- Connection ------usb Connect to J-Link via USB. Syntax: usb<port>, where port is 0..3ip Connect to J-Link ARM Pro or J-Link TCP/IP Server via TCP/IP.Syntax: ip<ip_addr>---- Configuration ---si Select target interface. Syntax: si<Interface>,where 0=JTAG and 1=SWD.power Switch power supply for target. Syntax: power <State> [perm], where State is either On or Off. Example: power on permwconf Write configuration byte. Syntax: wconf<offset>, <data>rconf Read configuration bytes. Syntax: rconfusbaddr Assign usb address to the connected J-Link: Syntax: usbaddr = <addr> ipaddr Show/Assign IP address and subnetmask of/to the connected J-Link. gwaddr Show/Assign network gateway address of/to the connected J-Link. dnsaddr Show/Assign network DNS server address of/to the connected J-Link. conf Show configuration of the connected J-Link.ecp Enable the J-Link control panel.calibrate Calibrate the target current measurement.----------------------NOTE: Specifying a filename in command linewill start J-Link Commander in script mode.总结一下我们使用的最多的命令:usb--------连接目标板r----------重启目标板halt-------停止cpu运行的程序loadbin----加载可执行的二进制文件g----------跳到代码段地址执行s----------单步执行(调试用)setpc-----设置pc寄存器的值(调试用)setbp-----设置断点Regs-------读寄存器组织wreg-------写寄存器mem--------读内存w4---------写内存power off mmu---关闭mmu,这个对于裸板调试很重要w4 cpsr,0x0000001f------切换到系统模式speed------设置jtag的传输速率rce 0,c0,c0,0-----设置cp15寄存器的第1个寄存器为0 完结。

JLink使用说明Rev2.0

JLink使用说明Rev2.0

J-link用户指南v2.00版本:R R e v2.20007-220J-LINK用户手册nk A R M J T A G仿真器简介一、 J-L i nkJ-Link是SEGGER公 司为支持仿真ARM内核芯片推 出的JTAG仿真 器 。

配 合IAR EWARM , ADS , KEIL , WINARM , RealView 等集成开发环境支持所有ARM7/ARM9 内核芯片的仿真,通过 RDI 接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发 ARM 最好最实用的开发工具。

k AR R M主要特点Lin n k AJ-Li*IAR EWARM集成开发环境无缝连接的JTAG仿真器*支持所有ARM7/ARM9内核的芯片,以及cortex M3,包括Thumb模式*支持 ADS,IAR,KEIL,WINARM,REALVIEW等几乎所有的开发环境*下载速度高达 ARM7:600kB/s,ARM9:550kB/s,通过DCC最高可达 800 kB/s*最高JTAG速度12 MHz*目标板电压范围 1.2V-3.3V*自动速度识别功能*监测所有JTAG信号和目标板电压*完全即插即用*使用USB电源(但不对目标板供电)*带USB连接线和20芯扁平电缆*支持多JTAG器件串行连接*标准20芯JTAG仿真插头*选配14芯JTAG仿真插头*带J-Link TCP/IP server,允许 通过TCP/IP网络使用J-LinkJ-Link支持ARM内核* ARM7TDMI(Rev 1)* ARM7TDMI(Rev 3)* ARM7TDMI-S(Rev 4)* ARM720T* ARM920T* ARM926EJ-S* ARM946E-S* ARM966E-S速度信息:LINK 驱动安装二、J-LINK注意:J-LINK有非常多的授权文件(License), 请 根据实际需要选 择合适 的授权版本!IAR版本的 J-LINK功能有限,但是价格较为便宜,推荐购买全功能版本的 J-LINK,可以获 得更多性能!首先到 /download_jlink.html下载最新的J-LINK 驱动软件,J-Link ARM software and documentation pack,内含USB driver, J-Mem,J -Link.exe and DLL for ARM, J-Flash and J-Link RDI。

物尽其用,分享一个很棒的工具

物尽其用,分享一个很棒的工具

物尽其用,分享一个很棒的工具我们常常都只是用Jlink来在线调试程序、下载程序。

其实Jlink 的用处很多,我们要好好运用。

本篇笔记我们就来分享一下Jlink的另一个用途:使用Jlink+JScope显示波形。

J-Scope是SEGGER推出的波形显示软件,傻瓜式,简单易上手。

软件界面如下:其有两种方式来显示波形,一种是HSS 模式,另一种是RTT模式。

这里我们分享的是RTT模式的使用。

实验演示(keil工程)(1)准备工作实验的前提是需要有Jlink仿真器(V9或V10),其它的有些不能与JScope搭配使用。

同时要装好Jlink驱动与JScope上位机软件:(2)工程移植、测试代码编写安装好JScope软件之后,在其安装目录下会有如下源码:我们这里的路径是:C:\Program Files (x86)\SEGGER\JScope_V611m\Sample\Example Code RTT复制如下三个文件至我们的keil工程目录下:然后在keil中添加至我们的demo工程里,并包含头文件SEGGER_RTT.h即可。

然后编写如下测试代码:SEGGER_RTT_ConfigUpBuffer函数说明:•第 1 个参数要填通道 1,实际测试通道 0 不可用•第 2 个参数非常重要,要使用固定的格式,字符串 JScope_是固定的,主要是下划线后面的字符。

支持的格式如下:比如:JScope_I4I4表示数据包格式由两个有符号32位数据组成。

•最后一个参数的备选项为:•使用RTT 模式的话,最后一个参数仅支持SEGGER_RTT_MODE_NO_BLOCK_SKIP和SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL。

jlink rtt数据访问原理 -回复

jlink rtt数据访问原理 -回复

jlink rtt数据访问原理-回复RTT(Round Trip Time)是指往返时延,即从一个设备发送一个数据包到另一个设备并返回所花费的时间。

RTT的测量对于网络性能的评估和故障排查非常重要。

JLink是一种通用的调试器和仿真器,用于嵌入式开发中的软件调试和固件升级等操作。

在JLink中,通过RTT技术可以实现对目标系统的非侵入性数据访问,本文将介绍RTT数据访问的原理及其相关细节。

一、RTT数据访问的概述RTT数据访问是一种基于硬件和软件协同工作的策略,利用目标系统中的专用硬件和调试器中的特定软件来实现数据在目标系统和调试器之间的传输。

传统上,调试器通过跟踪目标系统的引脚或通过JTAG接口来访问目标系统的内部状态。

而RTT数据访问则是通过系统上的通信总线,如AHB或APB总线,来与目标系统进行通信。

这种方式不仅更加灵活和高效,还在很大程度上减少了对目标系统的干扰。

二、RTT数据访问的原理RTT数据访问的核心是建立一个特殊的通信通道,通过这个通道进行数据交换。

通常情况下,这个通信通道是在目标系统的内存中分配的一块特殊区域。

这个特殊区域被称为RTT系统区域,其中包含了一些用于通信的控制结构和数据缓冲区。

1. RTT系统区域RTT系统区域通过一系列的结构体来组织。

其中最重要的是一个包含了调试器和目标系统之间通信状态的结构体。

此外,还有用于交换数据的接收和发送缓冲区。

调试器通过读取和写入这些缓冲区来与目标系统进行通信。

2. 目标系统的RTT软件组件目标系统中也需要运行一段RTT的软件组件。

这段软件主要负责将目标系统中的关键数据传输到调试器中,同时还负责从调试器中接收命令并执行这些命令。

RTT软件组件运行在目标系统的中断服务例程中,以保证实时性和可靠性。

3. RTT数据传输的执行过程RTT数据传输通常从调试器开始。

调试器首先向目标系统中的RTT系统区域写入需要发送的数据,并向RTT的相关控制寄存器写入信息以激活数据传输。

JLINK-rtt使用经验

JLINK-rtt使用经验

JLINK-rtt使⽤经验Jlink RTT使⽤说明单⽚机进⾏调试,⼀般都会分配出来⼀个调试的串⼝,如果单⽚机使⽤jlink烧录器,那么可以使⽤调试⼯具-RTT来代替串⼝进⾏信息的交互,不需要使⽤串⼝。

RTT(Real Time Terminal)是SEGGER公司新出的可以在嵌⼊式应⽤中与⽤户进⾏交互的实时终端。

J-Link驱动4.90之后的版本都⽀持RTT。

需要安装J-Link驱动4.90之后的版本1、使⽤JLINK SEGGER RTT打印调试信息然后将这四个⽂件添加到⾃⼰⼯程中去,并且在主程序⼯程中包含SEGGER_RTT.h⽂件。

然后我们就可以直接在主函数中调⽤SEGGER_RTT_printf函数来打印调试信息了,该函数⽤法和printf函数类似,只是多了⼀个参数⽤来指定RTT通道。

其中通道0,就是我们在调试时使⽤的通道。

在主函数中添加如下代码即可打印信息。

SEGGER_RTT_printf(0,"Times %d\r\n",++u32Counter);这个函数不⽀持浮点数,如输出浮点数可以先使⽤sprintf输出到缓存,再使⽤SEGGER_RTT_WriteString输出。

char rtt_out_str[80];sprintf(rtt_out_str,"FloatValueIs%f;\n",var_float);SEGGER_RTT_WriteString(0,rtt_out_str);单独打开RTT VIEWER 可以使⽤如果打开JLinkRTTClient,必须同时打开RTT VIEWER 才可以使⽤2、RTT输⼊检测⾸先在程序中添加SEGGER_RTT_Read(0,rtt_buf,sizeof(rtt_buf));其次在J-Link RTT Viewer控制台的Input⾥⾯选择Sending/Send on Enter,然后End of Line 选择None这样就可以通过下⽅输⼊框输⼊信息,按Enter发送RTT VIEWER input设置Win10⾃带的截图功能⾮常好⽤,快捷键Win + Shift + S。

调试备忘录-J-LinkRTT的使用(原理+教程+应用+代码)

调试备忘录-J-LinkRTT的使用(原理+教程+应用+代码)

调试备忘录-J-LinkRTT的使⽤(原理+教程+应⽤+代码)⽬录写在前⾯什么是RTT?RTT的⼯作原理RTT的性能快速使⽤教程⾼级使⽤教程附上测试代码2019年12⽉27⽇更新--增加打印float的功能MCU:STM32F407VEMDK:5.29IAR:8.32⽬录--点击可快速直达写在前⾯本⽂介绍了J-Link RTT的部分使⽤内容,很多地⽅参考和使⽤了J-Link的官⽅资料,有的地⽅可能翻译的不太准确,请见谅。

如果想了解更加准确详细的内容,请点此处。

什么是RTT?RTT(Real Time Transfer)是⼀种⽤于嵌⼊式中与⽤户进⾏交互的技术,它结合了SWO和半主机的优点,具有极⾼的性能。

使⽤RTT可以从MCU⾮常快速输出调试信息和数据,且不影响MCU实时性。

这个功能可以⽤于很多⽀持J-Link的设备和MCU,兼容性强。

RTT⽀持两个⽅向的多个通道,上到主机,下到⽬标,它可以⽤于不同的⽬的,为⽤户提供尽可能多的⾃由。

默认实现每个⽅向使⽤⼀个通道,⽤于可打印终端输⼊和输出。

使⽤J-Link RTT Viewer,可⽤于“虚拟”终端,允许打印到多个窗⼝(例如,⼀个⽤于标准输出,⼀个对于错误输出,⼀个⽤于调试输出)。

RTT的⼯作原理RTT在MCU的存储器中使⽤SEGGER RTT控制块结构管理数据读写。

控制块对于每个可⽤的信道都在内存中包含了⼀个ID,通过J-Link或者环形缓冲结构区(链表)都可以通过ID找到对应的控制块。

可⽤信道的最⼤数⽬可以在编译时配置,并且每个缓冲区都可以在MCU运⾏时配置和使⽤。

上下缓冲区可以分开处理。

每个通道都可以配置为阻塞或⾮阻塞。

在阻塞模式下,应⽤程序将等待缓冲区写满,直到可以写⼊所有内存为⽌,这将导致应⽤程序处于阻塞状态,但可以防⽌数据丢失。

在⾮阻塞模式下,只会写⼊适合缓冲区的数据,或完全不写⼊缓冲区,其余的数据将被丢弃。

这样即使没有连接调试器,也可以实时运⾏。

RTT使用问题总结

RTT使用问题总结

RTT使⽤问题总结1 ENV下不⽤将stm32fnxx_hal_msp.c拷贝到RTT⼯程⽂件夹下(也不⽤调⽤其中的⽚上外设函数如voidHAL_SPI_MspInit(SPI_HandleTypeDef* hspi),听说KCONFIG⾃⼰会调⽤根据弱定义寻找;studio下根据⽂档说是需要;stm32_spi_init(drv_spi.c line81)-》HAL_SPI_Init(被spi_conifgure 调⽤drv_spi.c line387,代码在hal_spi.c line 310,⼜调⽤了 HAL_SPI_MspInit)-》 HAL_SPI_MspInit(hspi)-》在stm32f4xx_hal_spi.c中弱定义,在stm32f4xx_hal_msp.c 中根据cubumx⽣成,所以需要将cubumx⽣成的 HAL_SPI_MspInit拷贝到board.c下。

HAL_SPI_MspInit在stm32f4xx_hal_spi.c中弱定义;在由cubumx在stm32f4xx_hal_msp.c⽣成。

HAL_SPI_Init调⽤HAL_SPI_MspInitstm32_spi_init()调⽤HAL_SPI_Init()spi_configure调⽤stm32_spi_init()spi_configure通过stm_spi_ops结构体被rt_spi_bus_register调⽤-》⼜被rt_hw_spi_bus_init(void)-》⼜被rt_hw_spi_init(void)调⽤-》通过INIT_BOARD_EXPORT(rt_hw_spi_init)调⽤进⾏初始化。

2 关于SPI配置,当设定最⼤速率后最终发现时钟频率降低2倍的原因,是因为RTT获取时钟源函数stm32_spi_init下的 SPI_APB_CLOCK不正确,没有正确反映外设挂在哪个总线下⾯;解决⽅法有2种:⽅法1 :将struct rt_spi_configuration cfg 的cfg.max_hz*2并做好备注声明(适合共享给其它⼈应⽤的软件包);⽅法2:将下⾯的通过宏定义修改正确,从⽽获得正确的参数时钟(分频值),这种⽅法适合代码⾃⽤(因为别⼈不⼀定⽤该SPI,且时钟源也不⼀定相同(不同系列的STM32));#if defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0)SPI_APB_CLOCK = HAL_RCC_GetPCLK1Freq();#elseSPI_APB_CLOCK = HAL_RCC_GetPCLK2Freq();#endif3 外设的使⽤⼀定要注意打开board.h进⾏类似以下的声明#define BSP_USING_UART1#define BSP_UART1_TX_PIN "PA9"#define BSP_UART1_RX_PIN "PA10"4 ⾃⼰写的驱动⽼是说找不到头⽂件,尽管路径已经设置好了,原因时下⾯的宏没有打开#define PKG_USING_ADE7913#ifdef PKG_USING_ADE79135 studio下从HSI到HSE,将cubmx⽣成的SystemClock_Config 替换 drv_clk.c中的system_clock_config(target_freq)并将该函数的源代码屏蔽;同时在 STM32F4xx_HAL_CONF.H中修改HSE的值//先修改stm32f1xx_hal_conf.h中的 HSE_VALUE与实际的⼀致//然后在drv_clk.c中替换SystemClock_Configvoid clk_init(char *clk_source, int source_freq, int target_freq){//system_clock_config(target_freq);SystemClock_Config();}//最最后同时也修改board.h中的三个宏,尽管原来的HSI时钟配置也没有⽤到其进⾏计算,只是为了提⽰输出*-------------------------- CLOCK CONFIG BEGIN --------------------------*/#define BSP_CLOCK_SOURCE ("HSE")#define BSP_CLOCK_SOURCE_FREQ_MHZ ((int32_t)8)#define BSP_CLOCK_SYSTEM_FREQ_MHZ ((int32_t)72)/*-------------------------- CLOCK CONFIG END --------------------------*/6 studio下SPI的使⽤,按照board.h中所说即可,不⽤显⽰调⽤HAL_SPI_MspInit(&hspix),有的地⽅⾃会调⽤7 对于多个线程共享互斥量时⼀定要注意:1 申请和释放要成对使⽤;2 如果有条件分⽀要么在各⾃分⽀中释放(适⽤于如果分⽀执⾏完需要较长时间。

jlink rtt数据访问原理 -回复

jlink rtt数据访问原理 -回复

jlink rtt数据访问原理-回复JLink RTT数据访问原理RTT(Real-Time Transfer)是一种被广泛应用于嵌入式系统中的通讯协议,能够实现嵌入式系统与PC之间的实时数据传输。

在许多调试和分析场景中,RTT被用作一种有效的数据交互方式。

JLink是一种常用的调试器,支持RTT数据访问,并提供了简单和高效的接口使得调试和分析更加便捷。

本文将介绍JLink RTT数据访问的原理,帮助读者更好地理解和应用该技术。

一、JLink调试器简介JLink是由捷联科技推出的一系列嵌入式调试器产品,主要用于嵌入式系统的调试和开发工作。

通过JLink调试器和相应的软件工具,开发人员可以实现对目标设备的调试、烧录和分析等操作。

JLink调试器提供了多种接口和协议支持,其中就包括RTT。

二、RTT数据访问概述RTT是一种实时数据传输协议,可以在嵌入式系统和PC之间进行快速的数据传输。

RTT通过JLink调试器和目标设备之间的调试接口进行通信,具有轻量级和低延迟的特点。

它能够实现很高的传输速度,以及对目标设备的实时监控和调试。

三、JLink RTT数据访问原理JLink RTT数据访问的原理如下:1. RTT可用RAM区域:在目标设备的RAM中分配一块特定的内存区域用于RTT的数据通信。

这个区域可以根据应用程序的需要进行分配,一般情况下是位于栈顶地址区域,以保证数据的稳定和安全。

这个RAM区域会在应用程序链接时被编译器指定。

2. JLink链接:在编译和链接过程中,将JLink RTT库链接到应用程序中。

这个库包含了RTT通信所需的驱动代码和协议实现,以及与JLink调试器的通信接口。

3. JLink与目标设备连接:将JLink调试器通过调试接口连接到目标设备的调试接口,建立通信连接。

这样,JLink调试器就可以通过与目标设备的调试接口进行数据交互。

4. JLink软件和GUI工具启动:通过JLink软件和GUI工具启动目标设备的应用程序,开始进行调试和分析工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Jlink RTT使用说明
单片机进行调试,一般都会分配出来一个调试的串口,如果单片机使用jlink烧录器,那么可以使用调试工具-RTT来代替串口进行信息的交互,不需要使用串口。

RTT(Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。

J-Link驱动4.90之后的版本都支持RTT。

需要安装J-Link驱动4.90之后的版本
1、使用JLINK SEGGER RTT打印调试信息
然后将这四个文件添加到自己工程中去,并且在主程序工程中包含SEGGER_RTT.h文件。

然后我们就可以直接在主函数中调用SEGGER_RTT_printf函数来打印调试信息了,该函数用法和printf函数类似,只是多了一个参数用来指定RTT通道。

其中通道0,就是我们在调试时使用的通道。

在主函数中添加如下代码即可打印信息。

SEGGER_RTT_printf(0,"Times %d\r\n",++u32Counter);
这个函数不支持浮点数,如输出浮点数可以先使用sprintf输出到缓存,再使用SEGGER_RTT_WriteString输出。

char rtt_out_str[80];
sprintf(rtt_out_str,"FloatValueIs%f;\n",var_float);
SEGGER_RTT_WriteString(0,rtt_out_str);
单独打开RTT VIEWER 可以使用
如果打开JLinkRTTClient,必须同时打开RTT VIEWER 才可以使用
2、RTT输入检测
首先在程序中添加SEGGER_RTT_Read(0,rtt_buf,sizeof(rtt_buf));
其次在J-Link RTT Viewer控制台的Input里面选择Sending/Send on Enter,然后End of Line 选择None
这样就可以通过下方输入框输入信息,按Enter发送
RTT VIEWER input设置
Win10自带的截图功能非常好用,快捷键Win + Shift + S。

相关文档
最新文档