cntrlr 0.1.0

Simple, async embedded framework
MEMORY
{
        FLASH (rx) : ORIGIN = 0x20010000, LENGTH = 4032k
        RAM  (rwx) : ORIGIN = 0x80000000, LENGTH = 16k
}

EXTERN(__cntrlr_redv_reset)

SECTIONS
{
        PROVIDE(__cntrlr_reset = __cntrlr_default_reset);
        PROVIDE(__cntrlr_stack_top = ORIGIN(RAM) + LENGTH(RAM));

        .text :
        {
                . = ORIGIN(FLASH);
                *(.__CNTRLR_START*)
                *(.text*)
                . = ALIGN(64);
                *(.__CNTRLR_EARLY_TRAP*)
                . = ALIGN(64);
                *(.__CNTRLR_TRAP);
        } > FLASH

        .rodata :
        {
                *(.rodata*)
                . = ALIGN(4);
        } > FLASH

        .data :
        {
                . = ALIGN(4);
                __cntrlr_data_start = .;
                *(.data*)
                . = ALIGN(4);
                __cntrlr_data_end = .;
        } > RAM AT>FLASH

        __cntrlr_data_flash_start = LOADADDR(.data);

        .bss :
        {
                . = ALIGN(4);
                __cntrlr_bss_start = .;
                *(.bss*)
                *(.sbss*)
                *(COMMON)
                . = ALIGN(4);
                __cntrlr_bss_end = .;
        } > RAM

        __cntrlr_heap_start = .;

        /DISCARD/ :
        {
                *(.eh_frame*);
                *(.got*);
        }
}