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:TI.SYSBIOS.堆.HeapMem on task

Guru**** 2595770 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/588325/rtos-tm4c1294ncpdt-ti-sysbios-heaps-heapmem-on-task

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我在 Tiva launchpad 上实现了 MQTT、我为 MQTT 发布创建了一个任务。

每隔1秒、我将使用 MQTT 发布向服务器发送1500字节数据。 因此、我已定义任务堆栈大小4096 (#define ASKSTACKSIZE 4096)。

它工作正常、但2分钟后(经过100次以上的时间) 、它显示了下面给出的一些错误、

TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=1032
00177.977 mmBulkAlloc():无法分配内存。
00177.977内存不足:handle=0x0、size=537041348
00177.978 SBNew:缓冲室

如该图所示、时间为20到30次

最后显示了这种情况、然后终止、

TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=48
TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=48
TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=48
TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=13
TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=12

TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003c34c、size=8192

如果我增大 TASKTASKZE、那么我也会遇到相同的问题。 如何解决此问题?

如何清除应用程序的堆栈内存?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    任务堆栈与堆不同。 每个任务都有一个专用堆栈、用于存储局部变量、返回地址、传入参数等
    堆是内存管理器。 您可以通过 malloc 或 Memory_alloc 来分配内存。
    当你创建一个任务时、如果你不提供一个堆栈、它将从堆中分配。

    您需要增加堆大小。 我假设它们只是您系统中的一个堆(请通过在 CCS 中查看 Tools->ROV->HeapMem 来确认)。 要增加堆的大小、请更改.cfg 文件中的 BIOS.heapSize 参数。

    如果增加堆大小无法解决问题、则可能会发生内存泄漏。 您可以使用 HeapTrack 帮助查找内存泄漏。 本视频介绍了此功能(以及异常和堆栈溢出)。

    Todd