你好,
我尝试修改ble_app_perizalal示例。我想使用DSP代码的一部分进行串行通信。在文件user_buffer.c中有函数user_buffer_create(...)。
执行行后:
缓冲 - > data_ptr = ke_malloc((long)(缓冲 - > buffer_size)* sizeof(uint8_t),ke_mem_non_retention);
执行停止使用WRAP_PLATFORM_RESET。
我认为内存分配有问题。
你有解决方案吗?
此致
伯尼昂
设备:
嗨贝克尔,
内存分配没有任何问题,但它取决于您尝试分配多少内存,显然您正试图分配更多内存而不是可用的内存,并且您可以获得该断言。作为参考的DSP设置了不同大小的堆中,以便管理缓冲区的分配,检查da1458x_config_advanced.h文件并检查msg_heap_sz和non_ret_heap_sz的值,如果这些定义不存在sdk将应用a显然不足以实现默认值。
谢谢mt_dialog.
嗨mt_dialog,
我已经更改了Msg_heap_sz和non_ret_heap_sz的值,在dsps中使用相同的值。我也试图将malloc大小降低到值10。但错误是相同的。是否可以检查保留保留存储器的大小?如果某些定义是错误的,则有条件编译可能有问题。
谢谢
伯尼昂
嗨贝克尔,
ke_malloc,仅从保留存储器中保留存储器,为环境的堆,消息和数据库(eacp_env_area,heap_msg_area和heap_db_area)存储在保留存储器中,非保留堆存储在Sysram中,您可以检查您构建的应用程序的.map文件中的那些堆的大小。如果您尝试分配10个字节的大小,并且您最终会在失败分配断言中,那么也许在您的实现中存在内存泄漏。在ble_app_peripheral上测试了ke_malloc,分配了2048个字节(堆大小中的正确模式)并没有问题。
谢谢mt_dialog.
嗨mt_dialog,
你是如何在ble_app_peripheral上测试ke_malloc的?你把ke_malloc放在哪里?我认为呼叫ke_malloc有问题。如果我使用malloc保留空间,那么它就可以了。
谢谢伯恩
嗨贝克尔,
我扩展了堆才能适合分配的空间,并在user_app_adv_start()中调用ke_malloc。
谢谢mt_dialog.