主题中讨论的其他器件:HALCOGEN、
您好
我使用了 halcogen 文件夹中的 example_dwwd、并修改为
#1 dwwdInit (rtiREG1、Generate_Reset、4095、size_100_percent);
#2并在 rtiNotification ()中切换 LED 指示灯
当刷新停止时(这是正常的)、会发生 WDT 复位。 但我的应用似乎无法正常运行。 不再有 LED 在切换。
我可能错过了一些东西、希望能从其他人那里听到。 你好。
德利克
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.
您好
我使用了 halcogen 文件夹中的 example_dwwd、并修改为
#1 dwwdInit (rtiREG1、Generate_Reset、4095、size_100_percent);
#2并在 rtiNotification ()中切换 LED 指示灯
当刷新停止时(这是正常的)、会发生 WDT 复位。 但我的应用似乎无法正常运行。 不再有 LED 在切换。
我可能错过了一些东西、希望能从其他人那里听到。 你好。
德利克
尊敬的 Deric:
确保切换时间是 DWD 到期时间的一半。
当您将预加载配置为4095和窗口大小100%

我不知道您的 RTICLK、但我假设默认为75MHz、在本例中、您的过期时间将变为0.447Sec 或447mSec。
因此、 在 DWD 到期之前、对于 LED 的一个打开和关闭状态、您的 LED 切换时间应至少小于大约200mSec。
--
谢谢。此致、
Jagadish。
您好,Jagadish
谢谢、是的、rtick 为75MHz、我 在 RTI 中设置了大约100ms 的刷新间隔。
应用程序启动时、它将闪烁几秒钟。
这是我的代码片段。
while (CTR < 25);
rtiDisableNotification (rtiREG1、rtiNOTIFICION_COMPARE0);
while (1);
void rtiNotification (rtibase_t * rtiREG、uint32通知)
{
CTR++;
gioToggleBit (gioPORTB、XLP_USER_LED3);
dwdReset (rtiREG1);
}
WDT 不刷新时、将发生复位。 但问题是、我的应用(同一应用)无法正常运行。 在开始时未观察到更多的 LED 活动。 这对我来说是一件令人困惑的事情。
您是对的,这是我遇到的行为。
好吧,Deric,我会验证并更新你的信息。
尊敬的 Deric:
我了解了问题的根本原因:
在器件进行看门狗复位后、通过 HALCOGen 生成的 sys_startup.c 无法正常运行。 系统、VIM、ESM 等未被初始化。
请在用户代码区域15之间插入初始化代码。

如您所见、我刚刚添加了初始化代码、在我们上电复位时也执行该代码至看门狗复位。
完成上述修改后、我的应用程序代码执行成功。
我将在此处附上我的项目、请浏览:
e2e.ti.com/.../DWWD_5F00_Example_5F00_LC4357.zip
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
如果您有 HDK,您能给它一个机会吗? 非常感谢。
使用 HDK 也可以正常工作。
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
在我的测试中、我发现了一个问题、

看门狗复位后的 SYS_ESR 寄存器值为0x2000、这意味着 ESR 寄存器中仅设置第13位(WDRST)。
但在我们的代码中、我们 仅在设置了第3位(EXTRST)的情况下验证该第13位(WDRST)。

由于第3个位没有设置正确、因此即使由于看门狗复位、我们也会在复位源处将代码设置为 NO_RESET

如果复位源为 NO_RESET、我们不会在代码中进行任何初始化、我们将直接转到下一行

因此、我们没有执行任何初始化权限、因此这会导致出现异常。
现在我所做的是、我在"no_reset"之前添加了一个条件。

这里、我还将验证第13位是否已设置、然后我将其视为"watchdog_reset"。 添加此条件后、我的代码运行良好。
我附加了代码供您参考。
e2e.ti.com/.../DWWD_5F00_Example_5F00_LC4357_5F00_HDK.zip
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
似乎 EXTRST (BIT3)的行为在某种程度上不同于 Launchpad 和 HDK。 您是否有任何线索?
如果电路板发生更改、则行为不应有任何差异。
您能否验证两个电路板上的完整控制器器件型号、即 Launchpad 和 HDK、如果它们是不同的控制器、则可能会出现行为差异。
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
两者都将使 WDT 复位位生效,但 只有 Launchpad 板将使 EXTRST 位生效。 [/报价]明白了、
给我一些时间来测试和分析它。
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
我找到了一个旧线程、他们在其中解释了当发生看门狗超时时为什么会设置外部复位位。
(+)在 SYSESR 寄存器中 WDRST 位和 EXTRST 位一起设置-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
根据该线程、当看门狗超时发生时、它还会使 nRST 引脚为低电平、并且由于该引脚是 I/O 引脚、因此回读该引脚后、它还会设置外部复位引脚。
但我们可以在 launchpad 和 HDK 的 nRST 引脚处看到不同的电路
HDK nRST 电路:

LaunchPad nRST 电路:

如果控制器使 nRST 引脚为低电平,
HDK = 0.33mA 时此引脚上的灌电流
和 Launchpad 中此引脚上的灌电流= 1.5mA
我怀疑这种差异可能会影响行为、我还没有任何实际证据。 请给我一些时间进行进一步分析并提供最新情况。
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
您是否设法获得更多信息或进行测试以解决此问题? 我希望将信息传递给我的团队。
很抱歉耽误了我的时间,本周我还遇到了其他问题,我将在下周尝试解决你的问题。
--
Thak &此致、
Jagadish。
我能不能说我应该遵循基于 launchpad 的原理图。
是的 Deric、您可以遵循 LaunchPad 原理图。
尊敬的 Deric:
请参考您的信息!
我们 使用 TMS570LC4357和 RM58L843的 revA 和 revB 硅对 HDK 进行了测试、看门狗复位不会设置 EXTRST 标志。 我们 监控 nRST 引脚(双向复位信号)、HDK 上的 nRST 引脚不会通过看门狗复位被拉低、但 Launchpad 上的 nRST 引脚会通过看门狗复位被拉低。

在 HDK 上、nRST 由一个按钮进行驱动、并且来自 ETM MIPI、XDS100V2 CPLD、ARM 20引脚 JTAG 接头、RTP 接头的 RESET 信号也被路由至以太网 PHY 的 RESET 信号。 所有这些布线上的上拉电阻器都会对 nRST 引脚形成强上拉、因此来自 WDD 的内部复位信号无法下拉引脚、并且 EXTRST 标志不会通过 WDD 复位进行设置。 在 LaunchPad 上、nRST 引脚仅连接到按钮。
我们 刚刚做了另一个测试、这验证了我的假设(nRST 上的强上拉)。
我们 从 ETM MIPI 接头、ARM 20引脚 JTAG 接头、RTP 接头、XDS100V2 CPLD 中移除了 RST 信号上的上拉电阻器、但通过热复位按钮在 RST 信号上保留一个上拉电阻器。 EXTRST 标志可通过看门狗复位来置位。
ESR 寄存器的位3 (EXTRST)被置位。 
nRST 信号通过看门狗复位被拉低: 
--
谢谢。此致、
Jagadish。
尊敬的 Deric:
我真的很感激您的帮助。
这是我们的荣幸!
--
谢谢。此致、
Jagadish。