你(们)好
我对 TI 堆栈的使用有疑问:
在链接器文件中分配1KB 的堆栈。 但为 BLE 任务分配了2048字节的堆栈、为 Zigbee 任务分配了3000字节的堆栈。 它从哪个内存分配给 BLE 和 Zigbee 任务? 它是来自堆吗? 请提供与此相关的详细信息/参考/文档/链接。
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.
你(们)好
我对 TI 堆栈的使用有疑问:
在链接器文件中分配1KB 的堆栈。 但为 BLE 任务分配了2048字节的堆栈、为 Zigbee 任务分配了3000字节的堆栈。 它从哪个内存分配给 BLE 和 Zigbee 任务? 它是来自堆吗? 请提供与此相关的详细信息/参考/文档/链接。
您好、Krishna、
链接器文件中的默认堆栈大小与射频协议的任务堆栈大小不同: https://e2e.ti.com/f/1/t/948859
BLE 和 Zigbee 任务从堆分配、堆可在.cfg (TI-RTOS)或.syscfg (TI-RTOS7)文件中进行配置。
此致、
Ryan
您可以定义 HEAPMGR_metrics 来监控堆使用情况、如 BLE5-Stack 调试指南中所述。 它还介绍了 IAR ROV 的使用。
此致、
Ryan
感谢您提供信息。
我对任务堆栈有疑问。
任务堆栈是从堆还是 RAM (通用 RAM 存储器)中分配的?
我可以看到、由链接器文件分配的堆栈和任务堆栈都是用0xBE 标记的水。
任务堆栈是否包含任何页眉和页脚? 请参阅下图 Zigbee 任务堆栈、其中前4个字节填充为0x00、然后是标有0xBE 的水。 即使在末尾、也有4个字节的0x00。
在代码执行期间、如果我检查、最后4个字节被填充为0x00、而之前4个字节被填充为0xBE。
但在 BLE 堆栈任务(下图)中未观察到相同情况、其中4个数组索引中没有0x00。
您能解释一下原因吗? 或者、您能告诉我在哪里可以获得有关此内容的详细信息(任何文章/文档)吗?
提前感谢。