[飞腾]Trace32使用概述

news2024/11/29 3:45:30

最近将多年来收集到的教学视频、国内外图书、源码等整理整合拿出来,涉及arm、Linux、python、信号完整性、FPFA、DSP、算法、stm32、单片机、制图、电子模块、kali、出版社图书等。资料目前约1.5TB+。资料详情请参阅:

1.5TB电子工程师资料详细介绍icon-default.png?t=MBR7https://b23.tv/7Kq7GMc

 视频教程:

B站:【教程11】飞腾CPU JTAG Trace32使用概述icon-default.png?t=MBR7https://www.bilibili.com/video/BV1pG411c77F/?vd_source=6b0aeb756259b17f1846941ff75f37c6

1. CPU JTAG电路的设计

根据飞腾demo图trace32的接法图如下图所示(新一些的demo图jtag的接法已经删除了,可以看比较老点儿的demo才会有这部分原理图,这里参考FT-2000_4core_demo_V1.2_20190809.zip):

2. Trace32简介

Trace32为德国Lauterbach(劳德巴赫)公司研制的仿真测试工具,TRACE32采用了很多领先技术,双端口存储技术,实时多任务处理机制,以太网、光纤通信技术、多CPU调试技术、软件代码覆盖分析技术、基于断点系统的存储技术、多级触发单元技术、时钟处理单元技术、动态存储技术等,有助于固件、系统级代码调试。

Trace32整体除电源外,需要包含一个调试模块和一个调试接头。我们使用的是usb接口的power debug调试模块。调试接头需要使用支持arm v8的接头。这里需要特别说明的是,调试模块power debug是固定不变的,调试接头需要根据不同的平台选择不同的接头,有x86用的,有ppc用的,当然也有arm用的,并且trace32软件上读取的license也是存在在调试接头中的。

软件下载链接地址:

TRACE32® Download Trace32 Software for full installation (lauterbach.com)

https://www.lauterbach.com/frames.html?country=cn

3 Trace32软件安装

4 Trace32调试使用

4.1 CPU JTAG管脚功能配置

硬件上将仿真器接头连接到CPU JTAG接口。实现JTAG连接要将处理器FT-2000/4的管脚复用调成JTAG,而不是CAN。简单的方式就是在系统gurb里改,改/boot/efi/boot/grub/grub.cfg,这个文件是麒麟开机起来后最先执行的文件。在里面的kylin启动项里,在{}里第一行增加一句话Write_dword 0x28180204 0x88488440,这就是将jtag复用功能管脚配置为jtag功能。

把这个管脚复用寄存器设置为0x88488440=10001000010010001000010001000000b,下面就把复用功能设定的bit值分配出来,且只显示影响管脚复用的bit位,再提出设计jtag的信号位,最后整理如下表。

bit位

31..30

29..28

27..26

25..24

23..22

21..20

19..18

17..16

15..14

13..12

11..10

9..8

7..6

5..4

3..2

1..0

10

00

10

00

01

00

10

00

10

00

01

00

01

00

00

00

Func

0

0

0

0

0

0

0

0

信号名

Ntrst_swj

Tdi_swj

Swditms_swj

Tdo_swj

4.2 Trace32工程配置

4.3 启动脚本配置

在启动前,一定要加上链接用脚本。

脚本请联系飞腾FAE获取。

Trace32的命令在软件的安装完目录下是有一系列指导手册的,在“pdf”文件夹下。

举例几个参考文件:

training_practice.pdf      Training PRACTICE 

practice_user.pdf            PRACTICE Script Language User’s Guide

practice_ref.pdf            PRACTICE Script Language Reference Guide 命令查询手册

general_ref_a.pdf            以a字母开头的命令手册

4.3 启动调试

脚本添加后,点击“start”,trace32会自动执行脚本进行链接、执行。

Start后界面结果如下:

5 Trace32操作介绍

5.1 工作区介绍

下面对trace32的操作界面进行介绍:

红圈中的“system down”指示目标板己经供电,如果目标板电源电压低或没有的话,红

圈的区域会显示“POWER DOWN”。TRACE-ICP通过JTAG接口的1脚检测目标板电压,电压范围应该在1.8到3.3伏之间。

调试界面分成五个区域,从上到下依次是主菜单区、快捷按钮区、工作区、行命令输入区、行命令软件区、状态显示区。主菜单区是各种菜单命令的入口区域。快捷按钮区是各种常用命令的快捷使用按钮。用户可以自定义主菜单和快捷按钮。工作区是各种对话框窗口的显示区域。行命令输入区是各种命令通过手动输入执行的区域。行命令软键区是协助用户输入行命令的区域,它提供所有行命令的软键输入方法。状态显示区指示当前的调试状态。

如果在前面配置中没有引入脚本.cmm文件,也可以通过从主菜单区点击“File->Run Batchfile…”打开脚本文件选择对话框,选择执行。

       

 

5.2 观察/修改寄存器

从主菜单区点击“CPU->CPU Registers”,打开内核寄存器窗口,如下图所示。

从Pic12所示的内核寄存器窗口,用户能够观察处理器内核寄存器的值。如果用户想

修改某一个寄存器的值,只要双击寄存器名右边的值,在行命令输入区就会出现相应寄存器值修改的命令,紧接着输入十六进制的值(如,0x12345678)并回车就可以了。

下图是以修改寄存器R2的值为例,在行命令输入区出现的命令。

5.3 设备寄存器观察菜单

如上图所示的设备寄存器窗口在调试不同的处理器时是不同的。如果用户要修改某个

寄存器的值,双击该寄存器的值,在行命令输入区就会出现相应的设备寄存器修改命令,在命令后面输入要修改的值回车即可。

5.4 观察/修改存储器

从主菜单区点击“View->Dump…”,打开存储器观察窗口,如下图所示。

在地址输入框中输入要观察的地址,地址也可以用符号方式输入。输入地址之后点击

“OK”按钮,打开存储器显示窗口,如下图所示。

用鼠标双击某一个存储单元的内容,在命令行就会出现存储器数据修改命令提示,用户

只要填入要修改的数据回车即可。

5.5 观察符号表

如下图所示,点击“View->Symbols->Browse”打开符号表对话框。

在符号表对话框中可以通过单选钮“Symbols'”选择要观察函数或是变量等符号。在符

号表对话框中双击变量符号会打开变量观察对话框,双击函数名会打开程序列表窗口。

5.6 全速运行程序

在命令行输入“GO”命令,程序从当前P℃开始实时全速运行。要全速运行程序,用

户也可以通过主菜单点击“Rm>Go”来实现。或者,用户可以按F7来全速运行程序。程序全速运行时,在状态显示区会有“Running”指示。用户也可以在主菜单或程序列表窗口点击下图所示的红框中的按钮,也可以实现全速运行程序。

5.7 停止运行程序

用户从命令行输入“Brea”命令,或者按快捷键F8,都可以停止运行程序。用户也可

以从主菜单下选择“Run->Break”,停止运行程序。用户也可以在主菜单或程序列表窗

口单击下图中所示红框中的按钮来停止运行程序。

6 与linux内核联调简述

与linux内核联调的方式可以参考B站上劳德巴赫的官方视频:

使用TRACE32®调试Linux内核模块和用户进程_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV17A411n7Yt/?spm_id_from=333.337.search-card.all.click&vd_source=6b0aeb756259b17f1846941ff75f37c6

与内核联调需要加上vmlinux,参考网页说明

Trace32 simulator调试以及简单实用命令介绍 - 代码天地 (codetd.com)

https://www.codetd.com/article/4940929

data.load.elf ../../vmlinux 0x1488800000 /nocode
     

加载elf文件命令,把指定的elf文件加载到目标设备或者仿真设备的0x1488800000地址上去。elf文件在编译时会把源文件的路径加入到elf文件中,我们后面加上/nocode代表没有对应的sourcecode,trace32就不会去对应目录去查找源文件了。当然我们也可以通过/path来指定sourcecode目录。比如:

data.load.elf ../../vmlinux 0x1488800000 /path  /home/xie/linux-4.4/
     

加载elf文件到指定地址,并且指定了和该elf对应的source code目录。

找系统供应商要来和板卡运行系统镜像一致的vmlinux(需要elf格式的),放置到pc机目录下。使用data.load命令,加载vmliux镜像,脚本为:

data.load elf C:\vmlinux /NOCODE     (C:\vmlinux为vmlinux保存目录)

加入脚本,在启动调试后,再进入view->list source之后就可以看到一些注释文件了。因为系统供应商,比如麒麟给的vmlinux是没有源码的,所以没有办法通过list看到高级语言的函数,只能看到一些汇编的标记。

举例带源程序的混合显示程序列表窗口。通过点击程序列表窗口上的“Moe”按钮可以切换混合和源码显示方式。

如果用户没有通过data.load命令加载符号文件或者所加载的符号文件包含的调试信息不足,用户将会看不到源码,所得到的程序列表窗口可能如下图所示(这种比麒麟给的vmlinux的指示信息更少,只能看到汇编代码)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件定义的存储时代即将结束

数据存储、安全性、保护和整体管理对于大多数组织的生存至关重要。 从软件定义的存储时代的结束到本地存储的回归,Nyriad的首席营收官概述了他对最新技术趋势的看法,并提供了他对2023年将会发生的预测。 从以CPU为中心的软件定义存储过渡到卸载辅助架构…

Java 开发环境配置 || Java 基础语法

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境,以及不同系统下的环境变量怎么配置。 window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:Java Downloads | Oracle 点击如下下载按钮&#xff…

阿里CCO:基于Hologres的亿级明细BI探索分析实践

作者:张乃刚(花名:隽驰),CCO数据开发 CCO是Chief Customer Officer的缩写,也是阿里巴巴集团客户体验事业部的简称。随着业务的多元化发展以及行业竞争的深入,用户体验问题越来越受到关注。CCO体验业务运营…

【前端】CSS进阶

四、选择器进阶 1.1后代选择器:空格 作用:根据HTML标签的嵌套关系,选择父元素后代中满足条件的元素 选择器语法:选择器1 选择器2{css} 结果: 在选择器1所找到标签的后代(儿子、孙子、重孙子…&#xf…

Zipkin基础知识及Linux下搭建服务端

Zipkin组成 Zipkin的基础架构,他由4个核心组件构成:分别是Collector、Storage、RESTful API、WebUI Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为 Zipkin 内部处理的 Span 格式…

最快速的获取元素的方法?快到你想象不到~

1、首先我们先准备一个div标签&#xff0c;id定义为box<div id"box"></div>2、通常情况下我们会使用原生js获取&#xff0c;如下所示&#xff1a;let box document.getElementById("box"); // 或者 let box document.querySelector("#b…

【Vue中使用Echarts】Echarts的基本配置

文章目录一、Echarts的基础配置二、柱状图表1.原始柱状图2.经过美化的柱状图3.横向柱状图一、Echarts的基础配置 需要了解的主要配置&#xff1a;series xAxis yAxis grid tooltip title legend color 属性作用series系列列表。每个系列通过 type 决定自己的图表类型 大白话&am…

ConvNeXt V2学习笔记

ConvNeXt V2学习笔记 ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders Abstract 在改进的架构和更好的表示学习框架的推动下&#xff0c;视觉识别领域在21世纪20年代初实现了快速现代化和性能提升。例如&#xff0c;以ConvNeXt[52]为代表的现代Co…

目标检测:RCNN、SppNet、Fast RCNN、Faster RCNN是如何过渡的?

目标检测&#xff1a;RCNN、SppNet、Fast RCNN、Faster RCNN、思想总结R-CNN候选框生成Training迁移学习分类与回归候选框R-CNN存在的问题SppNet面临的问题空间金字塔池化特征图映射SppNet存在的问题Fast R-CNNR-CNN与SppNet存在的问题核心思想模型流程ROI Pooling多任务损失的…

力扣刷题记录——326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组的交集 II

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组…

如何搭建邮箱服务器

目录 部署 DNS 黑名单 Mailcow:dockerized 部署 Mailcow:dockerized 为 Mailcow:dockerized 配置 TLS Mailu.io 生成配置文件 部署 Mailu 安全 S/MIME OpenPGP 推荐阅读 搭建邮局服务器的想法之前一直都有&#xff0c;不过一直没有尝试&#xff0c;国庆的时候从阿里…

62. 目标检测 / 物体检测 以及边缘框代码实现

1. 图片分类和目标检测的区别 2. 边缘框 3. 目标检测数据集 目标检测数据集常用的格式&#xff1a;假设是用文本文件来存的话&#xff0c;每一行表示一个物体&#xff0c;分别有文件名、物体类别、边缘框。因为一个图片文件里面可能有多个物体&#xff0c;同一个文件名可能会出…

STC32G 三电感电磁循迹小车

文章目录前言准备工作增量式以及位置式PID电机闭环电磁采样舵机闭环合并效果前言 准备18届的负压电磁&#xff0c;趁现在考试延期赶紧把车子给调了。 现在速度就只能提到1.5m&#xff0c;再往上调就有点打滑了&#xff0c;只能等后面逐飞把负压电机的做出来了之后看能不能让车…

靶机Os-Hax测试笔记

靶机Os-Hax测试笔记 靶机描述 Difficulty : Intermediate Flag : boot-root Learing : exploit | web application Security | Privilege Escalation Contact … https://www.linkedin.com/in/rahulgehlaut/ This works better with VirtualBox rather than VMware 下载…

elasticsearch 7.9.3知识归纳整理(六)之kibana图形化操作es指南

kibana图形化操作es指南 一、创建用户&#xff0c;角色和权限指引 1.创建角色 1.1 在kibana首页点击Manage and Administer the Elastic Stack下的securitys settings 1.2 点击左侧Security 下的roles 1.3 点击右上角的create role 1.4 输入角色名字 完成后点击下面的create…

C++不知算法系列之迷宫问题中的“见山不是山”

1. 前言 迷宫问题是一类常见的问题。 初识此类问题&#xff0c;应该是“见山是山”&#xff0c;理解问题的原始要求&#xff0c;便是查找从起点到终点的可行之路。 有了广泛的知识体系之后&#xff0c;应该是"见山不是山"。会发现迷宫就是邻接矩阵&#xff0c;树和…

CDH6.3.2整合DolphinScheduler3.0.0

注意事项zookeeper版本兼容要查看dolphinscheduler的libs目录下zookeeper的jar包CDH6.3.2DolphinScheduler3.0.0前置条件默认CDH以正确安装并启动至少官方要求的基础环境以正确安装并配置,点击跳转使用mysql需要驱动包 mysql-connector-java-8.0.16.jar,同时所有服务的libs里面…

电力系统电价与温度模型(Matlab代码实现)

目录 1 数学模型 2 运行结果 3 Matlab代码实现 1 数学模型 用于模拟电价的模型是一个简化形式的混合模型&#xff0c;如下图1所示。其根本驱动因素是天然气价格和气温。该模型在内部捕获了驱动因素与电价的关系之间的关系&#xff0c;以及与一天中的时间、一周中的哪一天和…

日常生产用项目一整套DevOps流水线搭建-笔记一(镜像仓库的设置)

写在前边 很多项目新手在接手开发项目的时候,由于缺乏经验,只能通过比较笨的方法去进行项目的部署和开发.这样就会非常非常的麻烦,重复的工作很多很多.我借着一个项目开发的时机,第一次实现了我原先只在想象中的流水线部署.但是由于跟正规公司的项目规模还有差距,我们的流水线…

十六、状态管理——Vuex(3)

本章概要 action 分发 action在组件中分发 action组合 action 16.7 action 在定义mutation 时&#xff0c;一条重要的原则就是 mutation 必须是同步函数。换句话说&#xff0c;在 mutation() 处理器函数中&#xff0c;不能存在异步调用。例如&#xff1a; mutations:{some…