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:将 ISR 堆栈分配给主堆栈并在稍后恢复。

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1478782/tms320f28388d-assigning-isr-stack-to-the-main-stack-and-restore-it-later

器件型号:TMS320F28388D

工具与软件:

专家们、您好!

这是与 TMS320F28388D 相关的问题:FreeRTOS 任务的堆栈存储器利用率- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

我们也面临同样的问题、即由于我们为逆变器集成了从 Simulink 生成的控制代码、固件会频繁复位。 逆变器相关函数从 ISR 中调用。  

建议从 ISR (而不是 FreeRTOS 任务)调用这些函数、以避免上下文切换期间的任何延迟。

上面突出显示的主题是一个已使用了一年的主题。 是否确定了在调用完成后将 ISR 堆栈再分配到主堆栈并返回到 ISR 堆栈的方法?

谢谢你。

- Rohit

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

    如果有人正在处理此问题、请告知我。

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

    Rohit、您好!  

    附件为一个 zip 文件、其中包含一个实现相同功能的示例 FreeRTOS 项目。

    e2e.ti.com/.../freertos_5F00_ex1_5F00_c28x_5F00_led_5F00_blinky.zip

    请注意、 commonISR 需要40字节的任务堆栈、然后再切换到 isrStack。 在中断嵌套的情况下、只有第一个中断使用任务堆栈的40字节、嵌套中断只使用 isrStack。 因此、每个任务堆栈中应至少包含40字节的缓冲区。

    此致、

    Arnav

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

    谢谢您、Arnav. 我将尝试此示例并向您反馈结果。

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

    您好、Arvan、

    我对该示例有几个问题:

    • 在 commonISR 文件中、禁用中断以退出为 ISR 保留的堆栈空间。 之后在哪里重新启用中断?

    • 如果未启用中断嵌套、我认为您不需要禁用中断或检查 intNesting 变量。 是这样吗?

    • 为什么 RTOS 节拍定时器 ISR 不能在一个单独的堆栈(portTICK_ISR)上执行? 它与 portYIELD_FROM_ISR 函数不同吗?

    • 最后、我能否使用中断堆栈来执行 FreeRTOS 的节拍挂钩、该挂钩在 portTICK_ISR 内调用?

    此致、Ramon。