This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C1294NCPDT:XDS100V3和 TM4C1294XL DAP 问题和(错误-1170 @ 0x0)

Guru**** 2482225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/719166/ccs-tm4c1294ncpdt-xds100v3-and-tm4c1294xl-dap-issues-and-error--1170-0x0

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

尊敬的德州仪器 TM4C 和 XDS100V3用户:

使用 XDS100V3调试器时遇到问题、DAP 访问丢失。 为了便于参考、我在这里提供了器件的数据表:

XDS100V3: https://www.olimex.com/Products/DSP/Emulators/TMS320-XDS100-V3/resources/TMS320-XDS100v3_UM.pdf
TM4C1294XL 原理图: http://www.ti.com/lit/ug/spmu365c/spmu365c.pdf

调试器配置为使用 ARM 20引脚 JTAG 接口、如数据表所示(已安装跳线 ARM_JTAG_E)。 TI 14引脚接口也已经过测试(卸载了 ARM_JTAG_E)、失败与我在下面将介绍的相同。  

然后在 CCS 中配置调试器、如下图所示:

调试器连接到 TM4C 评估版本上的 JTAG-IN (U6 - JTAG_ARM_10PIN)。 以绕过 ICDI 调试器。 通过自制电缆建立连接、连接方式如下所示:

发件人:
XDS100V3
至:
TM4C1294XL
TMS TMS
TCK TCK
TDO TDO
TDI TDI
TRST 重置
GND GND
GND EXTDBG

这是我的测试设置。 我正在运行一个大型软件项目、该项目通常在调试器设置为运行模式时运行-但当我跳过系统中的相同模拟初始化代码时、它始终暂停。 程序停止时出现的代码错误如下:

Cortex_M4_0:GEL 输出:

内存映射初始化完成

Cortex_M4_0:JTAG 通信错误:(错误-1170 @ 0x0)无法访问 DAP。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.188.0)

Cortex_M4_0:在断开连接之前无法从目标中删除调试状态。  程序存储器中仍可能嵌入了断点运算代码。  建议您在连接之前重置仿真器、并在继续调试之前重新加载程序

插入断点时、该错误也会随机发生。
如上所述、代码可以在该点运行、但当代码暂停(在调试模式下)时、代码中的随机点将发生相同的错误、非常一致。

我在 Web 和此论坛上搜索过类似问题、但无法找到任何用户的-1170错误代码。 有人可以帮我解决这个问题吗? 如果需要、我可以提供更详细的代码、但我想先介绍一般代码行、然后再介绍太详细的内容、因为 XDS100V3和 TM4C 系列的经验丰富的用户可能会很容易地找到解决方案。

非常感谢您阅读此内容-如果您有任何有助于调试问题的意见、我们将不胜感激。  
您将不断了解最新信息。

此致、
JC

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Carlsen、

    我熟悉 DAP -1170错误、但它几乎总是表现为硬件问题。 当您使用 LaunchPad 时、我假设您除了连接 JTAG 电缆之外没有做任何更改?

    在极少数情况下、DAP -1170是由于软件导致的、问题是由于执行了错误的代码、例如错误设置 SYSCLK。

    您能描述错误发生的代码是什么吗? 使用代码插入工具发布(请参阅 单击"插入代码、附加文件等..."之后的符号 选项)将帮助我们从这个角度审查和查看是否有任何问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jacobi。
    非常感谢您的回答! 这个问题确实出现在我们开发的硬件上、但是在将评估套件(Tiva)与调试器一起使用后、我们很惊讶地看到同样的问题发生了。 我们怀疑硬件是问题所在、但很难判断问题是否出现在 Tiva 上。
    由于我在手册中的某处阅读了在不修改电路板的情况下可使用"调试输入"选项、因此没有对 Tiva 套件进行任何更改。 我通过 OTG 为 Tiva 供电(使用跳线配置)。

    我在这里向大多数抽象代码片段提供了问题发生的位置。 当我单步执行函数时,在单步执行"IO_Analog _Initialize();"时会出现错误:

    void IO_Initialize()
    {
    IO_Watchdog_Initialize();
    IO_EEPROM_intialize();
    IO_SPI_Initialize();
    IO_Digital_intialize();
    IO_Analog Initialize();
    IO_PWM_Initialize();
    IO_UART_Initialize();
    IO_SMBus_initialize();
    } 


    当我步入 IO_Analog _Initializere()时,代码如下所示,我可以单步执行所有函数,而不会出现错误。

    #include 
    #include 
    #include "inc/hw_memmap.h"
    #include "driverlib/rom_map.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/adc.h"
    #include "driverlib/interrupt.h";
    
    
    
    
    
    
    
    
    
    
    
    
    
    包含"analog_analog_inc"(#define Analog_analog_analog_enueltin);#include "double analog_analog_inc"(#define Analog_analog_analog/inc.h
    )
    
    void IO_Analog _Initialize (void)
    {
    Event_InitializeEvent (&IO_Analog _ScanComplete、"AnalogComplete");
    IO_Util_EnablePeripheral (sysctl_Periph_ADC0);
    
    memset (&IOAnalogBuffer[0]、0、 sizeof (IOAnalogChannelCollection);
    
    MAP_ADCReferenceSet (ADC0_BASE、ADC_REF_INT);
    MAP_ADCHardwareOversampleConfigure (ADC0_BASE、4);
    
    uint8_t 序列发生器= 0;
    uint32_t 索引= 0;
    
    MAP_ADCSequenceDisable (ADC0_BASE、序列发生器);
    MAP_ADCSequenceConfigure (ADC0_BASE、序列发生器、 ADC_TRIGGER_PROCESSOR, 3);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、index++、 IO_Analog Channels.Spare0.ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、index++、IO_Analog 通道.PDU_245.ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、索引++、IO_Analog Channels.PDU_12V.ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、 序列发生器、索引++、IO_Analog 通道.PDU_5V/ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、 index++、IO_Analog 通道.PDU_4V5.ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、index++、 IO_Analog Channels.PDU_3V3.ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、index++、IO_Analog 通道.Force.ADCInputChannel);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、索引++、IO_Analog 通道.PullForce.ADCInputChannel| ADC_CTL_IE | ADC_CTL_END);
    
    序列发生器= 0;
    MAP_ADCSequenceEnable (ADC0_BASE、序列发生器);
    ADCIntRegister (ADC0_BASE、 序列发生器、ADC0_Seq0Handler);
    MAP_ADCIntEnable (ADC0_BASE、序列发生器);
    IntPrioritySet (INT_ADC0SS0、0);
    
    //确保已执行初始扫描
    IO_Analog _BeginScan();
    
    while (!_initialScanPerformed)
    IO_Util_BlockForms(1);
    
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_ADC1);
    
    MAP_ADCHardwareOversampleConfigure (ADC1_BASE、16);
    MAP_ADCSequenceConfigure (ADC1_base、3、ADC_TRIGGER_PROCESSOR_0);
    MAP_ADCSequenceStepConfigure (ADC1_BASE、3、0、ADC_CTL_CH19 | ADC_CTL_END | ADC_CTL_IE | ADC_CTL_SHOLD_256);
    MAP_ADCSequenceEnable (ADC1_BASE、3);
    
    ADCIntRegister (ADC1_base、3、TouchScreenIntHandler);
    IntPrioritySet (INT_ADC1SS3、IO_InterruptPriority);
    
    MAP_ADCIntEnable (ADC1_BASE、3);
    MAP_IntEnable (INT_ADC1SS3);
    }
    
    void IO_Analog _BeginScan ()
    {
    MAP_ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_PROCESSORT、3);
    MAP_ADCProcessorTrigger (ADC0_BASE、 0);
    }
    

    如果我只是"运行"代码、该错误也不会出现。
    问题出在哪呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、我还可以向您提供一些从今天的测试中获得的新数据。 将 XDS100V3与我们开发的电路板一起使用时、我可以单步执行代码直至达到相同的点、但如果我运行代码、我会得到一个新错误、而我在 Tiva (评估套件)上没有看到该错误:

    Cortex_M4_0:无法运行目标 CPU:(错误-2134 @ 0x0)无法控制器件执行状态。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.48.0)

    我在此处通过开发板上的 JTAG 接口附上原理图:


    我已经阅读了有关 JTAG 接口的各种主题-有人说应该下拉 TCK、有人说将它拉高同样好。 这是问题吗? 或者、对于我为什么在开发板上得到额外的误差-2134有其他解释吗? (与不在 Tiva 上使用它相比、采用相同的设置)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="carlsen81"]当我单步执行函数时,在单步执行"IO_Analog _Initialize ();"时会出现错误

    请注意以下事项:(从代码中提取-记下这2个函数调用-相隔5个调用):

    • MAP_ADCHardwareOversampleConfigure (ADC0_BASE、4);
    • MAP_ADCSequenceStepConfigure (ADC0_BASE、序列发生器、索引++、...

    关注点包括:

    • 也许 MAP_ADCSequenceStepConfigure()可以通过使用'index++'来被“配置”? (尤其是在采用 MCU 的'ROM 版本'功能时!)
    • 供应商 Charles 最近对"ADC 硬件过采样"进行了极好的深入审查。 (再次-使用'index++'、尤其是在部署硬件过采样时-显示为'有风险的'。)

    我的“小心”可能是放错位置了... 您将 "index++"的任何/所有出现 与(镗削)硬编码值"重新放置"-显示"快速/简单"表示 "测试该警告/问题..."。   

    一般而言-我"全力 "使用如此聪明、适应性强且功能广泛 的"附加组件 "...  只要他们, “没有伤害!”    而且(损害)或免受此类损害的自由(尚未)得到(积极)确定...

    "ADC 硬件过采样"的深入检查出现在这里:  (一杯(非常)的咖啡... 和/或其他(合法)刺激-可能需要...)

    e2e.ti.com/.../2643942

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Carlsen、

    我们的 TM4C JTAG 指南提供了您应该具有的确切连接、这应该是与我们的器件进行正确 JTAG 接口连接的唯一参考: www.ti.com/.../spma075.pdf

    对于 ARM 20引脚连接器、TCK 应该被上拉。

    您是否尝试运行一些 TivaWare 示例并尝试以相同的方式单步执行代码? 我想知道问题是否可以通过这种方式重复出现。

    让我们了解 CB1建议的尝试结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 CB1:

    感谢您的回复! 我已尝试按以下顺序删除您提到的部件:

    1)注释掉 Oversampling 函数调用、以避免使用该函数->步越时、错误1170消息没有变化
    2) 2)将 index++更改为硬编码值、以及1)-->步越时、错误1170消息没有变化
    3)执行2)不带1)-->步越时,1170错误信息没有变化

    由于在您提到的各个点上未看到任何更改、因此已恢复。  

    我确实将开发板上的设置更改为应用指南中的设置、但在尝试使用系统上的调试器运行代码时再次发生相同的错误。 这是我必须修复的一个关键问题、因为我无法1)使用调试器在硬件上运行代码、以及2)使用调试器在开发的硬件上插入断点。 插入断点时、它很容易失去目标...

    很抱歉、图片质量、我去了快速的"屏幕截图"。

    任何建议都非常感谢!!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Carlsen、

    再看一下这些错误、我被指向了以下内容: software-dl.ti.com/.../ccs_debugging_jtag_connectivity_issues.html

    听起来问题不是基于硬件的、而是软件的问题。

    今天晚些时候、我将尝试深入回顾您之前发布的代码、看看是否有任何东西第一次逃过我的视线。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jacobi:

    感谢您浏览您提供的网站。 但是、我很难从链接本身中找到任何有用的信息、也许您可以帮助我了解以下内容的含义:
    1)但器件上运行的固件可能会阻止 JTAG 调试器正确连接(如果器件具有闪存)
    2) 2)在这些情况下、请查阅器件的文档以了解如何解锁器件。

    我的设备是否以某种方式锁定?
    再次感谢您的观看。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Carlsen、

    如果器件已锁定、则在发生错误后无法进行调试。 如果发生这种情况、您可以使用 LMFlash Programmer 来解压器件。 这里的重点是、错误可能是由于固件而导致的、因此您的固件的某些内容会影响 JTAG。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jacobi。
    我现在明白你的观点。
    今天早些时候、我在实验室中尝试了一些我也想与您分享的东西-这可能会进一步混淆问题的情况。
    根据 TM4C1294XL 的应用手册、ICDI 配置为调试输出端口、用于对我们开发的电路板进行编程和调试、正如之前的 XDS100V3那样。

    当将 ICDI 用作我们开发的电路板的调试器时、程序正常执行、可以执行运行操作、可以设置断点并在确切的点(模拟初始化)进行步越、此时 XDS100V3在其他位置将停止。
    有人感到困惑? 我是最不发达国家。

    对于我们的应用、我们仍然更喜欢 XDS100V3、因此我仍然在寻找解决我们所提出问题的解决方案。

    此致、祝您周末愉快。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Carlsen:

    你是对的、这会进一步混淆... 这个阴谋肯定会变得更浓... 我将在星期一查看是否可以与 CCS/调试器专家交谈、并尝试进一步了解可能发生的问题。

    想要尝试总结一些关于行为的要点:

    1) 1)如果单步执行 IO_Analog _Initialize、则会发生错误-1170 DAP 访问丢失
    2) 2)如果使用带 XDS100v3的定制板、您可以单步执行到 IO_Analog _Initialize、然后尝试从此点运行、您会得到"无法运行目标 CPU:(错误-2134 @ 0x0)"
    2a)如果你只是自由运行、而不是单步执行到 IO_Analog _Initialize、你没有错误、对吧?
    3) 3)断点在 IO_Analog _Initialize 之外无法正常工作? 还是仅仅在函数中它们不起作用?
    3A)是否也在 LaunchPad 上测试了断点操作?
    4) 4) ICDI 不会表现出任何这些行为

    请告诉我是否捕捉到错误的内容。

    最后、当我与我的 CCS 联系人交谈时、您使用的是哪个 CCS 版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jacobi:

    感谢您的参与、我更新了您的以下列表-它几乎是正确的、但经过少量修改后、它显示为我在实验室中的体验:

    1) 1)如果单步执行 IO_Analog _Initialize、则会发生错误-1170 DAP 访问丢失
    2) 2)如果使用带 XDS100v3的定制板、您可以单步执行 IO_Analog _Initialize、然后尝试从此点运行、您将获得"无法运行目标 CPU:(错误-2134 @ 0x0)"以及 错误-1170 DAP 访问丢失
    2a)如果你只是自由运行、而不是单步执行到 IO_Analog _Initialize、你没有错误、对吧? 如果我在 TM4C1294XL 上自由运行没有问题-但 在我的电路板上、只要我立即自由运行、我就会得到"无法运行目标 CPU:(错误-2134 @ 0x0)"
    3) 3)断点在 IO_Analog _Initialize 之外无法正常工作? 还是仅仅在函数中它们不起作用?  它们从不在开发的板上工作。 它们在 TM4C1294XL 上工作
    3A)是否也在 LaunchPad 上测试了断点操作? 见上文。
    4) 4) ICDI 没有表现出任何正确的行为-使用 ICDI 时、所有行为在 TM4C1294XL 和我开发的电路板上都正常工作、但我不想在我的产品中使用修改过的 TM4C1294XL。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Carlsen、

    感谢您添加的所有详细信息。 我很奇怪其中一些问题出现在我们的 XDS100v3 LaunchPad 上、但基于您在定制板上的问题范围、我想知道我们是否需要仔细评估其上的 JTAG 硬件。

    在两个电路板上仍可能有软件问题引发问题、但鉴于 JTAG 存在广泛的问题、包括您无法自由运行、我真的感觉 JTAG 工作不好。

    您是否成功运行了任何其他软件? 您能否尝试在定制板上运行像闪烁一样简单的器件?

    与 ARM 20引脚相比、再次查看 JTAG 原理图、我有一个观察结果最初未曾观察到、还想澄清几点

    1) 1) TDI 有一个上拉电阻器、但不应基于 www.ti.com/.../spma075.pdf 上的建议
    2) 2)您能否详细说明什么是 D48-D50? 我认为保护电路?
    3) 3) TDO 是否没有下拉电阻? 如果是、则需要一个。 建议值为10k。
    4) 4)引脚9和11之间的 R170电阻器的用途是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jacobi。

    很抱歉、延迟回答、原因是另一个正在开发的电路板已经完成、上面有 TM4C123G 处理器。 该板使用的 JTAG 接口原理图与上一篇文章中所示完全相同、只是没有安装 TVS 二极管。 省略 TVS 二极管证明可以消除断点和自由运行问题的错误-到目前为止很好。 现在看来调试确实是一个选择、因此它让我有信心从另一个电路板上移除二极管(原始文章)。  

    事实证明、这也是此电路板上的问题。 因此、剩下的唯一问题是评估板也可以复制的模拟软件模块。 我已经和我们的固件工程师之一谈论过这个问题、我们认为这可能是代码和/或 RTOS 明显的时序问题。  

    据报告、二极管的关断电压为3.3V (这意味着3.3V 时没有明显的导通)、最小击穿电压为4.0V。我不确定在某些情况下、二极管为什么会中断 JTAG 线路(自由运行+断点) 但这种情况似乎对随后添加的二极管/电容非常敏感。 二极管器件型号为 :USB50803C。 然而、更奇怪的是、评估套件上的内联调试器仍然可以与连接到电路板的二极管配合使用。 可以是 XDS100V3非常容易受到任何添加的二极管和/或电容的影响、尽管这一点没有以任何方式得到证实、而只是我的电流假设。

    由于二极管被移除、现在运行起来还不是很好、所以我还无法测试电压。 很抱歉,我无法详细说明这一点。  
    请考虑结案并解决问题。

    非常感谢您提供的详细帮助。