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.

[参考译文] TMS320F280023C:看门狗停止触发

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1067391/tms320f280023c-watchdog-stops-triggering

部件号:TMS320F280023C
“线程:sysconfigtestLAUNCHXL-F280025C”中讨论的其它部分

你(们)好

我已设置看门狗在209 ms 后触发。

到目前为止,我没有设置看门狗的任何服务,所以它应该重新设置我的设备,或者拔下插头。

事实上,在首次启动后,它会重置设备,并持续一段时间,但随后它会停止执行此操作。

首先,我认为设备卡在某些 NMI 中,或者存在某些异常。 但事实证明,它运行正常,我的应用程序代码运行时就好像没有看门狗一样。

简而言之

预测:

设备每隔209毫秒重置一次,直到断电。

现实:

设备在一段时间内每209 MS 重置一次,然后重置事件停止,CPU 运行正常的软件。

“一些时间”=可变时间大约为2秒到20秒。

使用 sysconfig 工具设置看门狗:

随着209 MS 运行时间的推移,有足够的时间在串行端口上打印一些调试信息。

所以我在串行初始化后添加了这一项

Fullscreen
1
2
3
4
5
6
Log_debug("WatchDog counter value = %u\r\n", SysCtl_getWatchdogCounterValue());
Log_debug("WatchDog reset status = %d\r\n", SysCtl_getWatchdogResetStatus());
Log_debug("Sys control and status register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_SCSR));
Log_debug("WatchDog KEY register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_WDKEY));
Log_debug("WatchDog status register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_WDCR));
Log_debug("WatchDog Windowed status register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_WDWCR));
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

* Log_debug 只是将宏扩展到 printf

我明白了

Fullscreen
1
2
3
4
5
6
DBG: WatchDog counter value = 1
DBG: WatchDog reset status = 0
DBG: Sys control and status register = 5
DBG: WatchDog KEY register = 7
DBG: WatchDog status register = E07
DBG: WatchDog Windowed status register = 0
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

当 以后触发重置时,这两个值都相同。

我的 testmonitor 中还有这些值在命令上打印,当我要求它们在重置停止后,我仍然得到相同的值,除了不断变化的计数器(表示它正在运行)

那么,为什么我的看门狗停止工作?

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

    您好,

    是否也可以在此处发布 WD 初始化代码? 同样,当 WD 停止触发重置时,IOS 上是否有任何活动可供您确认应用程序(代码)仍在运行。如果没有,则在 WD 初始化后的1个循环中添加 GPIO 切换代码以确认相同。 重置后,设备可能无法正常启动,因此永远不会执行 WD 初始化。 这是 TI 主板还是您自己的客户主板? 您的设备启动 PIN 上是否有任何活动驱动程序?  

    此致,

    维耶克·辛格

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

    1. sysconfig 生成的代码中的初始化代码(使用最新的 sysconfig 4.0)。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void WATCHDOG_init(){
    //WATCHDOG initialization
    SysCtl_disableWatchdog();
    SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
    SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_128);
    SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_64);
    SysCtl_setWatchdogWindowValue(0);
    SysCtl_enableWatchdog();
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2.

    我在串行端口上运行的测试显示器中有许多 IO 活动。 下面是从我的串行终端复制的通信示例,因此您会看到应用程序代码非常有效。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    test>pm,r,d
    DBG: WatchDog counter value = 20
    DBG: WatchDog reset status = 0
    DBG: Sys control and status register = 5
    DBG: WatchDog KEY register = 7
    DBG: WatchDog status register = E07
    DBG: WatchDog Windowed status register = 0
    test>pm,r,d
    DBG: WatchDog counter value = 148
    DBG: WatchDog reset status = 0
    DBG: Sys control and status register = 5
    DBG: WatchDog KEY register = 7
    DBG: WatchDog status register = E07
    DBG: WatchDog Windowed status register = 0
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    3.

    是的,WD 初始化正在运行,否则我在启动后就看不到 log_debug 在串行终端上打印的正确值,正如我在问题中所引用的。

    此外,正如您在我的测试监视器上的上述片段中所看到的,看门狗初始化的所有值都仍然存在。

    4.

    这是我们的定制板。

    5.

    GPIO32和 GPIO24有一个上拉,但如果您仍然怀疑 init 和应用程序是否实际运行,因为它进入了另一个引导模式, 然后,它进入闪存模式并运行上述 init 和应用程序,这也是我的第一个想法,我早就排除了这一点。

    [引用 userid="172948" url="~/support/icros/C2000 -微控制器组/CC2000 /f/C2000 -微控制器-论坛/1067391/tms320f280023c-watchders-stops -触发器]首先,我认为该设备在某些 NMI 或某些异常情况下卡住。 但事实证明,它运行正常,我的应用程序代码运行时就好像没有看门狗一样。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,所以你有两个连续的 WD 计数值,计数值正在变化。 这意味着 WD 正在计算。 如果您继续打印这些值,那么您是否曾经使用过 WD 计数最大值,之后会发生什么情况?

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

    您还可以确认您的所有代码仅在闪存中,而不在 RAM 中。

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

    只有闪存等待状态代码的设置在 ramfuncts 中。

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

    “是”计数器正在运行,就像我在原始答案中所说的那样,当计数器换行时,不会发生任何情况。

    从终端附加带有时间戳的更长日志,以便您可以看到。

    正如我还提到的,我甚至没有为看门狗提供任何服务,所以我的 SW 没有在任何地方重置看门狗。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [2022-01-08 01:01:23.987] pm,r,d
    [2022-01-08 01:01:26.066]
    [2022-01-08 01:01:26.066] DBG: WatchDog counter value = 16
    [2022-01-08 01:01:26.072] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:26.072] DBG: Sys control and status register = 5
    [2022-01-08 01:01:26.072] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:26.072] DBG: WatchDog status register = E07
    [2022-01-08 01:01:26.072] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:26.088]
    [2022-01-08 01:01:26.088]
    [2022-01-08 01:01:26.088] test>pm,r,d
    [2022-01-08 01:01:26.872]
    [2022-01-08 01:01:26.872] DBG: WatchDog counter value = 1
    [2022-01-08 01:01:26.872] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:26.888] DBG: Sys control and status register = 5
    [2022-01-08 01:01:26.896] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:26.896] DBG: WatchDog status register = E07
    [2022-01-08 01:01:26.899] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:26.904]
    [2022-01-08 01:01:26.905]
    [2022-01-08 01:01:26.905] test>pm,r,d
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    为了三重确保,没有一些代码指针在驱动程序库中调用 serviceWatchdog 函数,我进入并更改了该键的定义,因此调用该键将失败。 正如预期的那样,这一点没有任何改变。

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

    您好,马丁,

    我不确定您如何打印 WD 配置值。 您是否在连续循环中运行它? 我看到计数值有一段时间在下降而不是增加,例如从16上升到1,后来从215上升到209。  有什么想法为什么会这样。

    如果 WD 计数器达到0xFF 值,您还能检查您的代码吗? 基本上,您只需在循环中读取计数器寄存器,当计数器的值为0xFF 时,打印所有设置,包括计数器值。

    此致,

    维耶克·辛格

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

    我有一台运行在目标上的测试监视器,可以在其中键入命令

    Fullscreen
    1
    test>
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    是来自 trestmonitor 的提示

    Fullscreen
    1
    pm,r,d
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    是我键入的命令

     

    Fullscreen
    1
    2
    3
    4
    5
    6
    DBG: WatchDog counter value = 232
    DBG: WatchDog reset status = 0
    DBG: Sys control and status register = 5
    DBG: WatchDog KEY register = 7
    DBG: WatchDog status register = E07
    DBG: WatchDog Windowed status register = 0
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    是测试监视器的响应。

    从时间戳(由 TeraTerm 记录器添加)中可以看出,这些命令之间有5到1个截面,因此预计计数器将在209 ms 后滚动,并将其配置为最大值。

    我将执行建议的测试并返回。

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

    好的,明白了。 此外,如果您能够对车载 XRSn 引脚进行示波,请同时分享该引脚的波形。

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

    我进行了建议的测试,最终我使用了 GPIOs 来避免与 log_debug 的串行打印混在一起

    我运行了以下代码:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    while( 1 )
    {
    if( 0xFF == SysCtl_getWatchdogCounterValue())
    {
    GPIO_writePin( RELAY_2_PIN, 1 );
    // Log_debug("W\r\n");
    }
    else
    {
    GPIO_writePin( RELAY_2_PIN, 0 );
    }
    if( 0x00 == SysCtl_getWatchdogCounterValue())
    {
    GPIO_writePin( RELAY_1_PIN, 1 );
    // Log_debug("0\r\n");
    }
    else
    {
    GPIO_writePin( RELAY_1_PIN, 0 );
    // Log_debug("0\r\n");
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我从中提取了这些范围转储

    CH1:(橙色)是来自上述代码的 RELAY _2_PIN

    CH2 (蓝色)。是来自上述代码的 RELAY _1_PIN

    Period of 0xFF and 0x00

    watchdog period measurement

    我的结论是,这台柜台的运行情况与预期的一样。

    我将返回 XRSn 测量值。

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

    这是 XRSn 引脚,图片来自 WD 设法重置 CPU 的其中一个,当它停止执行此操作时,XRSn 也会完全静音。

    XRSn pin on WD reset

    我读出的下拉时间为40 µs,这比您在 sysconfig 中的读数少得多

    与 XRSn 的连接

    请注意,IC700未安装,如果我们后来发现需要进行永久复位,则会将其放在原理图中以对 PCB 上的空间进行对焦。

    因此,XRSn 仅连接到 R701和 C700,我们不使用它来重置任何其他设备。

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

    马丁

    [引用 userid="172948" url="~ë/support/icros/c2000-icro-group/c2f/c2000-icro-forum-forum/1067391/tms320f280023c-watchders-stops 触发/3951126#3951126"]

    我读出的下拉时间为40 µs,这比您在 sysconfig 中的读数少得多

    [/引用]

    此处的 WDCLK 是10MHz 的 INTOSC1 (不是您所显示的),因此低脉冲应为51.2uS 或高。  

    我假设您正在您的定制板上尝试此操作。 如果您有 TI 主板,您可以在上面尝试一下,看看您是否仍有此问题? 如果您看到相同的问题,我将采集您的示例代码,并尝试在我的设置中重新生成它。

    此致,

    维耶克·辛格

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

    µs,40 μ m 的距离仅仅是看不那么嘈杂的图形,所以51个声音在读数中是无噪声的。

    但是,除了我不担心这段时间,我们也不会将这一信号用于任何目的,它只是让我感到震惊,它与 sysconfig 计算的结果相去甚远,看起来就像 sysconfig 中的一个错误。

    关于到 TI 主板的端口,是的,这是在我们自己的主板上测量的,与我发布的示意图一样。

    昨天我在一个 TI 电路板上做了快速测试,但这并没有显示错误,因此需要进一步调查。 我现在的日程安排非常紧,所以我不知道我是否能够这样做。

    关于 TI 主板,我们使用的是 f280023,启动板使用的是 f280025c (不要认为我可以用 f280023获得启动板)。 这两块芯片上的硅有多相似?

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

    谢谢马丁。

    [引用 userid="172948" url="~/support/icles/c2000-iclers-group/c2f/c2000-iclms -forume/1067391/tms320f280023c-watch-stops -trigging/395187#395187184]关于 TI 主板,我们使用 f280023,启动板使用的是280023,启动板使用的是2800c (我不能想到的)。 这两个芯片上的硅有多相似?

    两者都是相同的,因此在使用这两种方法中的任何一种都没有问题。

    此致,

    维耶克·辛格

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

    你(们)好

    我今天花了大部分时间来将其最小化,但现在我有一组文件将在 LUNCHXL-F280025C 上显示错误。

    我可以在这里引用源的主要部分,但如果这不足以让您复制,请建议我如何将所有文件发送给您。

    我做了一个小的主电源,首先打开红色 LED 指示灯一小段时间,然后它开始闪烁绿色 LED 指示灯。

    这意味着红色 LED 闪烁表示刚刚发生重置,闪烁的绿色 LED 指示主回路正在运行。

    运行此程序时,我观察到红色 LED 指示灯闪烁,表示看门狗工作正常,但经过一段时间(2-30秒),红色 LED 指示灯停止工作,只有绿色闪烁,表示看门狗停止工作,主循环正在运行。

    Watchds_init()之前的延迟对该故障具有重大影响。我尝试了绕过延迟和/或更改延迟。

     与 我们用作偏移量的 C200Ware 示例项目相比,device_init()几乎没有变化,您可以使用 LED_ex1_Bibky。

    主片段:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "device.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/interrupt.h"
    /// @privatesection
    // ---------------- Local constants (#define) ---------------------------------
    // LEDs
    #define DEVICE_GPIO_PIN_RED_LED 31U // GPIO number for LED4
    #define DEVICE_GPIO_PIN_GREEN_LED 34U // GPIO number for LED5
    /// @privatesection
    // ---------------- Local type declarations (typedef) -------------------------
    /// @privatesection
    // ---------------- Local data definitions (static) ---------------------------
    /// @privatesection
    // ---------------- Local function declarations (static) ----------------------
    static void WATCHDOG_init();
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好,马丁,

    我在 LAUNCXL-F280025C 上尝试了您的项目,但无法重现该问题(即始终看到红色闪烁)。 您可以共享“设备初始化();'函数吗? 我认为这是唯一一个可能有所不同的事情。

    最佳

    凯文

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

    不要认为这是设备初始化,它与闪烁示例相同。 但也许是链接器文件。

    我可以通过什么方式将整个项目发送给您?

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    MEMORY
    {
    // Mx Ram, Dedicated CPU ram.
    BEGIN : origin = 0x080000, length = 0x00000002
    BOOT_RSVD : origin = 0x00000002, length = 0x00000126
    RAMMx : origin = 0x00000128, length = 0x000006D0
    // RAMMx_RSVD : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    /* Local Shared RAM, shared to CPU, HIC and BGCRC */
    RAMLS : origin = 0x0000A000, length = 0x00002000
    /* Global Shared RAM, shared to CPU, HIC and DMA */
    RAMGS : origin = 0x0000C000, length = 0x000007F8
    // RAMGS_RSVD : origin = 0x0000C7F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    // PIE_VECTOR_TABLE : origin = 0x0000D000, length = 0x00000200
    // TI_OTP : origin = 0x00070000, length = 0x00000400
    // DCSM_OTP : origin = 0x00078000, length = 0x00000400
    /* on-chip Flash */
    FLASH_BANK0 : origin = 0x00080002, length = 0x00007FEE
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //#############################################################################
    // $TI Release: F28002x Support Library v3.04.00.00 $
    // $Release Date: Fri Feb 12 18:58:34 IST 2021 $
    // $Copyright:
    // Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions
    // are met:
    //
    // Redistributions of source code must retain the above copyright
    // notice, this list of conditions and the following disclaimer.
    //
    // Redistributions in binary form must reproduce the above copyright
    // notice, this list of conditions and the following disclaimer in the
    // documentation and/or other materials provided with the
    // distribution.
    //
    // Neither the name of Texas Instruments Incorporated nor the names of
    // its contributors may be used to endorse or promote products derived
    // from this software without specific prior written permission.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    尝试同时添加页眉,但得到了此信息

    访问被拒绝

    您无权访问此服务器上的“”>e2e.ti.com/.../configure。

    参考编号:18.7c85655f.1642019252.aad9419

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

    尝试在新帖子中使用标题

    不会再去了

    访问被拒绝

    您无权访问此服务器上的“”>e2e.ti.com/.../configure。

    参考#18.7c85655f.1642019332.aaee0b9.

    如果我可以将项目上载到其他地方,会节省我们的时间。

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

    马丁  

    您应该能够导出项目文件并发送 zip 文件。  

    此致,

    维耶克·辛格

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

    您好,马丁,

    我尝试了您提供的链接器 CMD 和 device.c 文件,但仍无法重现该问题。

    如 Vivek 所述,您可以通过右键单击项目名称-->选择导出-->浏览对话框,直接在 CCS 中导出 zip 文件。

    最佳

    凯文

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

    我的问题不是创建文件,而是在何处/如何发送文件。 也许森林阻止了我对树的看法,但我在这里找不到任何地方可以附加文件到本案例中,我尝试单击您的姓名之一,看看我是否可以这样发送文件,但没有找到方法。

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

    你(们)好

    如果这是一件批量生产的事情,我在这里附上一张午餐板芯片的图片。

    F280025c

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

    由于您在董事会和启动板上观察到这一问题,我认为这一问题不是特定于批量处理的。  

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

    马丁

    是否可以尝试插入-->图像/视频/文件-->选择您的压缩文件?

    最佳

    凯文

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

    这是一个黑客;-) 我会尝试

    e2e.ti.com/.../WD_5F00_fail_5F005F00_mao_5F00_at_5F00_danfoss_5F00_com.zip

    缝合效果

    您将在以下位置找到该项目:

    \watchder_fault\product\powermmicro\lowPower\

    我知道有些奇怪的路,但这是一个被猜测的项目的遗迹  

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

    您好,马丁,

    感谢上传。

    我按目前的方式尝试了您的项目,但它没有从 Flash 独立运行。 在将“_flash”添加到预定义符号后,它似乎工作正常。

    您能否检查项目中是否定义了此符号? 它在 Device_init()中被引用,用于将代码从闪存复制到 RAM。

    最佳

    凯文

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

    请使用默认配置(尽管命名)。

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

    我还对整个文件夹结构进行了压缩,因此在默认文件夹中,您可以找到编译器中产生的二进制文件以供参考。

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

    您好,马丁,

    我尝试了“默认”配置,我可以重现您的问题。 现在了解原因。

    您是否知道您在工作的“默认启动板”配置和非工作的“默认”配置之间有何具体区别? 我将进一步了解一下“默认”配置。

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="315587" url="~/support/icros/c2000-icroms-group/c2f/c2000-微控制器-forume/1067391/tms320f280023c-watchduts-stops -trigging/3955320#3955320"]我可以重现您的问题

    射线:-)

    我很久没有使用“默认启动板”配置,我以为我已经删除了它,这是在我们获得自己的硬件之前,项目启动很早的一种恢复。 因此,请忽略这一点。

    正如我在消息来源中提到的,在我初始化看门狗之前的延迟似乎对故障有很大影响。

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

    您好,马丁,

    我认为这与 CCS 项目的优化设置有关。 我尝试了以下设置,它似乎正常工作,请也尝试。

    我通过比较“默认启动板”和“默认”配置的编译器设置找到了这一点。

    最佳

    凯文

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

    我可以确认优化设置对问题有影响。

    我以 OPT 级别1运行,在10-100重置后看到问题。

    如果我尝试您的选择级别关闭建议,我到目前为止已看到问题。

    但有趣的是,如果我将选项级别设置为0,问题很快就会出现,即白令0-2重置,我实际上已经手动重置了几次,直到看到看门狗重置发生。

    我尝试在单个文件上设置优化级别,结果发现,如果将项目设置为 opt = offf,并且将 powermmicro.c 设置为 opt = 1,则错误会再次出现。

    所有这些都不能解释为什么重置之间的行为不同。 但希望它能为您带来一些东西。

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

    您好,马丁,

    我们审查了优化的代码,发现在 watcher_init 函数中,所有要注册的写入都有 EALLOW 和 EDIS 代码,优化将删除并替换为一个 EALLOW,然后是所有寄存器写入,然后是 EDIS。 这会创建对 WDCR 寄存器的背对背写,该寄存器有一些限制,因此会产生问题。 我在 WD 启用码之前插入了几个 NOPS,这解决了问题。

    请参阅以下代码快照-

    此致,

    维耶克·辛格

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

    看起来很棒,我认为这是一个可行的结论,可以解释为什么它在重置之间有所不同。

    现在,TI 希望您与一些芯片设计人员联系

    1. 确认这是问题所在
    2. 有关如何设置这些寄存器的更详细说明,
      1. 8 NOP 在所有情况下都足够了,还是仅仅幸运地在这里?
      2. 是否有任何状态寄存器可以检测到此故障状态?
    3. 请在手册或勘误表中获取上述信息。

    当设置这些寄存器的正确算法被 knwon 时,请更改 syslib 以遵守此规则。

    供参考。 根据您的解决方案,我对我的代码进行了类似的更改,代码已经运行了几个小时,没有任何故障。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    static void WATCHDOG_init(){
    //WATCHDOG initialization
    EALLOW;
    SysCtl_disableWatchdog();
    SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
    SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_128);
    SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_64);
    SysCtl_setWatchdogWindowValue(0);
    SysCtl_delay(10);
    SysCtl_enableWatchdog();
    EDIS;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    主要区别是我使用 sysctl_delay 函数。

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

    您好,马丁,

    [引用 userid="172948" url="~/support/icros/c2000-icro-group/c2f/c2000-微控制器-forume/1067391/tms320f280023c-watchdits-stops -trigger/3956476#3956476"]确认此问题为问题

    是的,这是一个问题,我们对此有待定操作,以更新我们的文档和软件。  

    [引用 userid="172948" url="~ë/support/icles/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1067391/tms320f280023c-watcher-stops 触发/3956476#3956476"] 8 NOP 在所有情况下都足够,或者只是幸运吗?

    我们将获得此信息并进行更新。

    [引用 userid="172948" url="~/support/icros/c2000微控制器-group/c2000 /f/c2000微控制器-forume/1067391/tms320f280023c-watchdits-stops -trigger/3956476#3956476"],我是否有任何状态寄存器可以检测到该故障状态?

    不,没有可供了解的状态寄存器。 这是我们需要防止并确保不会发生的错误之一。

    [引用 userid="172948" url="~ë/support/intrans/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1067391/tms320f280023c-watcher-stops -触发/3956476#3956476"]我使用 sysctl_delay 函数的主要区别。

    这是可以的(相当于50个以上周期),但一旦我们确认了最小周期数,您就可以更新它。

    此致,

    维耶克·辛格

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

    您好,马丁,

    这大约是背对背写之间所需的最小循环次数-

    这是39个周期,如果延迟,您有50个以上周期,因此这应该是正常的。

    此致,

    维耶克·辛格

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

    听起来不错。

    您能提供更多的技术细节来解释原因,我需要一些东西来支持这项声明,以便在内部销售此解决方案。

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

    您好,马丁,

    请查看以下信息是否有帮助-

    此信息将添加到设备文档中。  

    此致,

    维耶克·辛格

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

    这确实解决了我的问题,谢谢你。

    但是,我有人建议您使用新文本,您已经在手册中引用了很多驱动程序库函数,因此我建议您在此处包含 sysctl_delay 的用法。 此外,由于插入 NOP 之类的汇编程序命令会影响优化程序,从而影响 C200编译器手册。

    我还看到编译器反映了这一点:

    如果我使用`asm (“ NOP”);`我从编译器中得到这条评论

    由于使用了内嵌汇编   监视程序.c,此文件的链接时间优化被禁用

    如果我使用 sysctl_delay(),我将不会收到任何注释。

    尽管我的问题已经解决,但这只是一个友好的建议。 :-)

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

    感谢马丁的投入。 我将把它传递给我们的软件团队。  

    [引用 userid="172948" url="~/support/icros/c2000-icro-group/c2f/c2000-iclot-forume/1067391/tms320f280023c-watchders-stops -trigger/3963294#3963294"]

    如果我使用`asm (“ NOP”);`我从编译器中得到这条评论

    由于使用了内嵌汇编   监视程序.c,此文件的链接时间优化被禁用

    [/引用]

    但我没有看到这条警告。 您是作为警告还是在编译器日志中获得此信息?

    此致,

    维耶克·辛格

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

    这不是一个警告,而是一个评论。

    只有在启用 optlevel 4链路时间优化时,才会出现这种情况。

    因此,这不是一个大问题,但可能会造成一些性能损失。

    我只是在对序列队列处理进行一些优化,在某种程度上,我尝试使用 DINT 而不是 Sci_disableInterrupt (),突然我在那里的表现大幅下降,这种说法的解释是资金问题。

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

    人们可以考虑这句话是否正确

    我想说这是一个优化建议,但这是另一天的讨论;-)

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

    好的,谢谢。

    此致,

    维耶克·辛格