本文对早期写的Zephyr内存管理的文章和最近增补的文章说明
在2020年的时候写了一系列Zephyr内存管理的文章,随着Zephyr的不断进化,一些内存管理方法被废弃和移除,并新加了另外一些内存管理方法,结合最近增补的一些内容,说明公众号文章的失效:
已废弃移除
Pool已从zephyr内移除,完全用Heap取代
Zephyr内存管理之Pool
维持
API/管理算法变化不大
Zephyr内存管理之Heap
Zephyr内存管理之slab
新增
Zephyr内存管理之共享Heap
Zephyr内存管理之Block
Demand Paging 目前用到的芯片不涉及MMU,未对该部分进行分析
对内存分配的影响
ephyr/kernel/mempool.c
内k_malloc/k_free
已经切换成Heap管理
k_malloc调用关系:k_malloc->k_aligned_alloc->z_heap_aligned_alloc->k_heap_aligned_alloc
k_free调用关系:k_free->k_heap_free
使用的heap为1
2K_HEAP_DEFINE(_system_heap, CONFIG_HEAP_MEM_POOL_SIZE);
#define _SYSTEM_HEAP (&_system_heap)
参考
https://docs.zephyrproject.org/3.4.0/kernel/memory_management/index.html#