最近将多年来收集到的教学视频、国内外图书、源码等整理整合拿出来,涉及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 加载elf文件命令,把指定的elf文件加载到目标设备或者仿真设备的0x1488800000地址上去。elf文件在编译时会把源文件的路径加入到elf文件中,我们后面加上/nocode代表没有对应的sourcecode,trace32就不会去对应目录去查找源文件了。当然我们也可以通过/path来指定sourcecode目录。比如: 加载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的指示信息更少,只能看到汇编代码)。