File size: 1,652 Bytes
829b19c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
/* ARM Cortex-A8 Section Definitions */

OUTPUT_ARCH(arm)
ENTRY(_start)

SECTIONS
{
  /* Reset vector and exception vectors */
  .vector_table (NOLOAD) : {
    KEEP(*(.vector_table))
    . = ALIGN(32);
  } > RESET_VECTOR

  /* Boot code - loaded first */
  .boot : ALIGN(4) {
    __boot_start = .;
    KEEP(*(.boot))
    KEEP(*(.boot.*))
    __boot_end = .;
  } > SRAM AT > FLASH

  /* Text section (code) */
  .text : ALIGN(4) {
    __text_start = .;
    *(.text)
    *(.text.*)
    *(.gnu.linkonce.t.*)
    . = ALIGN(4);
    __text_end = .;
  } > SRAM AT > FLASH

  /* Read-only data */
  .rodata : ALIGN(4) {
    __rodata_start = .;
    *(.rodata)
    *(.rodata.*)
    *(.gnu.linkonce.r.*)
    . = ALIGN(4);
    __rodata_end = .;
  } > SRAM AT > FLASH

  /* Initialized data */
  .data : ALIGN(4) {
    __data_start = .;
    *(.data)
    *(.data.*)
    *(.gnu.linkonce.d.*)
    . = ALIGN(4);
    __data_end = .;
  } > SRAM AT > FLASH
  __data_load_start = LOADADDR(.data);
  __data_load_size = SIZEOF(.data);

  /* Uninitialized data (BSS) */
  .bss (NOLOAD) : ALIGN(4) {
    __bss_start = .;
    *(.bss)
    *(.bss.*)
    *(COMMON)
    . = ALIGN(4);
    __bss_end = .;
  } > SRAM

  /* Stack */
  .stack (NOLOAD) : ALIGN(16) {
    __stack_start = .;
    . += 0x4000;
    . = ALIGN(16);
    __stack_end = .;
  } > SRAM

  /* Heap */
  .heap (NOLOAD) : ALIGN(16) {
    __heap_start = .;
    . += 0x8000;
    . = ALIGN(16);
    __heap_end = .;
  } > SRAM

  /* Discard unused sections */
  /DISCARD/ : {
    *(.note.GNU-stack)
    *(.gnu_debuglink)
    *(.gnu.lto_*)
  }
}

/* Linker-defined symbols */
__etext = __data_load_start + __data_load_size;