JLink Commander调试方法

2023-05-16

JLink Commander调试方法

1. 背景

  • 目前开发中常用的调试手段主要有串口、IO口输出作为调试方式。目前串口的限制较多,有些硬件不太方便接串口或者一些实时的数据,当时没有接串口则无法实时获取调试信息。
  • IO调试,可获得的信息较少,在设备出现运行异常,如死机等情况,无法通过串口和IO口获得较多现场的信息。
    Jlink可以通过commander命令调试口或者比较多现场实时的数据以及调试信息。例如:
    1)获取当前运行PC指针,
    2)获取ram以及flash中的数据,结合map文件可以查看代码中的变量值
  • 这些信息有助于提高开发效率以及快速定位问题。
    Jlink commander命令还可以和JLINK RTT结合,用来打印应用log,RTT可以用来替换uart串口。

目标

提高开发效率,获取代码现场数据,缩短定位bug的时间。

实现方法

硬件条件:
JLink(V8版本以上),
安装JLink驱动,JLink驱动要求V4.9以上,
支持Jlink的设备

JLINK Commander使用方法。

  1. 连接JLink到设备,并安装好对应的驱动,
  2. 打开Jlink Commander 终端
  3. 输入connect命令
  4. 按照提示输入:?
  5. 系统会弹窗并提示选择对应平台,以富芮坤8018为例,这里选择Cortex M3
  6. 选择接口为SWD,并设置传输速率
  7. 界面显示识别到了Cortex M3 ,便连接上了目标板,如下图所示

image-20211013163026166

  1. 此时我们就可以使用jlink commander命令来进行调试 ,commander 命令可参考segger官方说明文档:https://wiki.segger.com/J-Link_Commander

    常用的命令有halt,go,mem(mem8,mem16, mem32), write(write1, write2, write4 )

    其他的命令可以自行体验: 如setpc命令用来设置PC指针。Erase命令用来擦除flash

    命令功能参数备注
    halt停止运行停止运行后,会显示PC指针,SP地址等信息。
    go运行
    mem读取内存地址起始地址 读取长度可以结合map文件读取对应变量的值。
    write写对应地址。 可以和mem命令配合使用起始地址 读取长度结合map文件写入变量的值。
    • halt 命令是可以与go命令配合使用,执行halt命令后,设备会停止运行,并再commander终端显示当前寄存器的数值。里面可以重点关注PC指针,SP指针和R14寄存器值。

    image-20211013170030699

    上面的信息连可以看到当前运行的PC指针,再可以结合生成的map文件,就可以看到当前运行的函数。例如上面运行的PC指针为0x01000E72,下图是固件的map文件,查看map文件对应地址的函数为SEGGER_RTT_Write。

image-20211013171321990

  • go 命令:

    用来运行程序,需要和halt命令配合执行,在halt执行后,再运行go。

  • mem:

    用来读取内存的数据,参数为内存的地址和读取的长度。 mem8 mem16 mem32分别用来读取不同长度单位的数据。 也可以直接用mem命令按照8位来读取。

    例如下图命令读取0x20003300地址16个字节的内容,里面存放的是“SEGGER RTT”的字符串

    image-20211013181436054

    write:

    用来写入对应的内存地址,参数为内存的地址和写入的数据。write1 write2 write4分别用来写入不用的自己长度。

    例如要在上面0x20003300地址写入12345678,则执行如下命令:write4 0x20003300 12345678

    在通过mem命令读取0x20003300地址数据,可以看到数据已经变成了12345678

image-20211013182156671

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JLink Commander调试方法 的相关文章

随机推荐

  • 【雷达】如何将三维点云映射到二维平面

    最近在做基于雷达点云的交通标识牌识别时 xff0c 需要按照HAD格式进行输出 xff0c 由于交通标识牌不一定会与坐标轴垂直 xff0c 那么如何找到矩形标识牌的四个顶点 xff0c 是待解决的问题 由于标识牌一定是平面的 xff0c 三
  • ceres 拟合曲线

    假设有一条满足以下方程的曲线 xff1a 其中a b c为曲线的参数 xff0c w为高斯噪声 这是一个非线性模型 假设我们有N个关于x y的观测数据点 xff0c 想根据这些数据点求出曲线的参数 那么 xff0c 可以求解下面的最小二乘问
  • 独家!了不起的UP系列产品,不一样的开发板—UP Board(一)

    AAEON自2016年推出第一代UP board问世以来 xff0c 其信用卡大小的苗条小身材 xff08 世界首创Intel平台信用卡大小开发板 xff09 xff0c 配备上Intel Atom x5 z8350 处理器 xff0c 兼
  • 追求技术之路 - 那些陪伴我的书籍

    如今已经在广州一家嵌入式公司实习 xff0c 分享大学里度过的一些书籍 xff0c 有些还没读完 xff0c 个人比较喜欢经典书籍 xff0c 研读起来就有种奇妙的感觉 xff0c 比起人与人之间的复杂的关系 xff0c 书籍带给我的感觉很
  • 编程之美 -- 中国象棋将帅问题

    下过中国象棋的朋友都知道 xff0c 双方的 将 和 帅 相隔遥远 xff0c 并且它们不能照面 在象棋残局中 xff0c 许多高手能利用这一规则走出精妙的杀招 假设棋盘上只有 将 和 帅 二子 xff08 为了下面叙述方便 xff0c 我
  • C++单元测试工具 -- CppUnit

    CppUnit 作为C 43 43 语言的一款测试工具 xff0c 其实也是一个开源项目 xff0c 与JUnit一样 xff0c 用来方便开发人员进行单元测试的工具 项目地址 xff1a http sourceforge net apps
  • 拒绝游戏!发愤图强!

    立帖为证 xff01 xff01 xff01
  • C++ STL — 第6章 STL容器(二)deque

    C 43 43 STL容器deque和vector很类似 xff0c 也是采用动态数组来管理元素 使用deque之前需包含头文件 xff1a include lt deque gt 它是定义在命名空间std内的一个class templat
  • C++ STL — 第6章 STL容器(三)list

    一 list基础 List使用一个双向链表来管理元素 图一显示了list的结构 图一 list的结构 任何型别只要具备赋值和可拷贝两种性质 xff0c 就可以作为list的元素 二 list的功能 list的内部结构和vector和dequ
  • STL list remove和sort函数

    include lt iostream gt include lt list gt include lt iterator gt using namespace std bool cmp int a int b return a gt b
  • 排序 -- 简单选择排序

    选择排序 思想 xff1a 每一趟 n i 43 1 xff08 i 61 1 2 3 n 1 xff09 个记录中选择关键字最小的记录作为有序序列的第i个记录 简单选择排序 xff1a 通过n i次关键字间的比较 xff0c 从n i 4
  • HDOJ 1106 排序

    题目地址 xff1a http acm hdu edu cn showproblem php pid 61 1106 Problem xff1a 输入一行数字 xff0c 如果我们把这行数字中的 5 都看成空格 xff0c 那么就得到一行用
  • Jetson Xavier、Jetson TX2、 1080(Ti)、2080显卡运行深度学习模型性能对比(英伟达开发平台VS常用显卡)

    前言 xff1a 英伟达的Jetson TX2使得很多人认为深度学习模型终于可以像嵌入式开发平台那样做到小型化了 xff0c 不用再跑在高配计算机或者服务器上面了 xff0c 但是实际上Jetson TX2开发板的性能和深度学习常用到的10
  • 独家!了不起的UP系列产品,不一样的开发板 — UP Squared Board(二)

    UP 系列家族的成员 xff0c 经过团队经年累月的精心研发 xff0c 产品已不断丰富起来 先后开发出了第二代产品UP Squared 与第一代产品UP Board相比 xff0c 拥有 高性能低功耗的 UP Squared 似乎更令人兴
  • STM32连接--OneNET,阿里云(MQTT协议)详细教程

    x1f495 对于物联网工程 xff0c 不可或缺的必然是连接上云 xff0c 今天本人总结了上云经验 xff0c 希望对大家起到帮助哦 有用的话记得点赞收藏哦 关于如何连接OneNET OneNET https open iot 1008
  • HTTP Digest接入方式鉴权认证流程

    HTTP Digest接入方式鉴权认证流程 一 摘要认证原理 摘要认证与基础认证的工作原理很相似 xff0c 用户先发出一个没有认证证书的请求 xff0c Web服务器回复一个带有WWW Authenticate头的响应 xff0c 指明访
  • 6.2随笔

    今天打牛客 xff0c 用python写了一题 xff0c 结果发现用空格隔开的两个数不知道怎么输入 代码 xff1a n span class token punctuation span m span class token opera
  • 蓝牙Mesh简介

    蓝牙mesh简介 蓝牙Mesh的基本概念 蓝牙Mesh是2017年7月蓝牙技术联盟 xff08 Bluetooth SIG xff09 正式推出的蓝牙设备组网标准 我们知道蓝牙ble设备可以与其他设备建立GATT连接 xff0c 然后进行
  • 蓝牙Mesh的基本概念

    蓝牙mesh简介 蓝牙Mesh的基本概念 蓝牙Mesh是基于ble广播进行消息传递的一种蓝牙组网通讯网络 xff0c 是一种采用网络洪泛的方式无中心 无路由的对等网络 以实现蓝牙设备与蓝牙设备之间的多对多通讯 xff0c 使蓝牙在物联网智能
  • JLink Commander调试方法

    JLink Commander调试方法 1 背景 目前开发中常用的调试手段主要有串口 IO口输出作为调试方式 目前串口的限制较多 xff0c 有些硬件不太方便接串口或者一些实时的数据 xff0c 当时没有接串口则无法实时获取调试信息 IO调