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.

[参考译文] MSPM0L1306:中断处理不一致

Guru**** 2431360 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1297997/mspm0l1306-interrupt-handling-inconsistent

器件型号:MSPM0L1306
主题中讨论的其他器件:SysConfig

我将根据  uart_echo_interrupts_standby 示例测试一些 UART Rx 代码。

通常、它运行良好。  然后、我将更改 项目中不相关部分的一些代码、重新编译、重新加载固件并退出接收 字符。  我花了大约一个小时的时间尝试修复它、在新构建后的某个时候它又开始工作。  几个更改/重建后,我回到了坏的状态。  我真的不相信 我所做的代码更改会被破坏或修复。  我现在已经经历了4-5次这个周期,并且找不到它什么时候中断或如何修复的相关性。

我在 UART Rx 引脚上有一个逻辑分析仪、因此我可以看到中显示的字符。

我可以在 中断处理程序中设置一个断点。  当到达该断点时、系统处于良好状态并 按预期接收字符。  当系统 处于不良状态时 、永远不会激活断点。

您能否提供有关如何隔离此问题的调试建议?  我现在所知道的只是中断处理程序在中断的构建中没有被调用。

 在我看来、构建过程中的一些东西会卡在不良状态、并在一段时间内提供不良结果 、直到它消失。  我尝试了"Build Project""Clean Project"和"Rebuild Project"选项 、但没有任何一致的结果。  有没有其他 Theia 选项、我应该尝试获取一致的构建?

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

    这是一个 No RTOS、TI Arm Clang 编译器项目。

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

    写这篇文章后,我回到 Theia 没有任何代码更改,清理项目,重建它,再次运行它,它工作.  我似乎缺少一些东西来使构建过程更一致。

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

    您好、Barry、

    您使用什么进行编译优化设置?

    如果您没有进入 ISR 处理传入的字节、这将指示已禁用 UART 的 CPU NVIC 中断或禁用特定的 UART RXINT 中断。  执行初始系统配置后、您是否在代码中的任何位置禁用/启用这些功能?

    您正在使用何种睡眠策略?

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

    我想在本周的大部分时间里,升级到 Theia 1.20解决了这个问题。  不幸的是、问题又来了。

    我在项目属性-> Arm 编译器->优化中找到了优化设置。  我尝试了设置0、1和2。  2是最初的缺省值,我一直使用的其他似乎没有帮助。

    调用  SYSCFG_DL_init ()后; 我执行:

    NVIC_ClearPendingIRQ (UART_0_INST_INT_IRQN);
    NVIC_EnableIRQ (UART_0_INST_INT_IRQN);
     
    这些内容是从 我开始使用的资源库 UART 示例复制的。  如果我删除这些语句、TX UART 通道会在发送第一个字符串后冻结、因此显然需要它们。
    我不会 在任何地方手动禁用任何中断。  我针对该项目的代码库不是很大、因此我认为我的代码中没有隐藏任何内容。
    我不知道目前的睡眠政策。  我找不到设置或任何代码参考。  我呼叫:
    DL_SYSCTL_disableSleepOnExit()
    拾取噪声。
    我很高兴告诉你睡眠政策,如果你可以指向它。
    当我使用 Theia 1.20启动调试器时、我在"Debug Output"面板中也遇到这个问题:
    sec_ap:DisAsmTPI:创建 Tpi_disasm 失败。  
    我不记得在使用较旧的 Theia 时看到这一点。  我不确定这意味着什么。  搜索这些项不会产生任何帮助。   调试器和断点现在看起来 有点粗略。  我想知道这是不是原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 SysConfig 中找到了睡眠模式设置。

    运行0

    睡眠0

    (默认值)

    如果您认为有帮助、我可以尝试其他人。

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

    您好、Barry、

    您是否曾尝试过在 PC 上下载和安装 CCS?  我很好奇,如果你看到同样的行为。

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

    这是我正在处理的一个整体的其他问题。  我的 PC 上的用户名中有空格、CCS Theia 显然无法处理这个问题。  我还没有给它一个机会。

    同时、构建再次开始工作。  我真的不认为我做了任何事情来修复它、但我无法测试故障、直到它恢复。  该情况何时发生。

    在最近的故障期间、我曾尝试轮询 FIFO 并发出阻止调用来检索传入数据。  即使我看到引脚上的数据、它们都不会触发。  这使我怀疑外设初始化导致中断问题。

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

    您好、Barry、

    这些类型的问题可能很困难。  您是否试用过 CCS (非 Theia 版本)?

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

    我们使用非 Theia 版本已经很多年了。

    我想我认为 MSPM0不受支持。

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

    您好、Barry、

    经典 CCS 绝对支持 MSPM0。  发布一个全新系列的产品并且在 CCS 中没有支持似乎很愚蠢。 ;)

    CCS -> https://www.ti.com/tool/CCSTUDIO

    MSPM0 SDK -> https://www.ti.com/tool/download/MSPM0-SDK/1.20.01.06

    如果 CCS 中仍有问题、请告诉我。