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

1.5TB电子工程师资料详细介绍https://b23.tv/7Kq7GMc

 视频教程:

B站:【教程11】飞腾CPU JTAG Trace32使用概述https://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的指示信息更少,只能看到汇编代码)。

物联沃分享整理
物联沃-IOTWORD物联网 » [飞腾]Trace32使用概述

发表评论