Updated 7 November 2026

Memory map

The Core8Bit console uses an STM32H743 microcontroller (Cortex-M7, 480 MHz) with 32 MB of external SDRAM and 16 MB of QSPI flash. This page lists every memory region, which parts a native plugin may use and how each region is cached. For plugin usage rules see Memory for plugins.

Contents

Physical regions

Region Base Size Used for
ITCM 0x00000000 64 KB System code; 0x800–0xFFFF plugin code
Internal flash 0x08000000 2 MB System firmware
DTCM 0x20000000 128 KB System data and stack; 0x20016000–0x2001FFFF plugin data
AXI SRAM (D1) 0x24000000 512 KB System data, depth strip, framebuffer
SRAM1–3 (D2) 0x30000000 288 KB DMA and audio buffers, plugin FastBuffer
SRAM4 (D3) 0x38000000 64 KB Configuration that survives a reset, synth sample data
QSPI NOR flash 0x90000000 16 MB System sound bank (memory-mapped, read-only)
SDRAM 0xC0000000 32 MB Display buffers, asset pool, plugin slot, Lua heap

ITCM

0x00000000–0x0000FFFF, not cached.

Range Size Content
0x00000000–0x000007FF 2 KB System (reserved)
0x00000800–0x0000BFFF 46 KB Plugin resident code (62 KB, 0x800–0xFFFF, when no overlay is used)
0x0000C000–0x0000FFFF 16 KB Plugin overlay window, written only by load_itcm_overlay

DTCM

0x20000000–0x2001FFFF, not cached. DMA cannot access DTCM.

Range Size Content
0x20000000–0x20015FFF 88 KB System data and main stack (the stack grows down from 0x20016000)
0x20016000–0x2001FFFF 40 KB Plugin .dtcm_hot / .dtcm_bss

AXI SRAM

0x24000000–0x2407FFFF.

Range Size Content
0x24000000–0x2402C4BF 177 KB System data
0x2402C4C0–0x240378BF 46 080 B Depth strip (get_depth_strip, 480 × 48 × 16 bit)
0x240378C0–0x2403FFFF 34 KB System (reserved)
0x24040000–0x2407FBFF 261 120 B Framebuffer: 480 × 272 RGB565 (get_framebuffer)
0x2407FC00–0x2407FFFF 1 KB Unused

D2 SRAM

0x30000000–0x30047FFF.

Range Size Content
0x30000000–0x3001BFFF 112 KB System DMA, audio and Lua buffers
0x3001C000–0x3002773F 46 KB System buffers
0x30027740–0x3004773F 128 KB Plugin FastBuffer (get_fast_buffer). 0x3003FF40–0x3004773F is the 30 KB code tail in DATA_PLUS_CODE mode.
0x30047740–0x30047FFF 2 240 B Unused

D3 SRAM

0x38000000–0x3800FFFF, reserved for the system: boot and crash information that survives a reset (0x38000000–0x38003FFF) and synth sample data (0x38004000–0x3800FFFF).

SDRAM

0xC0000000–0xC1FFFFFF.

Range Size Content
0xC0000000–0xC007FFFF 512 KB Two display buffers; the framebuffer is copied into one of them at each present
0xC0080000–0xC00923FF 73 KB System
0xC0092400–0xC14923FF 20 MB Asset pool: images, sounds and other assets, and plugin alloc() blocks
0xC1492400–0xC161FFFF 1.5 MB System buffers (audio, files, network, image decoding)
0xC1620000–0xC1B9FFFF 5 632 KB Plugin slot: image, .bss and plugin heap
0xC1BA0000–0xC1BFFFFF 384 KB System buffers (network, SD-card cache)
0xC1C00000–0xC1FFFFFF 4 MB Lua heap (also C malloc and C++ new of the system)

QSPI flash

0x90000000–0x90FFFFFF, memory-mapped and read-only.

Offset Content
0x000000–0x00FFFF Reserved
0x010000–0xFFFFFF System sound bank, used by c8b.midi.initFromQSPI

Cache attributes

Cache lines are 32 bytes. Write-back regions need cache maintenance when DMA is involved: write back before a DMA master reads CPU-written data, invalidate before the CPU reads DMA-written data.

Range Attributes Executable
ITCM 0x00000000–0x0000FFFF Not cached (TCM) Yes
DTCM 0x20000000–0x2001FFFF Non-cacheable No
AXI SRAM 0x24000000–0x2407FFFF Write-back, no write-allocate No (except a system area)
D2 0x30000000–0x3001BFFF System only (mixed attributes) —
D2 0x3001C000–0x30047FFF (includes the FastBuffer) Write-through Yes
D3 0x38000000–0x3800FFFF Non-cacheable / write-back No
QSPI 0x90000000–0x90FFFFFF Write-through, read-only No
SDRAM 0xC0000000–0xC1BFFFFF (includes the plugin slot) Write-back, no write-allocate Yes
SDRAM 0xC1C00000–0xC1FFFFFF (Lua heap) Write-back, write-allocate No

Ownership summary

Owner Regions
System ITCM 0x0–0x7FF, DTCM 0x20000000–0x20015FFF, AXI SRAM except the depth strip and framebuffer, D2 below 0x30027740, D3, SDRAM outside the plugin slot and the plugin's alloc blocks
Lua Lua heap 0xC1C00000–0xC1FFFFFF
Plugin (while loaded) Plugin slot 0xC1620000–0xC1B9FFFF, ITCM 0x800–0xFFFF, DTCM 0x20016000–0x2001FFFF, FastBuffer (shared with system image drawing), depth strip, alloc blocks
Shared Framebuffer: the plugin draws, the system adds its overlays and presents