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.

[参考译文] CC3235SF:中断处理问题期间出现总线故障

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1397632/cc3235sf-bus-faults-during-interrupt-handling-problem

器件型号:CC3235SF
Thread 中讨论的其他器件:SYSBIOS

工具与软件:

您好!

我在中断处理过程中看到总线故障。 这不是最容易重现的东西,但我通常可以看到2或3一天. 这个问题是随机发生的。 在以下示例中、系统甚至尚未完成初始化和初始连接。 但是我也看到过、当系统处于空闲状态而没有消息流量(来自主机的周期性 MQTT 消息除外)时、或者当我大量执行 MQTT 消息时。 似乎没有任何单一的方法来触发问题。 我发布此文章是因为我在调试此问题时遇到了一些问题、所以我正在寻找有关其他要查看的内容或对正在发生的事情的想法的建议。

下面是我在问题发生时看到的堆栈跟踪示例。 需要注意的是、所处理的中断会有所不同、但故障发生前跟踪函数中的最后两项功能始终相同。 回溯:

在此特定情况下、处理了 Simple Link 中断。 指示故障的 PC 是0X2002e2a0、它位于代码空间和 RAM 之外。 在 CPU 寄存器中、需要注意一些有趣的事项。 首先、该地址出现在 R12中。 其次、与 ti_sysbios_KNL_Task_unblocki__E 函数相关的注释表示应该禁用中断。 但是、看看 PRIMASK、它没有设置、因此我认为中断没有被禁用。 事实上、如果您查看 SCB ICSR 寄存器、您可以看到在总线故障激活时还有一个等待的 SysTick 中断。 我想 SysTick 中断可能是在总线故障之前触发的。

感谢您提供任何意见。

此致、

John

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

    尊敬的 John:

    感谢您的伸出、这似乎是一个要调试的复杂问题。 请给我一些时间来思考一些要跟进的想法。

    此致!

    Rogelio

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

    尊敬的 Rogelio:

    谢谢。 我感谢您能想到的任何东西。 我同意调试比较复杂! 我在职业生涯中开发了几种专有 RTOS、这些类型的问题很难找到。

    此致、

    John

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

    你好、Rogelio

    您对此有什么想法吗?

    我找到了一个方法,重现这个问题100%的时间。 我们偶尔会从堆栈接收到寄生 MQTT_EVENT_CONNACK。 这是虚假的、因为我们未从 MQTT 断开并重新连接。 这种情况每天发生几次。 堆栈跟踪如下所示。