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

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
9个员额/ 0个新员额
最后发表
xuguodong
离线
最后看到:4个月3天前
加入:2020-06-04 34
整合算法库后分配内存失败。处理步骤

嗨,对话框中,

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

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

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

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

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

谢谢。

设备:
PM_Dialog
离线
最后看到:6天19小时前
工作人员
加入:2018-02-08 11:03
嗨xuguodong,

嗨xuguodong,

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

谢谢,PM_Dialog

xuguodong
离线
最后看到:4个月3天前
加入:2020-06-04 34
嗨,对话框中,

嗨,对话框中,

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

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

谢谢。

PM_Dialog
离线
最后看到:6天19小时前
工作人员
加入:2018-02-08 11:03
嗨xuguodong,

嗨xuguodong,

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

谢谢,PM_Dialog

xuguodong
离线
最后看到:4个月3天前
加入:2020-06-04 34
嗨,对话框中,

嗨,对话框中,

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

谢谢。

PM_Dialog
离线
最后看到:6天19小时前
工作人员
加入:2018-02-08 11:03
嗨xuguodong,

嗨xuguodong,

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

谢谢,PM_Dialog

xuguodong
离线
最后看到:4个月3天前
加入:2020-06-04 34
如下所示,如果任务栈> 10

如下图所示,如果任务栈> 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

xuguodong
离线
最后看到:4个月3天前
加入:2020-06-04 34
/****************************

/*************************************************************************************************\
*内存配置
*/
#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

PM_Dialog
离线
最后看到:6天19小时前
工作人员
加入:2018-02-08 11:03
嗨xuguodong,

嗨xuguodong,

系统是否仍然用完堆?

谢谢,PM_Dialog