MEMORY
{
    SPRAM (xrw) : ORIGIN = 0x00020000, LENGTH = 0x10000
    BRAM  (xrw) : ORIGIN = 0x00000010, LENGTH = 0x03f0
}
ENTRY(_start)
SECTIONS {
    .text :
    {
        . = ALIGN(4);
        *(.text.start)
        *(.text)
        *(.text*)
        *(.rodata)
        *(.rodata*)
        *(.srodata)
        *(.srodata*)
        . = ALIGN(4);
        _etext = .;
        _sidata = _etext;
    } >SPRAM
    .data : AT ( _sidata )
    {
        . = ALIGN(4);
        _sdata = .;
        _ram_start = .;
        . = ALIGN(4);
        *(.data)
        *(.data*)
        *(.sdata)
        *(.sdata*)
        . = ALIGN(4);
        _edata = .;
    } >SPRAM
    .bss :
    {
        . = ALIGN(4);
        _sbss = .;
        *(.bss)
        *(.bss*)
        *(.sbss)
        *(.sbss*)
        *(COMMON)
        . = ALIGN(4);
        _ebss = .;
    } >SPRAM
    .heap :
    {
        . = ALIGN(4);
        _heap_start = .;
    } >SPRAM
    .stack (NOLOAD):
    {
        . = ORIGIN(SPRAM) + LENGTH(SPRAM) - 8192;
        _sstack = .;
        . = . + 8192;
        . = ALIGN(4);
        _estack = .;
    } > SPRAM
}
