diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320/app.lds')
-rw-r--r-- | firmware/target/arm/tms320dm320/app.lds | 79 |
1 files changed, 40 insertions, 39 deletions
diff --git a/firmware/target/arm/tms320dm320/app.lds b/firmware/target/arm/tms320dm320/app.lds index 902e093633..bc00c3463b 100644 --- a/firmware/target/arm/tms320dm320/app.lds +++ b/firmware/target/arm/tms320dm320/app.lds | |||
@@ -15,7 +15,11 @@ STARTUP(target/arm/tms320dm320/crt0.o) | |||
15 | #define STUBOFFSET 0 | 15 | #define STUBOFFSET 0 |
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | #include "cpu.h" | 18 | #define LCD_BUFFER_SIZE (LCD_WIDTH*LCD_HEIGHT*2) |
19 | |||
20 | /* must be 16Kb (0x4000) aligned */ | ||
21 | #define TTB_SIZE (0x4000) | ||
22 | |||
19 | #define DRAMSIZE (MEMORYSIZE * 0x100000) - STUBOFFSET - PLUGINSIZE - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE | 23 | #define DRAMSIZE (MEMORYSIZE * 0x100000) - STUBOFFSET - PLUGINSIZE - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE |
20 | 24 | ||
21 | #define DRAMORIG 0x00900000 + STUBOFFSET | 25 | #define DRAMORIG 0x00900000 + STUBOFFSET |
@@ -28,6 +32,10 @@ STARTUP(target/arm/tms320dm320/crt0.o) | |||
28 | /* Where the codec buffer ends, and the plugin buffer starts */ | 32 | /* Where the codec buffer ends, and the plugin buffer starts */ |
29 | #define ENDADDR (ENDAUDIOADDR + CODECSIZE) | 33 | #define ENDADDR (ENDAUDIOADDR + CODECSIZE) |
30 | 34 | ||
35 | #define LCDBEGIN (ENDADDR + PLUGINSIZE) | ||
36 | |||
37 | #define TTBBEGIN (LCDBEGIN + LCD_BUFFER_SIZE) | ||
38 | |||
31 | MEMORY | 39 | MEMORY |
32 | { | 40 | { |
33 | DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE | 41 | DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE |
@@ -40,7 +48,6 @@ SECTIONS | |||
40 | { | 48 | { |
41 | loadaddress = .; | 49 | loadaddress = .; |
42 | _loadaddress = .; | 50 | _loadaddress = .; |
43 | . = ALIGN(0x200); | ||
44 | *(.init.text) | 51 | *(.init.text) |
45 | *(.text*) | 52 | *(.text*) |
46 | *(.glue_7) | 53 | *(.glue_7) |
@@ -55,20 +62,22 @@ SECTIONS | |||
55 | *(.rodata.str1.1) | 62 | *(.rodata.str1.1) |
56 | *(.rodata.str1.4) | 63 | *(.rodata.str1.4) |
57 | . = ALIGN(0x4); | 64 | . = ALIGN(0x4); |
58 | |||
59 | /* Pseudo-allocate the copies of the data sections */ | ||
60 | _datacopy = .; | ||
61 | } > DRAM | 65 | } > DRAM |
62 | 66 | ||
63 | /* TRICK ALERT! For RAM execution, we put the .data section at the | 67 | .data : |
64 | same load address as the copy. Thus, we don't waste extra RAM | ||
65 | when we don't actually need the copy. */ | ||
66 | .data : AT ( _datacopy ) | ||
67 | { | 68 | { |
68 | _datastart = .; | ||
69 | *(.data*) | 69 | *(.data*) |
70 | . = ALIGN(0x4); | 70 | . = ALIGN(0x4); |
71 | _dataend = .; | 71 | } > DRAM |
72 | |||
73 | .bss (NOLOAD) : | ||
74 | { | ||
75 | _edata = .; | ||
76 | *(.bss*) | ||
77 | *(.ibss*) | ||
78 | *(COMMON) | ||
79 | . = ALIGN(0x4); | ||
80 | _end = .; | ||
72 | } > DRAM | 81 | } > DRAM |
73 | 82 | ||
74 | /DISCARD/ : | 83 | /DISCARD/ : |
@@ -81,30 +90,22 @@ SECTIONS | |||
81 | _vectorsstart = .; | 90 | _vectorsstart = .; |
82 | *(.vectors); | 91 | *(.vectors); |
83 | _vectorsend = .; | 92 | _vectorsend = .; |
84 | #ifndef CREATIVE_ZVx | ||
85 | } > IRAM AT> DRAM | 93 | } > IRAM AT> DRAM |
86 | 94 | ||
87 | _vectorscopy = LOADADDR(.vectors); | 95 | _vectorscopy = LOADADDR(.vectors); |
88 | #else | ||
89 | } > IRAM | ||
90 | #endif | ||
91 | 96 | ||
92 | .iram : | 97 | .iram : |
93 | { | 98 | { |
94 | _iramstart = .; | 99 | _iramstart = .; |
95 | *(.icode) | 100 | *(.icode) |
96 | *(.irodata) | 101 | *(.irodata*) |
97 | *(.idata) | 102 | *(.idata) |
98 | . = ALIGN(0x4); | 103 | . = ALIGN(0x4); |
99 | _iramend = .; | 104 | _iramend = .; |
100 | #ifndef CREATIVE_ZVx | ||
101 | } > IRAM AT> DRAM | 105 | } > IRAM AT> DRAM |
102 | 106 | ||
103 | _iramcopy = LOADADDR(.iram); | 107 | _iramcopy = LOADADDR(.iram); |
104 | #else | 108 | |
105 | } > IRAM | ||
106 | #endif | ||
107 | |||
108 | .ibss (NOLOAD) : | 109 | .ibss (NOLOAD) : |
109 | { | 110 | { |
110 | _iedata = .; | 111 | _iedata = .; |
@@ -113,49 +114,49 @@ SECTIONS | |||
113 | _iend = .; | 114 | _iend = .; |
114 | } > IRAM | 115 | } > IRAM |
115 | 116 | ||
116 | .stack : | 117 | .stack (NOLOAD) : |
117 | { | 118 | { |
118 | *(.stack) | 119 | *(.stack) |
119 | stackbegin = .; | 120 | stackbegin = .; |
120 | . += 0x2000; | 121 | . += 0x2000; |
121 | stackend = .; | 122 | stackend = .; |
122 | } > IRAM | 123 | } > IRAM |
124 | |||
125 | . = ADDR(.bss) + SIZEOF(.bss) + SIZEOF(.vectors) + SIZEOF(.iram); | ||
123 | 126 | ||
124 | #ifndef CREATIVE_ZVx | 127 | .audiobuf (NOLOAD) : |
125 | .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors): | ||
126 | #else | ||
127 | .bss ADDR(.data) + SIZEOF(.data): | ||
128 | #endif | ||
129 | { | ||
130 | _edata = .; | ||
131 | *(.bss*) | ||
132 | *(COMMON) | ||
133 | . = ALIGN(0x4); | ||
134 | _end = .; | ||
135 | } > DRAM | ||
136 | |||
137 | .audiobuf ALIGN(4) : | ||
138 | { | 128 | { |
129 | . = ALIGN(4); | ||
139 | _audiobuffer = .; | 130 | _audiobuffer = .; |
140 | audiobuffer = .; | 131 | audiobuffer = .; |
141 | } > DRAM | 132 | } > DRAM |
142 | 133 | ||
143 | .audiobufend ENDAUDIOADDR: | 134 | .audiobufend ENDAUDIOADDR (NOLOAD) : |
144 | { | 135 | { |
145 | audiobufend = .; | 136 | audiobufend = .; |
146 | _audiobufend = .; | 137 | _audiobufend = .; |
147 | } > DRAM | 138 | } > DRAM |
148 | 139 | ||
149 | .codec ENDAUDIOADDR: | 140 | .codec ENDAUDIOADDR (NOLOAD) : |
150 | { | 141 | { |
151 | codecbuf = .; | 142 | codecbuf = .; |
152 | _codecbuf = .; | 143 | _codecbuf = .; |
153 | } | 144 | } |
154 | 145 | ||
155 | .plugin ENDADDR: | 146 | .plugin ENDADDR (NOLOAD) : |
156 | { | 147 | { |
157 | _pluginbuf = .; | 148 | _pluginbuf = .; |
158 | pluginbuf = .; | 149 | pluginbuf = .; |
159 | } | 150 | } |
151 | |||
152 | .lcdbuffer LCDBEGIN (NOLOAD) : | ||
153 | { | ||
154 | _lcdbuf = .; | ||
155 | } | ||
156 | |||
157 | .ttbtable TTBBEGIN (NOLOAD) : | ||
158 | { | ||
159 | _ttbstart = .; | ||
160 | } | ||
160 | } | 161 | } |
161 | 162 | ||