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 }