【发布时间】:2018-08-08 07:15:22
【问题描述】:
我正在使用 CMSIS FreeRtos 和 heap4 作为内存管理方案的嵌入式系统。
现在我正在尝试将 mbedTls 移植到我的系统中,我必须提供动态分配功能,例如 alloc 和 free。
mbedTLS 需要两个函数来分配和释放内存。 这些是 mbedTLS 所需的函数原型:
void * (*mbedtls_calloc)( size_t, size_t ) = MBEDTLS_PLATFORM_STD_CALLOC;
void (*mbedtls_free)( void * ) = MBEDTLS_PLATFORM_STD_FREE;
int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
void (*free_func)( void * ) )
正确使用 FreeRTOS 提供的堆的最佳方式是什么? 以内存池为例。
Heap4 不提供 calloc 和 free 等功能。那么,我应该包装哪个函数以允许 mbedTls 分配内存?
提前感谢您的帮助。
费德里科
【问题讨论】:
-
"功能类似于..."!? 准确指定需要哪些功能,或提供指向您所指的 mbedTLS 产品文档的链接。
-
@Clifford 我需要在 FreeRTOS 中高效分配和释放内存的函数。不知道使用内存池是不是最好的选择。
-
不是我要问的。 mbedTLS 需要什么 - 从语义上讲。您提到了分配、calloc 和 free,但说“类似的功能”暗示还有其他功能。
-
@Clifford 我的问题很简单:如何在具有 heap4 ad 内存管理的 FreeRTOS 中分配动态内存?就是这样
-
尊重,这不是你问的。您的编辑回答了我的问题,mbedTLS 使用回调。 freeRTOS 中的内存分配功能已记录在案,并且适用于所有方案。您可能必须创建包装器来支持某些语义,例如 calloc 初始化。我很难看出这个问题有什么不明显的地方。
标签: embedded dynamic-memory-allocation freertos mbedtls