gpt4 book ai didi

stack - 在 FreeRtos 或 TI rtos 中计算堆栈大小

转载 作者:行者123 更新时间:2023-12-02 03:54:24 25 4
gpt4 key购买 nike

最近我在使用 Rtos 并创建了一些任务来执行我需要的操作。尽管似乎每次我使用 xTaskCreate 或 TI GUI 配置创建新任务时,我只是尽量保持堆栈大小,以免堆栈溢出。有什么方法可以计算我的任务针对这些事件使用的最大堆栈大小吗?1.全局变量和局部变量使用的栈2.函数递归使用的最大栈数3.包括中断上下文切换

最佳答案

编译器、编译器优化级别、CPU 架构、局部变量分配和函数调用嵌套深度都对堆栈大小有很大影响。 RTOS 的影响很小。例如,FreeRTOS 将向 Cortex-M 上的堆栈添加大约 60 个字节 - 用于在任务未运行时存储任务的上下文。无论您使用哪种方法计算非 RTOS 项目中的堆栈使用情况,都可以在您的 RTOS 项目中使用 - 然后添加大约 60 个字节。

您可以计算这些东西,这在安全关键应用程序中可能很重要,但在其他情况下,更务实的方法是尝试并查看 - 使用 RTOS 的功能来衡量实际使用了多少堆栈,以及使用堆栈溢出检测 - 然后进行调整,直到找到最佳选择。 http://www.freertos.org/Stacks-and-stack-overflow-checking.html http://www.freertos.org/uxTaskGetStackHighWaterMark.html

关于stack - 在 FreeRtos 或 TI rtos 中计算堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44434620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com