嗨,对话,
集成算法库后分配内存失败
我们的算法只需要9千字节的内存(数据1.5千字节,bss 7.5千字节)。
设置了以下两个参数后,问题仍然存在:Malloc fail。
我附上我的分析,请帮我检查更多。
谢谢。
你好,徐国栋,
vaApplicationAllocFailedHook()是FreeRTOS的一个钩子。当没有足够的连续堆可用于尝试的内存分配时,此hoot会通知应用程序。我建议将FreeRTOS堆的大小(custom\u config\u XXXX.h文件中的configTOTAL\u heap\u size)增加到代码编译的最大值。
谢谢,下午好
FreeRTOS堆的最大大小是多少(configTOTAL\u heap\u size)?
任务堆栈大小的最大值是多少?
可以使用任意大的堆大小。如果系统内存不足,链接器将发出错误。请参阅https://freertos.org/有关FreeRTOS的更多信息。
将任务堆栈大小设置为>1024*10,错误:将发生分配内存失败。
你能附上一张截图吗?您使用的配置总堆大小是多少?
如下所示,如果任务堆栈>10*1024,则内存分配失败。
/*************************************************************************************************\*内存特定配置*/#定义dg\u configQSPI\u CACHED\u OPTIMAL\u RETRAM\u 0\u SIZE\u AE(64*1024)#定义dg\u configQSPI\u CACHED\u RAM\u SIZE\u AE(32*1024)#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u SIZE\u AE(96*1024)
#定义dg\u configQSPI\u CACHED\u RAM\u大小(56*1024)#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u大小(72*1024)#定义dg\配置QSPI\代码\大小(256*1024)
OS\u TASK\u CREATE(“PXP Reporter”,/*分配给任务的文本名称,例如只调试;内核不使用。*/pxp\u reporter\u task,/*实现任务的函数。*/NULL,/*传递给任务的参数。*/#如果(dg\u configDISABLE\u BACKGROUND\u FLASH\u OPS==1)512,/*要分配给任务的堆栈。*/#其他#如果ZSENS\u FUSION\u ALGO1024*10,/*要分配给任务的堆栈。*/#其他756,#结束#结束
#定义dg\u configQSPI\u CACHED\u RAM\u大小(56*1024)#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u大小(72*1024)#定义dg\配置QSPI\代码\大小(256*1024)/*************************************************************************************************\*FreeRTOS特定配置*/#define OS\u FREERTOS/*定义此项以使用FREERTOS*/#如果(dg_configUSE_SOC)#如果已定义(DEBUG\ U SOC)#define configTOTAL\u HEAP\u SIZE 12300/*这是FreeRTOS的总堆大小*/#其他//#define configTOTAL_HEAP_SIZE 11200/*这是FreeRTOS的总堆大小*/#define configTOTAL\u HEAP\u SIZE 20*1024/*这是FreeRTOS的总堆大小*/#结束#其他#define configTOTAL\u HEAP\u SIZE 11000/*这是FreeRTOS的总堆大小*/#结束
系统是否仍然耗尽堆?
你好,徐国栋,
vaApplicationAllocFailedHook()是FreeRTOS的一个钩子。当没有足够的连续堆可用于尝试的内存分配时,此hoot会通知应用程序。我建议将FreeRTOS堆的大小(custom\u config\u XXXX.h文件中的configTOTAL\u heap\u size)增加到代码编译的最大值。
谢谢,下午好
嗨,对话,
FreeRTOS堆的最大大小是多少(configTOTAL\u heap\u size)?
任务堆栈大小的最大值是多少?
谢谢。
你好,徐国栋,
可以使用任意大的堆大小。如果系统内存不足,链接器将发出错误。请参阅https://freertos.org/有关FreeRTOS的更多信息。
谢谢,下午好
嗨,对话,
将任务堆栈大小设置为>1024*10,错误:将发生分配内存失败。
谢谢。
你好,徐国栋,
你能附上一张截图吗?您使用的配置总堆大小是多少?
谢谢,下午好
如下所示,如果任务堆栈>10*1024,则内存分配失败。
/*************************************************************************************************\
*内存特定配置
*/
#定义dg\u configQSPI\u CACHED\u OPTIMAL\u RETRAM\u 0\u SIZE\u AE(64*1024)
#定义dg\u configQSPI\u CACHED\u RAM\u SIZE\u AE(32*1024)
#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u SIZE\u AE(96*1024)
#定义dg\u configQSPI\u CACHED\u RAM\u大小(56*1024)
#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u大小(72*1024)
#定义dg\配置QSPI\代码\大小(256*1024)
OS\u TASK\u CREATE(“PXP Reporter”,/*分配给任务的文本名称,例如
只调试;内核不使用。*/
pxp\u reporter\u task,/*实现任务的函数。*/
NULL,/*传递给任务的参数。*/
#如果(dg\u configDISABLE\u BACKGROUND\u FLASH\u OPS==1)
512,/*要分配给
任务的堆栈。*/
#其他
#如果ZSENS\u FUSION\u ALGO
1024*10,/*要分配给
任务的堆栈。*/
#其他
756,
#结束
#结束
/*************************************************************************************************\
*内存特定配置
*/
#定义dg\u configQSPI\u CACHED\u OPTIMAL\u RETRAM\u 0\u SIZE\u AE(64*1024)
#定义dg\u configQSPI\u CACHED\u RAM\u SIZE\u AE(32*1024)
#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u SIZE\u AE(96*1024)
#定义dg\u configQSPI\u CACHED\u RAM\u大小(56*1024)
#定义dg\u configQSPI\u CACHED\u RETRAM\u 0\u大小(72*1024)
#定义dg\配置QSPI\代码\大小(256*1024)
/*************************************************************************************************\
*FreeRTOS特定配置
*/
#define OS\u FREERTOS/*定义此项以使用FREERTOS*/
#如果(dg_configUSE_SOC)
#如果已定义(DEBUG\ U SOC)
#define configTOTAL\u HEAP\u SIZE 12300/*这是FreeRTOS的总堆大小*/
#其他
//#define configTOTAL_HEAP_SIZE 11200/*这是FreeRTOS的总堆大小*/
#define configTOTAL\u HEAP\u SIZE 20*1024/*这是FreeRTOS的总堆大小*/
#结束
#其他
#define configTOTAL\u HEAP\u SIZE 11000/*这是FreeRTOS的总堆大小*/
#结束
你好,徐国栋,
系统是否仍然耗尽堆?
谢谢,下午好