Heap API
概要
Heap API は、プラットフォーム依存の RAM 特性を考慮した動的メモリ確保を行うための API です。
この API は C リンケージで提供されるため、C/C++ のどちらからでも利用できます。
型
XmcHeapCap
RAM の特性を指定するビットフラグ列挙型です。
値 |
説明 |
|---|---|
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 には解放対象のポインタを指定します。