在集成算法库之后无法分配内存。

了解更多常见问题解答教程

9个帖子/ 0新
最后一篇
徐福东
离线
最后一次露面:1个月3周前
加入:2020-06-04 13:34
在集成算法库之后无法分配内存。

嗨对话框,

在集成算法库之后无法分配内存。

我们的算法仅需要总RAM 9KBytes(数据1.5K BSS 7.5K)。

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

  1. 设定configtotal_heap_size从11200到25 * 1024。
  2. 当OS_TASK_CREATE时,将堆栈设置为756到1024 * 22。

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

谢谢。

设备:
PM_DIALOG.
离线
最后一次露面:30分55秒前
员工
加入:2018-02-08 11:03
嗨Xuguodong,

嗨Xuguodong,

VapplicationMallocfailedhook()是FreeRos的挂钩。当没有足够的连续堆可用于尝试的内存分配时,此Hoot通知应用程序。我建议将FreeRTOS堆(CommentOTOL_HEAP_SIZE中的CONCURE_CONFIG_XXXXXXXXXXXX.H文件的大小提高到代码编译的最大号码。

谢谢,PM_DIALOG.

徐福东
离线
最后一次露面:1个月3周前
加入:2020-06-04 13:34
嗨对话框,

嗨对话框,

freertos堆的最大大小是多少(configtotal_heap_size)?

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

谢谢。

PM_DIALOG.
离线
最后一次露面:30分55秒前
员工
加入:2018-02-08 11:03
嗨Xuguodong,

嗨Xuguodong,

您可以使用您想要的堆大小。如果系统运行RAM,则链接器将发出错误。请参阅https://freertos.org/有关Freertos的更多信息。

谢谢,PM_DIALOG.

徐福东
离线
最后一次露面:1个月3周前
加入:2020-06-04 13:34
嗨对话框,

嗨对话框,

将任务堆栈大小设置为> 1024 * 10,错误:未能分配内存。

谢谢。

PM_DIALOG.
离线
最后一次露面:30分55秒前
员工
加入:2018-02-08 11:03
嗨Xuguodong,

嗨Xuguodong,

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

谢谢,PM_DIALOG.

徐福东
离线
最后一次露面:1个月3周前
加入:2020-06-04 13: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_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”,/ *分配给任务的文本名称,
只调试;内核不使用。* /
pxp_reporter_task,/ *实现任务的函数。* /
null,/ *传递给任务的参数。* /
#if(dg_configdisable_background_flash_ops == 1)
512,/ *分配给的字节数
堆栈的任务。* /
#其他
#if zsens_fusion_algo.
1024 * 10,/ *分配给的字节数
堆栈的任务。* /
#其他
756,
#万一
#万一

徐福东
离线
最后一次露面:1个月3周前
加入:2020-06-04 13: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_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 * /
#if(dg_configuse_soc)
#f定义(debug_soc)
#define configtotal_heap_size 12300 / *这是freertos total堆大小* /
#其他
// #define configtotal_heap_size 11200 / *这是freertos total堆大小* /
#define configtotal_heap_size 20 * 1024 / *这是freertos total堆大小* /
#万一
#其他
#define configtotal_heap_size 11000 / *这是freertos total堆大小* /
#万一

PM_DIALOG.
离线
最后一次露面:30分55秒前
员工
加入:2018-02-08 11:03
嗨Xuguodong,

嗨Xuguodong,

系统仍然没有堆吗?

谢谢,PM_DIALOG.