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.

[参考译文] CC2340R5:pthread_create 始终返回 12、这意味着没有足够的存储器来创建线程。

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1530532/cc2340r5-pthread_create-is-always-returning-12-meaning-there-is-no-enough-memory-for-creating-the-thread

器件型号:CC2340R5

工具/软件:

我将为使用 ZBOSS 的 ZigBee 使用“onoff_switch"示“示例。 Simplelink F3 SDK 版本:8.40。 但是、由于我想逐行调试代码以更好地了解代码示例(我知道将会惊慌 Zigbee 栈的计时器“,从而导致其产生未定义的错误)、但是、我在编译器设置中启用了“-g"标志“标志 以进行优化、从而简化调试(默认值为 z)。

现在的问题是 pthread_create 始终返回 12、这意味着没有存储器。 我将线程堆栈更改为 21 KB、但错误仍然存在。 我想我必须增加堆大小、而不是增加堆栈大小。 我无法获得有关如何使用 SDK 执行此操作的任何官方文档。  

编辑:我将“FreeRTOSConfig.h"中“中的“configTOTAL_heap_size"从“从 0x1bbc 更改为 0x2fff、问题仍然存在。 如何调试此类问题。

EDIT2:

这是调用“pthread_create"函“函数之前的内存分配图

是否有办法逐行调试这样的代码?

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

    尊敬的 Abdelrahman:

    请查看 TI Clang 用户指南 、了解有关编译器优化选项的更多信息。  请注意、LTO 将对调试功能产生重大影响。  默认的编译器优化设置由 TI 选择和测试、以确保高质量的堆栈性能和最小的代码大小。  我建议进一步研究日志记录/显示功能(根据相关的 E2E 文章)以用于调试目的。

    此致、
    Ryan