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.

[参考译文] TMS320F28388D:当使用 FreeRTOS 在 CM 内核中发生如此多的中断事件时、所有任务都将失效

Guru**** 2602865 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1184944/tms320f28388d-all-task-is-dead-when-so-many-interrupt-evens-occur-in-cm-core-using-with-freertos

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

您好!

我正在使用 F28388D MCU CM 内核中的项目代码进行测试。 使用适用于 C2000ware_SDK 中 CM 内核的 FreeRTOS 内核的项目。

我有一个错误、我不知道解决它。 我的项目中有1个 ISR_Handler 和4个任务。

-用于 UART 中断的 ISR_Handle (由 UART Rx FIFO 满级别7/8 (14字节)触发、UART Rx 超时和 UART TX 完成)

4个任务:2个优先级为2的任务、1个优先级为1的任务和空闲任务。

我向 UART RX 发送数据包消息,中断 UART Rx FIFO 满(级别 RX 7/8 FIFO)和 UART Rx 超时,并从 UART_ISR_handler 中的数据包解析消息。

我意识到、当我发送数据包时、数据包的字节数量大约是 Rx FIFO 触发器和 Rx 超时的15倍。 一切都仍然正常。

如果 packer msg 具有 使 Rx fifo 触发器和 Rx 超时总数约超过15倍的字节数。 FreeRTOS 内核管理的所有任务都已失效。 程序卡在 FAULT_ISR 中断中。

我已检查堆栈是否溢出? 但看起来不是。

我还阅读了 FreeRTOS 文档、重点介绍第6章:中断管理- ARM cortex M 的中断嵌套 、并将 UART 中断的优先级设置为6 < CONFIGMAX_SYSCALL_INTERRUPT_PRIOTITY (5 < 5)、因为在 INTERRUPT_Handle 中、我使用了带有__ FromISR 的 FreeRTOS API。

 感觉有太多的中断触发器可能会终止 RTOS 的任务?

你能给我任何意见或建议吗?

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

    您好!

    您是否曾尝试将 ISR 内容保留在任务中?  实际的 ISR 函数只需向该任务发送一个信号量或一个任务通知即可执行  

    此致、

    Veena

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

    我已经尝试过、当数据包 msg 中的字节发送到队列时、使用 ISR、然后使用任务读取队列来解析 msg。 同样的问题仍然会发生、所有任务在包含多个字节的数据包之后都已失效。

    例如,我的数据包长度为351字节,这使得 ISR 连续发生28次,中断持续28次后,所有任务都停止,

    但是、数据包长度为半175字节 、这使得 ISR 连续发生大约15次->程序正常运行。

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

    您好!

    您是否已检查 ARM 故障状态寄存器? 它可能会提供一些有关导致故障的原因的想法

    此致、

    Veena

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

    谢谢、

    我发现了 与缺少内存分配有关的问题。 我修复了、程序正常运行