summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/app.lds
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-04-01 03:21:18 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-04-01 03:21:18 +0000
commit4fa96fbc914ae8fd69aedafd73f4f1798679d29f (patch)
treeea0deb3e1573e1dfd540441002e58b403670d178 /firmware/target/arm/tms320dm320/app.lds
parenta606121dd860245328198ac773d454980191abc3 (diff)
downloadrockbox-4fa96fbc914ae8fd69aedafd73f4f1798679d29f.tar.gz
rockbox-4fa96fbc914ae8fd69aedafd73f4f1798679d29f.zip
M:Robe 500i: More LCD initialization, and beginnings of support for QVGA as well as VGA on the LCD. MPEGPlayer now works with reasonable performance on smaller videos, but YUV blitting persists after MPEGPlayer is left, some cleanup/changes to the initialization code. This should be functionally equivalent for the ZVM, but the #ifdef's may need to be added back for app.lds. Get the bootloader building again.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20598 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/tms320dm320/app.lds')
-rw-r--r--firmware/target/arm/tms320dm320/app.lds79
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
31MEMORY 39MEMORY
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