JTAG因为文章内容比较多,拆分成了四个部分,读者可以根据需求,点击查看其它的JTAG信息:
JTAG基础
JTAG调试原理
JTAG调试实例
模拟系统崩溃,使用JTAG调试找到崩溃点
JTAG调试实例
本文以DM8168芯片为例,使用XDS560仿真器,对JTAG进行调试。
连接仿真器,查看仿真器类型。
通过设备管理器可以查看当前连接的仿真器类型和型号,方面后续调试时选择正确的仿真器型号。(根据自己实际使用的仿真器型号去选择)
打开CCS5/CCS7软件(没有可以自行安装)
新建/选择项目目录
这里不是重点,随便新建一个目录都可以。
“view”->“Target Configurations”
这里就是为了选择仿真器类型+需要仿真的芯片类型。(仿真器类型看设备管理器,芯片类型看对应的芯片型号)
“Target Configurations” -> “User Defined” -> "NewTargetConfiguration.ccxml"
这里选择对应的配置文件,可以自己新建.ccxml配置文件。
“NewTargetConfiguration.ccxml” -> "Connection" -> "Board or Device" -> “Save Configration” -> "Test Configration"
双击上一步的.ccxml配置文件,进入到配置界面,然后选择对应的仿真器类型和芯片类型(仿真器类型看设备管理器,芯片类型看对应的芯片型号)
选择结束后需要点击“Save Configration”保存本次配置,然后点击“Test Configration”测试一下仿真器能否正常连接设备。
(注:在"Test Configration"这一步可能会出很多很多的问题,每个问题都需要单独分析)
有关的JTAG连接问题,参考:
https://software-dl.ti.com/ccs/esd/documents/ccsv7_debugging_jtag_connectivity_issues.html
“Test Configration”测试JTAG连接成功打印如下:
“Target Configurations” -> “User Defined” -> "NewTargetConfiguration.ccxml" ->(右键) "Launch Selected Configuration"
确认JTAG连接功能正常后,回到之前的“Target Configurations”界面(如果找不到了,重新按4、5步去做就能找到了)
在"NewTargetConfiguration.ccxml"界面通过鼠标右键,打开"Launch Selected Configuration"选项,进入到JTAG调试
"Launch Selected Configuration" -> "Debug" -> "xxx Debug Probe xxx" -> "Connect Target"
Launch之后,就可以开始Debug调试了,选择对应的芯片,点击鼠标右键,通过“Connect Target”连接,
连接成功后,芯片末尾()中会变成Suspended/Connect...之类,
后面就可以开始读取对应的芯片寄存器了。
“Suspended” -> "view" -> "Memory..." / "Registers" / "Disassembly"...
连接上芯片后,可以调试/查看的信息有下面的几个
"Memory..." - 输入内存地址,打印对应内存地址上的值;
“Registers” - 直接查看Core寄存器中的PC、LR、R0~R15等寄存器,判断当前系统运行在哪个函数上(需要我们将程序反汇编,再根据PC/LR中的值,找到该地址对应的函数)
“Disassembly” - 对应汇编指令(其实将运行的镜像反汇编后,找到对应地址,看到的也是在执行这段命令)