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
|
/*
* Copyright (c) 2018, Shawn D'silva <shawn@shawndsilva.com>
* All rights reserved.
*
* This file is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This file is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* File: TM4C123GH6PHM.ld
* Author: Shawn D'silva <https://www.shawndsilva.com>.
* Version: 1.0.0.
* Description: linker file for the TM4C Launchpad
*/
ENTRY(Reset_Handler)
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K /* FLASH size 256KB */
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 32K/* RAM size 32KB */
}
_Min_Heap_Size = 0x3000;
_Min_Stack_Size = 0x3000;
SECTIONS
{
/*
* initial stack pointer pointing to top of stack,starts from higher addresses
* i.e ORIGIN(RAM) + LENGTH(RAM)-1 in this case 0x20007FFF to lower addesses i.e
* those lesser than 0x20007FFF to 0x2000000,which is the origina address of RAM,
* until it comes in contact with .bss or .data in which case a buffer overflow occurs
*/
PROVIDE( _stack_ptr = ORIGIN(RAM) + _Min_Stack_Size);
._user_heap_stack :
{
. = ALIGN(8);
. = . + _Min_Stack_Size;
. = . + _Min_Heap_Size;
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = ALIGN(8);
} > RAM
/* constants and other code stored in FLASH */
.text :
{
_text = .; /* beginning of .text segment,also called code memory */
KEEP(*(.vector_table)) /* vector table defined in startup.c to be included */
*(.text*) /* other code */
*(.rodata*) /* constants go here */
_etext = .; /* end of .text segment */
} > FLASH
/* data, initialized variables, to be copied to RAM upon <RESET> by startup.c */
.data :
{
_data = .; /* beginning of .data segment */
*(.data*) /* data goes here */
_edata = .; /* end of .data segment */
} > RAM AT >FLASH /* .data segment starts directly after the .text section in FLASH */
/* uninitialized data which is initialized to 0 upon <RESET> by startup.c */
.bss :
{
_bss = .; /* beginning of .bss segment */
*(.bss*) /* .bss content goes here */
*(COMMON)
_ebss = .; /* end of .bss segment */
} > RAM
}
|