mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-18 11:33:59 +00:00
targets/esp32: add .rxring and .wifibss sections to DRAM1
Place espradio's RX ring buffer and WiFi-only BSS (ISR tables, timer slots, ISR ring) in SRAM1 pool 7/6 ahead of the arena. Frees ~14 KB of SRAM2 for the Go GC heap. The arena assertion still guarantees ≥32 KB remains for WiFi DMA buffers. Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
+18
-3
@@ -101,9 +101,24 @@ SECTIONS
|
|||||||
_wifi_bss_end = ABSOLUTE(.);
|
_wifi_bss_end = ABSOLUTE(.);
|
||||||
} >DRAM
|
} >DRAM
|
||||||
|
|
||||||
/* WiFi blob arena (DMA buffers): owns all of DRAM1 (SRAM1 pool 7/6,
|
/* RX ring buffer: placed in DRAM1 (ahead of the arena) to free ~9.6 KB
|
||||||
* 0x3FFF0000-0x40000000, 64K) — the only SRAM1 region safe from ROM/MAC
|
* of SRAM2 for the Go GC heap. espradio's netif.c tags the RX ring
|
||||||
* writes. Outside the Go GC heap; DMA-capable; isolated from GC objects. */
|
* with __attribute__((section(".rxring"))) on ESP32. */
|
||||||
|
.rxring (NOLOAD) : ALIGN(16)
|
||||||
|
{
|
||||||
|
*(.rxring .rxring.*)
|
||||||
|
} >DRAM1
|
||||||
|
|
||||||
|
/* WiFi-only BSS: ISR tables, timer slots, and ISR ring buffers moved
|
||||||
|
* from SRAM2 to DRAM1 to free ~2.8 KB for the Go GC heap. */
|
||||||
|
.wifibss (NOLOAD) : ALIGN(4)
|
||||||
|
{
|
||||||
|
*(.wifibss .wifibss.*)
|
||||||
|
} >DRAM1
|
||||||
|
|
||||||
|
/* WiFi blob arena (DMA buffers): owns the remainder of DRAM1 (SRAM1
|
||||||
|
* pool 7/6) after the RX ring. Outside the Go GC heap; DMA-capable;
|
||||||
|
* isolated from GC objects. */
|
||||||
.arena (NOLOAD) : ALIGN(16)
|
.arena (NOLOAD) : ALIGN(16)
|
||||||
{
|
{
|
||||||
_arena_start = ABSOLUTE(.);
|
_arena_start = ABSOLUTE(.);
|
||||||
|
|||||||
Reference in New Issue
Block a user