【ARM Trace32(劳特巴赫) 使用介绍 5-- Trace32 通过 JTAG 命令获取 DP IDCODE】


请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】

文章目录

    • Trace JTAG Command Line
      • Trace32 JTAG 数据发送命令
      • Trace32 JTAG 数据接收命令
      • Trace32 数据访问修饰符
    • Trace32 IDCODE 脚本实例
    • Trace32 API

Trace JTAG Command Line

Trace32 JTAG 数据发送命令

  • JTAG.SHIFTTMS <bit> [ <bit> …]:根据后面参数值将 状态机运行到对应的状态上;
  • JTAG.SHIFTTDI <bit> [ <bit> …]:如果 TAP状态机处于“Shift-DR” 就将命令后的参数转移到TMS上,最左边开始。
  • JTAG.SHIFTREG<bit> [ <bit> …]:如果 TAP状态机处于“Shift-DR” 就将命令后的参数转移到TMS上,并离开“Shift-DR”状态。

JTAG.SHIFTTDIJTAG.SHIFTREG的区别:

  • JTAG.SHIFTTDI 最后会产生一个 0 在 TMS上,所以最后保持在Shift-IR 或者 Shift-DR 状态;
  • JTAG.SHIFTREG 最后会在 TMS上发送个1 用来跳转到下个状态 Exit1-IR 或者 Exit1-DR状态。

Trace32 JTAG 数据接收命令

在每次的shift 操作后,TDO上的数据都会被读出,可以通过JTAG.SHIFT() 来读取最后一次 TMS 或者 TDI shift 操作后的数据。

Trace32 数据访问修饰符

在Trace32环境中,%byte, %word, %long是数据访问修饰符,用于指定数据的大小和对齐方式。

  • %byte: 该修饰符用于指定一个字节(8位)大小的数据。例如,在访问内存时,可以使用%byte来读取或写入一个字节的数据。
  • %word: 该修饰符用于指定一个字(通常为16位,但具体大小取决于目标系统)大小的数据。例如,在访问内存时,可以使用%word来读取或写入一个字的数据。
  • %long: 该修饰符用于指定一个长字(通常为32位,但具体大小取决于目标系统)大小的数据。例如,在访问内存时,可以使用%long来读取或写入一个长字的数据。

这些修饰符可以用在许多Trace32命令中,如Data.SetData.CData.S等,以指定数据的大小和对齐方式。例如,以下命令会在地址0x1000处写入一个长字的数据:

Data.Set %long 0x1000 0x12345678

这个命令会将0x12345678这个32位的值写入地址0x1000处。

Trace32 IDCODE 脚本实例

; Lock JTAG port and enable debug cable
JTAG.LOCK
JTAG.PIN ENable; release System Reset
; reset TAP Controller and move to “Run-Test/ Idle“; read JTAG ID Code:
; move TAP controller from “Run-Test/ Idle“ to "Shift-DR" state
JTAG.SHIFTTMS 1 0 0; 32 Bit "Shift-DR", WITH exiting to "EXIT1-DR"
JTAG.SHIFTREG %Long 0x0; get data read out via TDO
&idcode=JTAG.SHIFT(); move TAP controller from "Exit1-DR" to "Run-Test/ Idle" state
JTAG.SHIFTTMS 1 0; Release JTAG port
JTAG.PIN TMS 0 ; pull TMS pin to 0
JTAG.PIN TDI 0 ; pull TDI pin to 0
JTAG.UNLOCKPRINT "--ID-code of device : &idcode"
ENDDO
  • Trace32 脚本运行
    在这里插入图片描述
  • Trace32 IDDECODE 值输出
    在这里插入图片描述

Trace32 API

t32_cmd()t32_cmdwin() 是Trace32 API中的两个函数,都用于执行Trace32命令。
t32_cmd(): 该函数用于在Trace32环境中执行一条命令。这个命令被立即执行,并且不会在命令窗口中显示。这对于在后台执行命令非常有用。函数原型如下:

int t32_cmd(const char *commandstring);

commandstring 参数是你想要执行的Trace32命令字符串。

t32_cmdwin(): 该函数用于在Trace32命令窗口中执行一条命令。这个命令被写入命令窗口,并像手动在命令窗口中输入命令一样执行。函数原型如下:

int t32_cmdwin(const char *commandstring);

commandstring 参数是你想要执行的Trace32命令字符串。

这两个函数都返回一个整数值,表示命令执行的结果。如果返回0,意味着命令成功执行。如果返回非0值,意味着命令执行过程中发生了错误。

例如,你可以用t32_cmd()来设置一个断点,然后用t32_cmdwin()来执行一条go命令,这样用户可以在命令窗口中看到程序运行的结果。

关于 Trace32 JTAG 更多命令见: general_ref_j.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QQ录制视频保存到哪了?位置一览,让你轻松找回

现如今&#xff0c;录制视频成为我们日常生活和工作的一部分。qq是中国最流行的社交媒体平台之一&#xff0c;许多用户使用qq录屏功能来记录重要时刻。但是&#xff0c;很多人不知道qq录制视频保存到哪了。本文将深入研究qq录制视频功能&#xff0c;以帮助您了解如何存储和管理…

Haskell添加HTTP爬虫ip编写的爬虫程序

下面是一个简单的使用Haskell编写的爬虫程序示例&#xff0c;它使用了HTTP爬虫IP&#xff0c;以爬取百度图片。请注意&#xff0c;这个程序只是一个基本的示例&#xff0c;实际的爬虫程序可能需要处理更多的细节&#xff0c;例如错误处理、数据清洗等。 import Network.HTTP.Cl…

软件项目验收测试计划

验收测试计划 1.基本信息 2.项目成果及验收要求 2.1项目成果 2.2验收要求 1、满足业务风险控制法律法规要求。 3.验收组织 4.产品交付 5.产品安装 5.1环境要求 5.2数据库配置 5.3程序配置 6.验收测试方案 6.1测试 依据 6.2测试要求 6.3测试方法 6.4测试工作流程 6.5测试通过准则…

C 语言函数

C 语言函数 在本教程中&#xff0c;将向您介绍C语言编程中的函数&#xff08;用户定义函数和标准库函数&#xff09;。此外&#xff0c;您还将学习为什么在编程中使用函数。 函数是执行特定任务的代码块。 假设您需要创建程序来创建一个圆并为其着色。您可以创建两个函数来解…

CopyOnWriteArrayList 源码详解

目录 一. 前言 二. 源码详解 2.1. 类结构 2.2. 属性 2.3. 构造方法 2.4. add(E e) 2.5. add(int index, E element) 2.6. addIfAbsent() 方法 2.7. 获取元素() 方法 2.8. remove(int index) 2.9. size() 三. FAQ 3.1. 为什么CopyOnWriteArrayList没有size属性&…

LeetCode【215】数组中第k大的元素

题目&#xff1a; 思路&#xff1a; https://zhuanlan.zhihu.com/p/59110615 代码&#xff1a; public int findKthLargest(int[] nums, int k) {PriorityQueue<Integer> queue new PriorityQueue<>((o1, o2) -> o1 - o2);for (int i 0; i < nums.lengt…

排他思想小练习

点击 某个按钮&#xff0c;让某个按钮对应的 ul 显示&#xff0c;其他的ul 都隐藏 1 -找到所有的按钮 &#xff0c;并循环 2 -给按钮添加点击事件 3 -点击的时候 获取的对应的按钮 获取按钮对应的下标 4 - 所有的都变为黑 点击的按钮颜色变为红色 5 - 其他的所有ul 都隐…

STC89C52+HX711完成电子秤设计

一、项目背景 电子秤是一种通过传感器测量物体质量的设备&#xff0c;被广泛应用于商业和工业领域。传统的机械秤已经逐渐被电子秤取代&#xff0c;因为电子秤具有更高的精度、更方便的使用和更多的功能。 本项目利用STC89C52单片机和HX711模块完成电子秤设计&#xff0c;具有…

Axure9基本操作

产品经理零基础入门&#xff08;四&#xff09;Axure 原型图教程&#xff0c;2小时学会_哔哩哔哩_bilibili Axure 9 从入门到精通全集&#xff0c;自学必备_哔哩哔哩_bilibili 1. ① 页面对应页面个数&#xff0c;概要对应每个页面的具体内容 ② 文件类型 ③ 备用间隔改为5分…

没有设计经验的新手如何制作一本电子画册?

移动信息时代&#xff0c;电子画册逐渐取代纸质画册&#xff0c;它无需印刷&#xff0c;环保节能&#xff0c;也无需随身携带&#xff0c;通过手机/平板/电脑等设备即可随时在线浏览阅读&#xff0c;十分方便。那没有设计经验的新手如何制作一本这样随身携带方便的电子画册呢&a…

Android WebView专题

WebView 专题 第一个WebView程序&#xff1a;加载远程网址 Layout添加WebView组件&#xff1b; <WebViewandroid:id"id/webView_first"android:layout_width"match_parent"android:layout_height"match_parent"/>初始化组件&#xff0c;加…

理工ubuntu20.04电脑配置记录

8188gu无线网卡配置 首先下载github上的文件&#xff0c;进入文件夹 安装make命令 1. 查看usb无线网卡 sudo lsusb|grep 8188 2. 环境准备 sudo apt-get install git make build-essential git dkms linux-headers-$(uname -r) 3. 编译安装 git clone https://github.com…