TRACE32能打开,并不表示已经连上芯片。探针与电脑通信正常、目标板有电、调试端口能够响应、处理器可以停机,是几个不同环节。遇到连接失败,先记下报错出现在哪一步,再检查对应设置,比不断重试连接更容易找到原因。下面以Arm目标和TRACE32 PowerView为例说明,其他架构应使用各自的芯片手册与启动脚本。
一、Trace32如何配置目标芯片调试连接
接线前应确认芯片型号、调试接口和探针转接板。优先使用Lauterbach提供的对应板卡脚本,并阅读脚本开头的前提说明;外形相同的接头,不代表信号定义一定相同。
1、选择芯片并核对物理接口
目标板断电后连接调试线,核对方向、地线、参考电压及复位信号,再给目标上电。参考电压用于让探针识别目标侧电平,不能因为板上指示灯亮了,就认定调试接头上的参考电压也正常。
①点击【CPU】→【System Settings】,选择与目标芯片对应的【CPU】型号。
②打开接口配置窗口,选择【DebugPort】,按板卡实际接线选择【JTAG】、【SWD】或相应端口类型。
芯片选择通常也会影响其他默认参数,因此应先选芯片,再检查接口。多器件JTAG链还要核对扫描链配置,不能直接沿用单芯片板的设置。
2、设置较低时钟,再选择连接方式
初次连接可从较低调试时钟开始,例如100 kHz,稳定后再逐步提高。降低时钟有助于排查信号质量问题,但不能修复接错线或协议选择错误。
在Arm调试中,Up通常涉及复位和连接;Attach用于附加到已有运行状态,随后还需要检查是否成功停机。两种方式不能互相代替。
①在系统设置窗口的【JtagClock】中选择较低频率。
②根据调试目的选择【Up】,或选择【Attach】后点击【Break】。
二、Trace32连接目标板失败时接口与复位设置如何检查
保留第一次出现的错误信息,后面的报错可能只是连锁结果。若软件尚未识别探针,应先查电脑到探针的USB或网络通信;只有进入目标连接阶段后,才继续查板端接口。
1、出现电源错误,检查参考电压通路
target power fail提示需要从调试接头的参考电压查起。应按当前接头定义测量,检查转接板是否正确传递参考电压和地线,不要套用另一种接头的针脚编号。
如果参考电压正常,再检查线缆、插接方向以及是否接到了正确的调试口。目标板可能有多个相似接头,接错位置也会造成误判。
①点击【View】→【Message Area】,记录本次连接的首条错误。
②返回【CPU】→【System Settings】,确认当前芯片选择与实际板卡一致。
电压与接线检查需要结合原理图和测量结果完成,修改软件选项不能代替这一步。
2、出现端口错误,检查协议、时钟与扫描链
debug port fail不应直接理解为芯片损坏。接口类型选错、调试引脚复用状态不符、时钟过高或JTAG链参数不正确,都可能导致端口响应异常。
JTAG或cJTAG可以在Down状态执行SYStem.DETECT DaisyChain,并从消息区查看识别结果;SWD不使用这套菊花链检测。即使读到了器件ID,也只能说明相应接口有响应,不能证明处理器核已经可以调试。
①在系统设置窗口选择【Down】,进入【DebugPort】重新核对接口类型。
②在【JtagClock】中降低频率,再尝试连接。
③对多器件JTAG板卡,选择【Jtag】页,按扫描链结果核对PRE、POST相关参数。
3、复位相关错误,比较Up与Attach表现
如果Up失败,而Attach后可以Break,复位过程就值得重点检查。先确认探针复位线实际接到哪里,再观察连接时复位信号是否按预期变化。
target reset detected表示检测到了有效复位信号。复位线持续有效或周期性变化时,应检查供电、复位监控器及看门狗等来源。关闭复位检测只会改变调试器的判断方式,不能让被持续复位的芯片恢复正常。
①点击【CPU】→【System Settings】,核对【EnReset】是否符合当前连接方案。
②分别选择【Up】和【Attach】后配合【Break】,比较错误及停机结果。
板上复位按钮与调试接头的复位线,可能经过不同电路。按钮复位后能启动,不足以证明探针复位也能得到相同状态。
三、连接参数改好后怎样继续检查
手动调整后能连上,重新执行启动脚本又失败,这时应回头看脚本。脚本里可能仍写着原来的接口、时钟或复位参数,刚才在窗口中的修改也可能被重新覆盖。
1、对照脚本检查生效参数
先保留手动连接成功时的设置,再逐段检查启动脚本,留意芯片选择之后是否又设置了接口、时钟和复位选项。不要同时修改几处,否则即使恢复连接,也难以确定原因。
①点击【CPU】→【System Settings】,核对芯片、时钟及【EnReset】设置。
②进入接口配置窗口,选择【DebugPort】,对照脚本检查端口类型。
2、记录运行后掉线的位置
如果已经能够停机、读取寄存器,却在继续运行后断开,检查重点就应转向程序启动过程。低功耗、看门狗或调试引脚复用等配置,可能改变原先的连接条件。可以在可疑初始化代码前设置断点,分段运行,缩小范围。
①点击【CPU】→【CPU Registers】,查看停机位置。
②点击【Go】继续运行,掉线后打开【View】→【Message Area】,记录最先出现的错误。
总结
连接问题有时绕在一个很小的差别上:窗口里改过了,脚本却没改;刚上电能连,程序初始化后又断开。排查时记清每次操作前的板卡状态,才能把这些差别找出来。参数稳定后,再保存脚本和所用硬件信息,下次复现就有依据。希望大家能借此少做几轮无效尝试。需要进一步了解相关应用,也欢迎联系交流。