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.

[参考译文] TMS320F28388D:AL 状态代码为#39;0x001b#39;-同步管理器看门狗

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027402/tms320f28388d-the-al-status-code-is-0x001b---sync-manager-watchdog

器件型号:TMS320F28388D
您好的支持:
主堆栈:twincat3.
从站堆栈:F28388D 和 phy83822。
        我遇到了一个奇怪的问题、当我在 CCS(TI IDE)调试模式下调试 SSC 工具生成的从站堆栈代码时、从站堆栈正常工作(在运行模式下)、
而退出调试模式、则从站堆栈在安全操作模式下处于错误状态。  AL 状态代码为'0x001b'-同步管理器看门狗。
ECAT_CheckTimer()在1ms 周期内调用。  我认为功能可能是问题点。 但在调试模式下,从站堆栈是正常的,所以我不确定。
如果你能帮助我、我将不胜感激。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否澄清一下 TI 提供的示例是否存在这种情况? 此外、这是在 controlCARD 还是其他一些硬件平台上进行的? 您能否澄清一下"退出调试模式"是什么意思?

    由于没有成功的 PD 通信并且从器件移至 SAFEOP 状态、因此会触发 SM 看门狗。 通常、默认超时为100ms。

    谢谢、

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

    它不是  TI 提供的示例,应用程序在 TI  controlCARD 上运行。 "退出调试模式"表示再次打开控制卡(此时 CCS 无法调试应用程序)。我将0->s 时间更改为500ms,但未成功。  我已将引导模式更改为零引导,我不知道零引导模式是否对问题有影响。因为在我更改引导模式之前,应用程序是可以的,

     

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

    您好!

    根据您的描述、我推断当您在未连接调试器的情况下以独立方式从闪存引导时会发生此问题。 当您使用调试器支持从 RAM 引导时、问题似乎不存在。 您能否遵循下面提到的有关如何将 RAM 配置转换为闪存的指南、并查看这是否有帮助?

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/878674/faq-flash---how-to-modify-an-application-from-ram-configuration-to-flash-configuration

    谢谢、

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

    您好:我已经验证了您的解决方案、问题也已解决。  这是我使用 syscfg 工具的零引导模式配置:

    未选择 ZONE2。 我确定 EtherCAT 的'0x001b'-同步管理器看门狗'问题是由零启动模式引起的,因为我将三个卡设置为零启动模式,它们无法正常工作('0x001b'-同步管理器看门狗),而其他两个卡则不能正常工作。 它们可以正常工作。(发送到 EtherCAT EEPROM 的.out 和.bin 都相同)

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

    您好!

    我们将邀请 DCSM 专家之一来研究 这个问题并返回。

    谢谢、

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

    您好 Ranjith:

    以上就是我的客户。 他当前的情况是 CAN、SPI、I2C 等其他程序可以在 闪存 和0引导引脚模式下正常运行。  但 只有 EtherCAT 程序存在问题(错误:0x001b'-同步管理器看门狗)。  同一程序可以在闪存 非零引脚模式下正常运行。

    因此、他怀疑 EtherCAT 错误是否与0引脚引导模式相关。

    此致

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

    尊敬的 Deng:

    0引导引脚配置和闪存引导是相同的、因此实际上无关紧要。 此外、由于您有 SCI/CAN 和其他使用0引导引脚配置的外设、因此您的设置应该是正确的。

    在使用闪存引导的主板上,是否使用默认引导引脚(GPIO72/GPIO84)? 如果是、那么我看到这些引脚也与某些 EtherCAT 功能复用。 您是否在这些引脚上使用 EtherCAT 功能? 此外、在配置0引导引脚的电路板上、是否仍然拉取 GPIO72/GPIO84引脚(假设这些引脚是其他电路板上的引导引脚)。 我基本上是在尝试查看除0引导引脚配置之外的电路板设置是否有任何差异。

    此致、

    Vivek Singh

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

    尊敬的  Vivek 和 Deng:  

    EtherCAT  功能的引脚 如下所示:

     EtherCAT  功能不使用 GPIO72/GPIO84、设置为 0引导模式的电路板、引脚 GPIO72/GPIO84不上拉。

    这三块电路板是 从 TI 购买的、除了0引导引脚配置外、电路板设置似乎没有任何区别。  

    //
    //为 ECAT 配置 GPIO
    //

    //
    // PHY CLK
    //
    GPIO_setPinConfig (GPIO_154_ESC_PHY_CLK);

    //
    // PHY 复位
    //GPIO_setPinConfig (GPIO_155_ESC_PHY_RESETN);

    //
    用于 EEPROM 的// I2C
    //
    GPIO_setPinConfig (GPIO_150_ESC_I2C_SDA);
    GPIO_setQualificationMode (150、GPIO_QUAL_ASYNC_A);
    GPIO_setPadConfig (150、GPIO_PIN_TYPE_PULLUP);
    GPIO_setPinConfig (GPIO_151_ESC_I2C_SCL);
    GPIO_setQualificationMode (151、GPIO_QUAL_异 步);
    GPIO_setPadConfig (151、GPIO_PIN_TYPE_PULLUP);

    //
    // P0 TX 和 RX 数据
    //
    GPIO_setPinConfig (GPIO_158_ESC_TX0_DATA0);
    GPIO_setQualificationMode (158、GPIO_QUAL_ASYNC_A);
    GPIO_setPinConfig (GPIO_159_ESC_TX0_Data1);
    GPIO_setPinConfig (GPIO_160_ESC_TX0_DATA2);
    GPIO_setQualificationMode (160、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_161_ESC_TX0_DATA3);
    GPIO_setQualificationMode (161、GPIO_QUAL_ASYNCx);

    GPIO_setPinConfig (GPIO_165_ESC_RX0_DATA0);
    GPIO_setQualificationMode (165、GPIO_QUAL_ASYNCx);
    GPIO_setPinConfig (GPIO_166_ESC_RX0_Data1);
    GPIO_setQualificationMode (166、GPIO_QUAL_ASYNCx);

    GPIO_setPinConfig (GPIO_167_ESC_RX0_DATA2);
    GPIO_setQualificationMode (167、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_168_ESC_RX0_DATA3);
    GPIO_setQualificationMode (168、GPIO_QUAL_ASYNC_A);

    //
    // P0 TX 使能、RX DV、RX ERR
    //
    GPIO_setPinConfig (GPIO_156_ESC_TX0_ENA);
    GPIO_setQualificationMode (156、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_162_ESC_RX0_DV);

    GPIO_setQualificationMode (162、GPIO_QUAL_ASYNCx);
    GPIO_setPinConfig (GPIO_164_ESC_RX0_ERR);
    GPIO_setPadConfig (164、GPIO_PIN_TYPE_STD);

    //
    // P0 TX 和 RX 时钟
    //
    GPIO_setPinConfig (GPIO_157_ESC_TX0_CLK);
    GPIO_setQualificationMode (157、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_163_ESC_RX0_CLK);
     GPIO_setQualificationMode (163、GPIO_QUAL_ASYNCO);

    //
    // P0 Linkstatus 和 Link Active LED
    //
    GPIO_setPinConfig (GPIO_148_ESC_PHY0_LINKSTATUS);
    GPIO_setPadConfig (148、GPIO_PIN_TYPE_STD);

    GPIO_setPinConfig (GPIO_143_ESC_LED_LINK0_ACTIVE);
    GPIO_setQualificationMode (143、GPIO_QUAL_异 步);
    GPIO_setPadConfig (143、GPIO_PIN_TYPE_INPin);

    //
    // P0+P1 MDIO CLK 和数据
    //
    GPIO_setPinConfig (GPIO_152_ESC_MDIO_CLK);
    GPIO_setPinConfig (GPIO_153_ESC_MDIO_DATA);

    //
    // P1 TX 和 RX 数据
    //
    GPIO_setPinConfig (GPIO_131_ESC_TX1_DATA0);
    GPIO_setQualificationMode (131、GPIO_QUAL_ASYNC_A);
    GPIO_setPinConfig (GPIO_132_ESC_TX1_Data1);
    GPIO_setQualificationMode (132、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_134_ESC_TX1_DATA2);
    GPIO_setQualificationMode (134、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_135_ESC_TX1_DATA3);

    GPIO_setQualificationMode (135、GPIO_QUAL_ASYNC_A);
    GPIO_setPinConfig (GPIO_139_ESC_RX1_DATA0);
    GPIO_setQualificationMode (139、GPIO_QUAL_ASYNCx);
    GPIO_setPinConfig (GPIO_140_ESC_RX1_Data1);

    GPIO_setQualificationMode (140、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_141_ESC_RX1_DATA2);
    GPIO_setQualificationMode (141、GPIO_QUAL_ASYNCO);
    GPIO_setPinConfig (GPIO_142_ESC_RX1_DATA3);

    GPIO_setQualificationMode (142、GPIO_QUAL_异 步);

    //
    // P1 TX 使能、RX DV、RX ERR
    //
    GPIO_setPinConfig (GPIO_129_ESC_TX1_ENA);
    GPIO_setQualificationMode (129、GPIO_QUAL_ASYNC_A);
    GPIO_setPinConfig (GPIO_136_ESC_RX1_DV);

    GPIO_setQualificationMode (136、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_138_ESC_RX1_ERR);
    GPIO_setPadConfig (138、GPIO_PIN_TYPE_STD);

    //
    // P1 TX 和 RX 时钟
    //
    GPIO_setPinConfig (GPIO_130_ESC_TX1_CLK);
    GPIO_setQualificationMode (130、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_137_ESC_RX1_CLK);
     GPIO_setQualificationMode (137、GPIO_QUAL_异 步);


    //
    // LinkP1状态和链路激活 LED
    //
    GPIO_setPinConfig (GPIO_149_ESC_PHY1_LINKSTATUS);
    GPIO_setPadConfig (149、GPIO_PIN_TYPE_PULLUP);
    GPIO_setPinConfig (GPIO_144_ESC_LED_Link1_ACTIVE);
    GPIO_setQualificationMode (144、GPIO_QUAL_异 步);
    GPIO_setPadConfig (144、GPIO_PIN_TYPE_INOPH);

    GPIO_setPinConfig (GPIO_125_ESC_LATCH0);
    GPIO_setPinConfig (GPIO_126_ESC_LATCH1);
    GPIO_setPinConfig (GPIO_127_ESC_SYNC0);
    GPIO_setPinConfig (GPIO_128_ESC_SYNC1);
    GPIO_setDirectionMode (127、GPIO_DIR_MODE_OUT);
    GPIO_setDirectionMode (128、GPIO_DIR_MODE_OUT);

    GPIO_setDirectionMode (ESC_RUN_LED_GPIO、GPIO_DIR_MODE_OUT);//146
    GPIO_setDirectionMode (ESC_ERR_LED_GPIO、GPIO_DIR_MODE_OUT);//145

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

    好的、谢谢。 如果我理解正确、则代码在独立模式下(GPIO72/84上拉为高电平以从闪存引导)工作正常、但如果引导设置配置为0引导引脚、则不工作。 如果正确的话? 我再次询问这一点、因为在这两种情况下(0引导引脚或 GPIO72/GPIO84上拉为高电平)、它以相同的方式引导至闪存、如果应用软件完全相同、那么在一种情况下它不起作用是非常奇怪的。  

    此致、

    Vivek Singh

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

     "如果我理解正确、代码在独立模式下(GPIO72/84上拉为高电平从闪存引导)工作正常、但如果引导设置配置为0引导引脚、则不工作。 如果正确?"   

    是的、您的理解是完全正确的。 我只能在宏级别找到问题,如果您需要我的 CCS 项目来分析问题 ,我可以发送到您的邮箱(您可以向我发送您的邮箱 号码)

    谢谢。

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

    您好!

    您应该能够在连接 CCS 的情况下仿真独立模式。 请按照以下步骤执行相同的操作-

    • 连接到 CCS (CPU1) --假设您只在 CPU1上加载代码?
    • 打开 CCS 存储器观察窗口并检查地址0xD01
    • 在地址0xD01写入0xA500
    • 从 CCS 复位问题
    • 点击"Run"

    这将像在独立模式下一样运行器件、然后您应该能够调试故障。  

    此致、

    Vivek Singh

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

    您好:

    我 根据  您的建议执行以下操作:

    1 μ s 在  CCS、模式下修改0xD01、wnen 之前,ESC 从机可以进入 op 模式。 然后 重新为 ESC 从机供电,它无法进入工作模式

       错误:'0x001b'-同步管理器看门狗

    2、更改   0xD01且不会复位 CCS、 ESC 从站可以进入运行模式

    3、更改   0xD01 并复位 CCS、 ESC 从站无法进入运行模式 错误:'0x001b'-同步管理器看门狗

    4、现在我可以 在闪存 仿真调试模式下进行调试、我发现  PDI_ISR ();  Sync0_ISR ();  Sync1_ISR ()三个中断函 数由于断点无法工作而无法被执行。

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

    "2、更改   0xD01且不会复位 CCS、 ESC 从站可以进入运行模式。"    

     当处于上述2状态时, PDI_ISR();  Sync0_ISR();  Sync1_ISR()可以被输出 ,所以我不知道为什么  

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

    您好!  

    很高兴您能在 CCS Connected 中重现此问题。 您必须复位 CPU 以使 WRITE @0xD01地址生效。 如果没有复位、则该值没有意义、因为这是由 BootROM 代码读取的。

    关于以下问题-

    [引用 userid="476521" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027402/tms320f28388d-the-al-status-code-is-0x001b---sync-manager-watchdog/3804516 #3804516"]现在我可以 在闪存 仿真调试模式下进行调试,我找到  PDI_ISR ();  Sync0_ISR ();  Sync1_ISR ()由于断点无法 工作,无法执行三个中断函数。

    您可以将此代码从闪存复制到 RAM、然后从 RAM 执行。 如果正确、请确保 在执行 memcpy  函数后设置断点。  

    此致、

    Vivek Singh

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

    您好、Vivek:

    我 定义了一个静态变量 ii,它可以按照如下方式通过 CAN 发送: 在 CSS 调试模式下,我可以看到 ii 随时间的变化,从堆栈正常工作(运行模式),然后我复位 CPU (单击菜单 ),从堆栈也正常工作(运行模式),  II 也会随时间变化。但当我重新为控制卡供电时, ii 总是0,通过 CAN 发送,从堆栈显示错误:'0x001b' ,因此   设置为零引导模式后,不能触发独立模式下的 PDI_ISR()。 我不知道为什么?   

    我设置零引导模式的原因  是 GPIO72与 EMIF 数据发生冲突[12]。 您还有其他解决方案吗?

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

    您好!

    放置在哪个地址位置变量"i"上? 您似乎在 RAM 中放置了易失性存储器、加电后内容不会保留、因此当您通过 CCS 加载代码时、它可以工作、但加电后、由于 RAM 未加载、因此它不工作。 请查看您的链接器 cmd 文件、以确保您没有在 RAM 中放置任何本应位于闪存(非易失性存储器)中的内容。  

    此外、您之前也能够在连接调试器的情况下(模拟独立模式)重现此问题。 您是否无法使用它进行调试? 在连接调试器的情况下、您需要做的一件事是、不应再次加载代码、因为代码已加载到闪存中。 只需启动目标配置文件(不要启动调试)、然后连接到 CCS、然后按照步骤在独立模式下运行。 这将是调试此问题的最佳方法。

    此致、

    Vivek Singh

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

    您好:  

    1、cmd 是 TI 提供的2838x_flash_lnk_ecat_cpu1.cmd .it、并且 我在 cmd 文件中添加了用于 EMIF 通信的以下内容

    存储器:

    EMIF1_CS0n:origin = 0x8000000,length = 0x10000000
    EMIF1_CS2n:origin = 0x00100000,length = 0x00100000
    EMIF1_CS0_CS2n:origin = 0x00200000,length = 0x00100000
    EMIF1_CS3n:origin = 0x00300000,length = 0x00080000
    EMIF1_CS4n:origin = 0x00380000,length = 0x00060000
    EMIF2_CS0n:origin = 0x90000000,length = 0x10000000
     EMIF2_CS2n :origin = 0x00002000,length = 0x00001000

    部分

    EMIF_cs0_nonfar:> EMIF1_CS0_CS2n
    .farbss:> EMIF1_CS0n
    .farconst:> EMIF1_CS0n
    em1_cs0:> EMIF1_CS0n
    em1_CS2:> EMIF1_CS2n | EMIF1_CS0_CS2n

    em1_CS3:> EMIF1_CS3n
    em1_CS4:> EMIF1_CS4n
    EM2_cs0:> EMIF2_CS0n
    EM2_CS2:> EMIF2_CS2n

    2、“您不能使用它进行调试吗? 在连接调试器的情况下、您需要做的一件事是、不应再次加载代码、因为代码已加载到闪存中。 只需启动目标配置文件(不要启动调试)、然后连接到 CCS、然后按照步骤在独立模式下运行。 这将是调试此问题的最佳方法。”

    我已经对您逐步告诉我的方法进行了测试、很遗憾、它 没有任何影响。

    PDI_ISR()是 TwinCAT 的 TRGER (主站),我已经通过 wireshake 捕获消息, TwinCAT 已发送 TRGER 信号(PDO OUT),但 在调试模式下也无法执行 PDI_ISR()。

    3、邓先生告诉我可以和我会面来解决我的问题, 您能告诉我什么时候(北京时间), 以及什么类型的网络会议软件吗?

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

    您何时在代码中初始化 EMIF 接口? 默认情况下、不启用 EMIF 接口、因此除非设置了 EMIF 模块、否则无法从该接口访问任何变量。  

    我将要求 Deng 设置 WebEx。

    此致、

    Vivek Singh

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

    您好:  

    很抱歉 、我 无法清楚地解释问题。

    EMIF 通信是正确 的,但如果我没有将 F28388d 设置为零模式引导,GPIO72始终为上拉(确保从闪存成功引导),同时 GPIO72也是 EMIF 的数据[12]线路,因此为什么我将硬件设置 为零模式引导。

    然后  在零模式引导后、EtherCAT 功能错误。

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

    用户启用了 MPOST 和零启动使能、因此无法正常工作。 禁用 MPOST (默认选项)后、工作正常。

    此致、

    Vivek Singh