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.

[参考译文] LAUNCHXL-F280039C:复位后、CPU 暂停

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1245841/launchxl-f280039c-after-a-reset-the-cpu-halts

器件型号:LAUNCHXL-F280039C
主题中讨论的其他器件: C2000WARE

各位同事:

请支持以下问题:API 调用发生 CPU 复位后、CPU 将暂停。

使用了以下任一 API (sysctl.h 头文件):
- SYSCTL_simulateReset (WDGH_hard_reset);
- SYSCTL_simulateReset (WDGH_SOFT_RESET);
- sysctl_resetDevice()。

这种情况发生在调试会话期间和正常固件执行期间。 在一个调试会话期间、它看起来像:

评估板:LAUNCHXL-F280039C。
Code Composer Studio:版本:12.2.0.00009。
C2000WARE:4.02.00.00。


提前感谢、我将很高兴您的支持。

Br、
鲁登科斯蒂安特

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

    Kostiyantin,

       根据"正常 FW 执行"、我假设您指的是独立执行、而不连接到 CCS、对吗?

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

    可以。 在这种情况下、CCS 仅用于刷写。

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

    Kostiyantyn,

       我需要自己在器件上尝试这一点。 请给我一两天的时间。

    请说明"CPU 暂停"是什么意思。 例如、假设您的固件将 GPIO 引脚切换5次、然后模拟复位。 之后会发生什么情况? 您不会再次看到切换? 您可以试试下面的方法吗?

    器件初始化后、将 GPIO 引脚切换5次、然后模拟复位。 在启用和禁用看门狗的情况下尝试执行此操作。

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

    是的、当然、谢谢。
    在本例中、CPU 暂停-当 MCU 上的固件 在调用复位 API 后停止通过 SCI 通信发送调试信息、但它应该这样做。  我使用 Putty 作为终端、但即使重新连接终端也没有帮助、似乎是 MCU 方面的这个问题。  
    但我还要使用 GPIO 闪烁进行检查。

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

    好的、这可能是 CPU 在做"其他事情"。 当设备收到时钟时、它必须执行"某些操作"。 它不能简单地冻结(除非器件处于空闲/待机/停机模式)。 器件可能会因 EMI 而冻结、但此处的情况并非如此。 假设引导模式选择开关 S3设置为跳转到闪存。

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

    Kostiyantyn,

                   我在器件上试过这个。 我使用了 C:\ti\c2000\C2000Ware_4_03_00_00\driverlib\f28003x\examples\GPIO 目录中的 GPIO_ex2_toggle 示例、但稍作修改了文件。 我注意到的是、要使这种方法正常工作、必须断开调试器(从物理角度或逻辑角度)。 即、一旦您对代码进行编程、就可以在 CCS 中断开目标。 然后、您就会看到我的代码正常工作。 您将看到5秒的延迟、然后是 GPIO22的5次切换、并看到该序列反复不断地重复。 这是可以理解的,因为如果连接了调试器,则代码无法像在独立情况下那样自由运行。  请注意,我仅尝试了 sysctl_resetDevice();

    由于未定义 WDGH_HARD_RESET 和 WDGH_SOFT_RESET、编译器会针对以下情况返回错误。 这些定义是您创建的吗?  

    - SYSCTL_simulateReset (WDGH_hard_reset);

    - SYSCTL_simulateReset (WDGH_SOFT_RESET);

    我尝试了下面,它不起作用。 我正在调查此事。

    SYSCTL_simulateReset (SYSCTL_Cause_SIMRESET_CPU1RSN);
    SYSCTL_simulateReset (SYSCTL_LAY_SIMRESET_XRSN);

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

    您好、 Hareesh:

    是的、 WDGH_HARD_RESET 和 WDGH_SOFT_RESET 是我自己分别使用值2和1进行定义的。 很抱歉、我忘了通知。
    在本例中、只有在 刷写之后立即断开调试器的情况下、代码是否在重新启动后一直成功运行?

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码是否在重新启动后成功运行,是否仅当调试器 在闪烁后断开连接时才反复运行?

    在两种情况下都工作正常。 您可以尝试随附的示例。  我更改了 SYSCTRL.h 中的以下行。 现在、我能够使其适用于3种类型的复位。

    #define SYSCTL_LAY_SIMRESET_CPU1RSN   0x00000001U //!< SIMRESET_CPU1RSn
    #define SYSCTL_LAY_SIMRESET_XRSN    0x00000002U //!< SIMRESET_XRSn

    e2e.ti.com/.../1200.gpio_5F00_ex2_5F00_toggle.ce2e.ti.com/.../gpio_5F00_ex2_5F00_toggle.syscfg

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

    Kostiyantyn,

                   我从我们的软件团队获得了一些反馈。 事实证明、SYSCTL_simulateReset 函数的参数可在 hw_sysctl.h 文件的 C:\ti\cc2000\C2000Ware_4_03_00_00\driverlib\f28003x\driverlib\inc 目录中找到:

    因此、这些函数的正确用法将是  

    SYSCTL_simulateReset (SYSCTL_SIMRESET_CPU1RSN);
    SYSCTL_simulateReset (SYSCTL_SIMRESET_XRSN);

    SYSCTL_CASE 参数 作为参数传递给 RESCCLR 寄存器以清除复位原因:  

    #define SYSCTL_LAY_SIMRESET_CPU1RSN  0x00000400U //!< SIMRESET_CPU1RSn

    #define SYSCTL_LAY_SIMRESET_XRSN   0x00000800U //!< SIMRESET_XRSn

    随附了更新的测试案例:

    e2e.ti.com/.../1513.gpio_5F00_ex2_5F00_toggle.c

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

    尊敬的 Hareesh:

    感谢您的建议、也感谢您的长时间回复。 我已经尝试了你上面提到的所有方法、但不幸的是、没有一种方法可以按预期工作。   复位后、CPU 仍会暂停、GPIO 不再闪烁。
    至于 S3开关-是的、它被设置为跳转到闪存。

    谢谢。

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

    e2e.ti.com/.../gpio_5F00_ex2_5F00_toggle_5F00_4.2.zip
    这是我的测试项目、我将尝试使 GPIO 引脚26闪烁。
    CCS 版本   12.2.0.

    C200Ware 4.02.00

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

    Kostiantyn,

       我先测试了代码、然后再将其发送给您。 我使用 C2000ware v4_03和 CCS 12.4。 我看了看你们的试验箱,它几乎是相同的,我给你的。 安装 C2000ware v4.03后,请尝试我的代码"as ise"。

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

    尊敬的 Hareesh:

    我安装了 CCS 12.04和 C2000Ware 4.03、在这个环境中测试了您的解决方案-但是它不起作用。 唯一的问题是我将引脚编号从22更改为26、因为出于某种原因、示波器连接到该引脚、这是我跟踪该行为的唯一方法(见下文)。

    e2e.ti.com/.../gpio_5F00_ex2_5F00_toggle_5F00_12.04.zip

    CCS 12.04 + C2000Ware 4.03或 CCS 12.02 + C2000Ware 4.02提供相同的结果。

    谢谢。

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

    Kostiantyn,

       我不知道如何进一步帮助您。 我在 Launchpad 上测试了代码、看起来您也在使用 LP。 要测试此代码、您甚至不需要示波器、因为我正在切换 LP 上的 L.E.D。 我在每次器件复位时插入了3秒的暂停。 此暂停告诉您该器件正在经历复位周期。

    e2e.ti.com/.../20230718_5F00_181122.mp4

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

    好的、我将进一步调查该问题。 但是、感谢您的支持!