github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/targets/mimxrt1062-teensy40.ld (about)

     1  MEMORY
     2  {
     3    ITCM      (rwx): ORIGIN = 0x00000000, LENGTH = 0x00080000 /*  512 Kib */
     4    DTCM      (rwx): ORIGIN = 0x20000000, LENGTH = 0x00080000 /*  512 Kib */
     5    RAM       (rwx): ORIGIN = 0x20200000, LENGTH = 0x00080000 /*  512 Kib */
     6    FLASH      (rx): ORIGIN = 0x60000000, LENGTH = 0x001FFFF0 /* 1984 Kib */
     7  }
     8  
     9  ENTRY(Reset_Handler);
    10  
    11  _stack_size = 4K;
    12  
    13  SECTIONS
    14  {
    15    .text : ALIGN(8) {
    16  
    17      FILL(0xFFFFFFFF);
    18  
    19      /* place flash config at beginning of flash device */
    20      KEEP(*(.flash_config));
    21  
    22      /* IVT must be located at +4 Kbyte offset from base address of flash. */
    23      . = ORIGIN(FLASH) + 0x1000;
    24      KEEP(*(.ivt));
    25  
    26      . = ORIGIN(FLASH) + 0x1020;
    27      KEEP(*(.boot_data));
    28  
    29      . = ORIGIN(FLASH) + 0x2000;
    30  
    31      _svectors = ABSOLUTE(.);
    32      KEEP(*(.isr_vector));
    33      . = ALIGN(8);
    34  
    35      *(.text.Reset_Handler);
    36      . = ALIGN(8);
    37  
    38      _stext = .;
    39      *(.text*);
    40      *(.rodata* .constdata*);
    41      . = ALIGN(8);
    42      _etext = .;
    43  
    44    } > FLASH
    45  
    46    .tinygo_stacksizes : ALIGN(8) {
    47  
    48      *(.tinygo_stacksizes);
    49      . = ALIGN(8);
    50  
    51    } > FLASH
    52  
    53    .text.padding (NOLOAD) : {
    54  
    55      . = ALIGN(32768);
    56  
    57    } > ITCM
    58  
    59    .stack (NOLOAD) : {
    60  
    61      . = ALIGN(8);
    62      . += _stack_size;
    63      _stack_top = .;
    64  
    65    } > DTCM
    66  
    67    .data : ALIGN(8) {
    68  
    69      FILL(0xFFFFFFFF);
    70  
    71      _sdata = .;
    72      *(.data*);
    73      . = ALIGN(8);
    74      _edata = .;
    75  
    76    } > DTCM AT > FLASH
    77  
    78    .bss : ALIGN(8) {
    79  
    80      _sbss = .;
    81      *(.bss*);
    82      *(COMMON);
    83      . = ALIGN(8);
    84      _ebss = .;
    85  
    86    } > DTCM AT > DTCM
    87  
    88    /DISCARD/ : {
    89  
    90      *(.ARM.exidx*); /* causes spurious 'undefined reference' errors */
    91  
    92    }
    93  
    94    _sidata = LOADADDR(.data);
    95  
    96    _heap_start = ORIGIN(RAM);
    97    _heap_end = ORIGIN(RAM) + LENGTH(RAM);
    98  
    99    _globals_start = _sdata;
   100    _globals_end = _ebss;
   101  
   102    _image_size = SIZEOF(.text) + SIZEOF(.tinygo_stacksizes) + SIZEOF(.data);
   103  
   104    /* TODO: link .text to ITCM */
   105    _itcm_blocks = (0 + 0x7FFF) >> 15;
   106    _flexram_cfg = 0xAAAAAAAA | ((1 << (_itcm_blocks * 2)) - 1);
   107  }