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.

[参考译文] RTOS/TM4C1294NCPDT:TM4C1294 Tiva C 系列 EVM 中发生栈溢出

Guru**** 2424970 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/614725/rtos-tm4c1294ncpdt-stack-overflow-occurs-in-tm4c1294-tiva-c-series-evm

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!

在我的应用程序执行期间、我通常会遇到以下错误、

L.任务:第383行:E_spOutOfBounds:任务0x200028dc 栈错误、SP = 0x20000ce4。
xdc.runtime.Error.raise:终止执行

我将使用几乎9个任务、每个任务具有512KB 的堆栈大小。 我使用了4个事件处理程序和4个邮箱。

问题:

1.我是否需要增加每个任务的堆栈大小? 或系统堆栈

默认系统堆栈大小是多少? 在这里、我可以在 CCS .cfg 文件中找到系统堆栈增加选项。

当我增加事件处理程序或邮箱时、它会抛出内存错误。 是否有任何增加邮箱内存缓冲的选项。

此致、

Manohar

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

    [引用 user="Manohar B"]我使用的任务几乎为9个,每个任务的堆栈大小为512KB。

    我认为这是不可能的。 芯片上没有太多的存储器、Launchpad 也不会添加存储器。

    Robert

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

    实际上、每个任务的堆栈大小仅为512字节、因此仅占用4KB 的内存。
    那么、为什么它显示该误差呢?

    L.任务:第383行:E_spOutOfBounds:任务0x200028dc 栈错误、SP = 0x20000ce4。
    xdc.runtime.Error.raise:终止执行

    请建议可以执行任何优化或增大堆栈大小。

    注意:在我们的任务中、没有局部变量、没有递归调用和声明的数组。


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

    [引用 user="Manohar B"]那么为什么它显示错误?

    因为 q 是32? 认真地说,我们如何知道?

    [引用 user="Manohar B"]注意:在我们的任务中,没有局部变量、没有递归调用和声明的数组。

    RTOS 调用? 库调用?

    您如何确定适合您堆栈的大小?

    [引用 USER="Manohar B"]任务:第383行:E_spOutOfBounds:任务0x200028dc 堆栈错误,SP = 0x20000ce4。

    请注意、您的错误告诉您哪个任务和堆栈发生故障

    Robert

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

    因为 q 是32? 认真地说,我们如何知道?
    我没有收到这个问题。

    2.您如何确定适合您堆栈的大小?
    我只使用在.cfg GUI 中创建任务时提到的默认堆栈内存大小。


    请注意、您的错误会告诉您哪个任务和堆栈发生故障
    如何使用任务地址查找失败的任务和堆栈、您对我们如何在 CSS 中查找它有什么想法吗?


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

    [引用用户="Manohar B"]
    因为 q 是32? 认真地说,我们如何知道?
    我没有收到这个问题。[/引述]

    我当时观察到、我们无法了解您可能遇到堆栈问题的原因。 我们不知道您的应用程序是如何构建的、也不知道您的任务是什么。 我巧妙地建议您的堆栈溢出的原因是您将 q 设置为32。 这是一个很好的建议、我们可以提供任何信息。

    [引用 user="Manohar B"]2..您如何为您的堆栈确定合适的大小?
    我只使用在.cfg GUI 中创建任务时提到的默认堆栈内存大小。

    那么、现在您有了第一个任务。 确定堆栈需要的大小。

    [引用 user="Manohar B"]3.Note、您的错误会告诉您哪个任务和堆栈发生故障
    如何使用任务地址[/quot]查找发生故障的任务和堆栈

    从给定的地址信息返回跟踪。

    [引用 user="Manohar B"],您对我们如何在 CSS 中找到它有什么想法吗?

    不是最时尚的,但应该可以制作地图。 尽管我认为您是指 CCS、但我的想法更少。

    Robert

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

    您好!

    谢谢 Robert

    我发现上述错误是由于空闲任务的地址在错误中。

    我已逐渐将空闲任务堆栈大小从512增加到2048。 因为我会得到相同的误差。

    问题:

    我想知道如何解决这个错误、即使我增加了空闲任务的堆栈大小、它也不会被解决。

    2.是否有其他办法解决这一问题?

    此致、

    Manohar