Heap API

概要

Heap API は、プラットフォーム依存の RAM 特性を考慮した動的メモリ確保を行うための API です。

この API は C リンケージで提供されるため、C/C++ のどちらからでも利用できます。

XmcHeapCap

RAM の特性を指定するビットフラグ列挙型です。

XmcHeapCap の値

説明

XMC_HEAP_CAP_NONE

特別な特性を要求しない。

XMC_HEAP_CAP_DMA

DMA 可能な RAM を要求する。

XMC_HEAP_CAP_SPIRAM

SPIRAM を要求する。

複数の特性を要求する場合は OR (|) で組み合わせます。 割り当て可否と選択されるメモリ領域はプラットフォーム実装に依存します。

グローバル関数

xmcHasSpiRam

bool xmcHasSpiRam();

システムに SPIRAM (PSRAM) が搭載されているかどうかを返します。

SPIRAM が利用可能であれば true を、利用不可であれば false を返します。

xmcMalloc

void *xmcMalloc(size_t size, XmcHeapCap caps);

指定サイズのメモリ領域を確保します。

size には確保バイト数、caps には要求する RAM 特性を指定します。 確保に成功した場合は確保領域へのポインタを返し、失敗した場合は NULL を返します。

ESP32S3 版では、第二引数に XMC_HEAP_CAP_SPIRAM を指定すると PSRAM に確保されます。 これは SRAM の不足を回避するのに有効です。

RP2350 版では第二引数は無視され、常に SRAM に確保されます。

xmcFree

void xmcFree(void *ptr);

xmcMalloc() で確保したメモリ領域を解放します。

ptr には解放対象のポインタを指定します。