跳过主要内容

整合算法库后分配内存失败。处理步骤

DA1468x

11个月前

发布的xuguodong0点 8回答说
0的问题

嗨,对话框中,

整合算法库后分配内存失败。处理步骤

我们的算法只需要总ram 9kBytes(数据1.5k bss 7.5k)。

设置以下两个参数后,问题仍然存在:Malloc失败。

  1. 设置configTOTAL_HEAP_SIZE从11200到25 * 1024。
  2. OS_TASK_CREATE时,将stack值从756设置为1024*22。

我附上了我的分析,请帮助我检查更多。

谢谢。

附件 大小
编译失败的截图 699.47 KB

11个月前

PM_Dialog

嗨xuguodong,

vApplicationMallocFailedHook()是一个到FreeRTOS的钩子。当没有足够的连续堆可用于尝试分配的内存时,此触发通知应用程序。我建议增加FreeRTOS堆的大小(在custom_config_txt .h文件中的configTOTAL_HEAP_SIZE)到代码编译的最大数量。

谢谢,PM_Dialog

11个月前

xuguodong 0点

嗨,对话框中,

什么是FreeRTOS堆的最大大小(configTOTAL_HEAP_SIZE)?

任务栈的最大大小是多少?

谢谢。

11个月前

PM_Dialog

嗨xuguodong,

您可以使用任意大小的堆。如果系统耗尽RAM,链接器将发出一个错误。请参考https://freertos.org/查阅更多有关FreeRTOS的信息。

谢谢,PM_Dialog

11个月前

xuguodong 0点

嗨,对话框中,

设置任务栈大小为>1024*10,错误:将发生分配内存失败。

谢谢。

11个月前

PM_Dialog

嗨xuguodong,

你能附上一张截图吗?您正在使用的configTOTAL_HEAP_SIZE是什么?

谢谢,PM_Dialog

11个月前

xuguodong 0点

如下图所示,如果任务栈> 10*1024,则内存分配失败。

/*************************************************************************************************\
*内存配置
*/
#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE_AE (64 * 1024)
#define dg_configQSPI_CACHED_RAM_SIZE_AE (32 * 1024)
#define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE (96 * 1024) #define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE

#define dg_configQSPI_CACHED_RAM_SIZE (56 * 1024)
#define dg_configQSPI_CACHED_RETRAM_0_SIZE (72 * 1024)
#define dg_configQSPI_CODE_SIZE (256 * 1024)

OS_TASK_CREATE("PXP Reporter", /*分配给任务的文本名称,for
调试;不被内核使用。*/
pxp_reporter_task, /*实现任务的函数。*/
NULL, /*传递给任务的参数。*/
#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 1) / /输出
512, /*分配给对象的字节数
任务堆栈。*/
其他#
#如果ZSENS_FUSION_ALGO
1024*10, /*分配给对象的字节数
任务堆栈。*/
其他#
756年,
# endif
# endif

11个月前

xuguodong 0点

/*************************************************************************************************\
*内存配置
*/
#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE_AE (64 * 1024)
#define dg_configQSPI_CACHED_RAM_SIZE_AE (32 * 1024)
#define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE (96 * 1024) #define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE

#define dg_configQSPI_CACHED_RAM_SIZE (56 * 1024)
#define dg_configQSPI_CACHED_RETRAM_0_SIZE (72 * 1024)
#define dg_configQSPI_CODE_SIZE (256 * 1024)
/*************************************************************************************************\
* FreeRTOS的配置
*/
#define OS_FREERTOS /*使用FreeRTOS */
#如果(dg_configUSE_SOC)
#如果定义(DEBUG_SOC)
#define configTOTAL_HEAP_SIZE 12300 /*这是FreeRTOS总堆大小*/
其他#
//这是FreeRTOS的堆大小*/
#define configTOTAL_HEAP_SIZE 20*1024 /*这是FreeRTOS总堆大小*/
# endif
其他#
#define configTOTAL_HEAP_SIZE 11000 /*这是FreeRTOS的总堆大小*/
# endif

10个月前

PM_Dialog

嗨xuguodong,

系统是否仍然用完堆?

谢谢,PM_Dialog