wrap_platform_reset ke_malloc后

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
beckel
离线
最后看到:2年8个月前
加入:2016-05-24 08:58
wrap_platform_reset ke_malloc后

你好,

我尝试修改ble_app_peripheral示例。我想用一部分数字信号处理系统代码进行串行通信。在文件user_buffer.c中有函数user_buffer_create(…)。
在执行以下行之后:
buffer->data_ptr = ke_malloc((long)(buffer->buffer_size)*sizeof(uint8_t), KE_MEM_NON_RETENTION);
执行在wrap_platform_reset时停止。
我认为内存分配有问题。
你有解决方案吗?

致以最亲切的问候
贝恩德•

设备:
MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨beckel,

嗨beckel,

内存分配没有问题,但它取决于你试图分配多少内存,显然你试图分配比可用内存更多的内存,然后你得到那个断言。需求方,你作为一个参考设置不同大小的堆为了管理分配的缓冲区,检查da1458x_config_advanced.h文件和检查的值MSG_HEAP_SZ NON_RET_HEAP_SZ,如果这些定义不存在SDK将默认值为您的实现显然是不够的。

由于MT_dialog

beckel
离线
最后看到:2年8个月前
加入:2016-05-24 08:58
嗨MT_dialog,

嗨MT_dialog,

我已经将MSG_HEAP_SZ和NON_RET_HEAP_SZ的值更改为与DSPS中使用的相同的值。我还尝试将malloc大小减小到10。但错误是一样的。是否可以查看保留的RETENTION MEMORY的大小?如果某些定义是错误的,那么条件编译可能有问题。

谢谢
贝恩德•

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨beckel,

嗨beckel,

ke_malloc不仅仅从RETENTION memory中保留内存,用于环境、消息和数据库的堆(heap_env_area、heap_msg_area和heap_db_area)存储在保留内存中,非保留堆存储在sysram中,您可以在已构建的应用程序的.map文件中检查这些堆的大小。如果您试图分配大小为10字节的内存,并且最终出现分配断言失败,那么可能在您的实现上存在内存泄漏。在ble_app_peripheral上测试ke_malloc,分配2048字节(在堆大小中使用适当的mods),没有问题。

由于MT_dialog

beckel
离线
最后看到:2年8个月前
加入:2016-05-24 08:58
嗨MT_dialog,

嗨MT_dialog,

你如何在ble_app_peripheral上测试ke_malloc ?你把ke_malloc放哪了?我认为调用ke_malloc有问题。如果我使用malloc保留空间,那么它就可以工作。

由于贝恩德•

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨beckel,

嗨beckel,

为了适应分配的空间,我扩展了堆,并在user_app_adv_start()中调用了ke_malloc。

由于MT_dialog