嗨,对话,
集成算法库后分配内存失败
我们的算法只需要总ram 9KB(数据1.5k bss 7.5k)。
设置以下两个参数后,问题仍然存在:Malloc fail。
我附上了我的分析,请帮我检查更多。
谢谢
徐国栋你好,,
VAApplicationAllocFailedHook()是FreeRTOS的一个钩子。当没有足够的连续堆可用于尝试的内存分配时,此提示会通知应用程序。我建议将FreeRTOS堆的大小(custom_config_XXXX.h文件中的configTOTAL_heap_size)增加到代码编译的最大值。
谢谢,下午好
FreeRTOS堆的最大大小(configTOTAL\u heap\u size)是多少?
任务堆栈的最大大小是多少?
可以使用任意大的堆大小。如果系统内存不足,链接器将发出错误。请参阅https://freertos.org/有关FreeRTOS的更多信息。
将任务堆栈大小设置为>1024*10,错误:将发生分配内存失败。
你能附上一张截图吗?您使用的配置总堆大小是多少?
如下所示,如果任务堆栈>10*1024,则内存分配失败。
/*************************************************************************************************\*内存特定配置*/#定义dg_配置QSPI_缓存_优化_恢复_0_大小_AE(64*1024)#定义dg_配置QSPI_缓存_RAM_大小_AE(32*1024)#定义dg_configQSPI_CACHED_RETRAM_0_SIZE_AE(96*1024)
#定义dg_配置QSPI_缓存_RAM_大小(56*1024)#定义dg_配置QSPI_缓存_重新传输0_大小(72*1024)#定义dg_配置QSPI_代码_大小(256*1024)
OS_TASK_CREATE(“PXP Reporter”/*分配给任务的文本名称,例如只调试;内核不使用*/pxp_reporter_task,/*实现该任务的函数*/NULL,/*传递给任务的参数*/#如果(dg_配置禁用_后台_闪存_操作==1)512,/*要分配给任务的堆栈*/#否则#如果ZSENS_FUSION_ALGO1024*10,/*要分配给任务的堆栈*/#否则756,#恩迪夫#恩迪夫
#定义dg_配置QSPI_缓存_RAM_大小(56*1024)#定义dg_配置QSPI_缓存_重新传输0_大小(72*1024)#定义dg_配置QSPI_代码_大小(256*1024)/*************************************************************************************************\*FreeRTOS特定配置*/#定义OS_FREERTOS/*定义此选项以使用FREERTOS*/#如果(dg_配置使用_SOC)#如果已定义(调试_SOC)#定义configTOTAL_HEAP_SIZE 12300/*这是FreeRTOS的总堆大小*/#否则//#define configTOTAL_HEAP_SIZE 11200/*这是FreeRTOS的总堆大小*/#定义configTOTAL_HEAP_SIZE 20*1024/*这是FreeRTOS的总堆大小*/#恩迪夫#否则#定义configTOTAL_HEAP_SIZE 11000/*这是FreeRTOS的总堆大小*/#恩迪夫
系统是否仍然耗尽堆?
徐国栋你好,,
VAApplicationAllocFailedHook()是FreeRTOS的一个钩子。当没有足够的连续堆可用于尝试的内存分配时,此提示会通知应用程序。我建议将FreeRTOS堆的大小(custom_config_XXXX.h文件中的configTOTAL_heap_size)增加到代码编译的最大值。
谢谢,下午好
嗨,对话,
FreeRTOS堆的最大大小(configTOTAL\u heap\u size)是多少?
任务堆栈的最大大小是多少?
谢谢
徐国栋你好,,
可以使用任意大的堆大小。如果系统内存不足,链接器将发出错误。请参阅https://freertos.org/有关FreeRTOS的更多信息。
谢谢,下午好
嗨,对话,
将任务堆栈大小设置为>1024*10,错误:将发生分配内存失败。
谢谢
徐国栋你好,,
你能附上一张截图吗?您使用的配置总堆大小是多少?
谢谢,下午好
如下所示,如果任务堆栈>10*1024,则内存分配失败。
/*************************************************************************************************\
*内存特定配置
*/
#定义dg_配置QSPI_缓存_优化_恢复_0_大小_AE(64*1024)
#定义dg_配置QSPI_缓存_RAM_大小_AE(32*1024)
#定义dg_configQSPI_CACHED_RETRAM_0_SIZE_AE(96*1024)
#定义dg_配置QSPI_缓存_RAM_大小(56*1024)
#定义dg_配置QSPI_缓存_重新传输0_大小(72*1024)
#定义dg_配置QSPI_代码_大小(256*1024)
OS_TASK_CREATE(“PXP Reporter”/*分配给任务的文本名称,例如
只调试;内核不使用*/
pxp_reporter_task,/*实现该任务的函数*/
NULL,/*传递给任务的参数*/
#如果(dg_配置禁用_后台_闪存_操作==1)
512,/*要分配给
任务的堆栈*/
#否则
#如果ZSENS_FUSION_ALGO
1024*10,/*要分配给
任务的堆栈*/
#否则
756,
#恩迪夫
#恩迪夫
/*************************************************************************************************\
*内存特定配置
*/
#定义dg_配置QSPI_缓存_优化_恢复_0_大小_AE(64*1024)
#定义dg_配置QSPI_缓存_RAM_大小_AE(32*1024)
#定义dg_configQSPI_CACHED_RETRAM_0_SIZE_AE(96*1024)
#定义dg_配置QSPI_缓存_RAM_大小(56*1024)
#定义dg_配置QSPI_缓存_重新传输0_大小(72*1024)
#定义dg_配置QSPI_代码_大小(256*1024)
/*************************************************************************************************\
*FreeRTOS特定配置
*/
#定义OS_FREERTOS/*定义此选项以使用FREERTOS*/
#如果(dg_配置使用_SOC)
#如果已定义(调试_SOC)
#定义configTOTAL_HEAP_SIZE 12300/*这是FreeRTOS的总堆大小*/
#否则
//#define configTOTAL_HEAP_SIZE 11200/*这是FreeRTOS的总堆大小*/
#定义configTOTAL_HEAP_SIZE 20*1024/*这是FreeRTOS的总堆大小*/
#恩迪夫
#否则
#定义configTOTAL_HEAP_SIZE 11000/*这是FreeRTOS的总堆大小*/
#恩迪夫
徐国栋你好,,
系统是否仍然耗尽堆?
谢谢,下午好