-
Notifications
You must be signed in to change notification settings - Fork 378
/
Copy pathimxrt1062_t41.ld
118 lines (98 loc) · 2.64 KB
/
imxrt1062_t41.ld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
MEMORY
{
ITCM (rwx): ORIGIN = 0x00000000, LENGTH = 512K
DTCM (rwx): ORIGIN = 0x20000000, LENGTH = 512K
RAM (rwx): ORIGIN = 0x20200000, LENGTH = 512K
FLASH (rwx): ORIGIN = 0x60000000, LENGTH = 7936K
ERAM (rwx): ORIGIN = 0x70000000, LENGTH = 16384K
}
ENTRY(ImageVectorTable)
SECTIONS
{
.text.headers : {
KEEP(*(.flashconfig))
FILL(0xFF)
. = ORIGIN(FLASH) + 0x1000;
KEEP(*(.ivt))
KEEP(*(.bootdata))
. = ALIGN(1024);
} > FLASH
.text.code : {
KEEP(*(.startup))
*(.flashmem*)
. = ALIGN(4);
KEEP(*(.init))
__preinit_array_start = .;
KEEP (*(.preinit_array))
__preinit_array_end = .;
__init_array_start = .;
KEEP (*(.init_array))
__init_array_end = .;
. = ALIGN(4);
} > FLASH
.text.progmem : {
*(.progmem*)
. = ALIGN(4);
} > FLASH
.text.itcm : {
. = . + 32; /* MPU to trap NULL pointer deref */
*(.fastrun)
*(.text*)
. = ALIGN(16);
} > ITCM AT> FLASH
.ARM.exidx : {
__exidx_start = .;
*(.ARM.exidx* .ARM.extab.text* .gnu.linkonce.armexidx.*)
__exidx_end = .;
} > ITCM AT> FLASH
.data : {
*(.endpoint_queue)
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.data*)))
KEEP(*(.vectorsram))
} > DTCM AT> FLASH
.bss ALIGN(4) : {
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*)))
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(COMMON)))
. = ALIGN(32);
. = . + 32; /* MPU to trap stack overflow */
} > DTCM
.bss.dma (NOLOAD) : {
*(.hab_log)
*(.dmabuffers)
. = ALIGN(32);
} > RAM
.bss.extram (NOLOAD) : {
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.externalram)))
. = ALIGN(32);
} > ERAM
.text.csf : {
FILL(0xFF)
. = ALIGN(1024);
KEEP(*(.csf))
__text_csf_end = .;
} > FLASH
_stext = ADDR(.text.itcm);
_etext = ADDR(.text.itcm) + SIZEOF(.text.itcm) + SIZEOF(.ARM.exidx);
_stextload = LOADADDR(.text.itcm);
_sdata = ADDR(.data);
_edata = ADDR(.data) + SIZEOF(.data);
_sdataload = LOADADDR(.data);
_sbss = ADDR(.bss);
_ebss = ADDR(.bss) + SIZEOF(.bss);
_heap_start = ADDR(.bss.dma) + SIZEOF(.bss.dma);
_heap_end = ORIGIN(RAM) + LENGTH(RAM);
_extram_start = ADDR(.bss.extram);
_extram_end = ADDR(.bss.extram) + SIZEOF(.bss.extram);
_itcm_block_count = (SIZEOF(.text.itcm) + SIZEOF(.ARM.exidx) + 0x7FFF) >> 15;
_flexram_bank_config = 0xAAAAAAAA | ((1 << (_itcm_block_count * 2)) - 1);
_estack = ORIGIN(DTCM) + ((16 - _itcm_block_count) << 15);
_flashimagelen = __text_csf_end - ORIGIN(FLASH);
_teensy_model_identifier = 0x25;
.debug_info 0 : { *(.debug_info) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
}