diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-04-01 03:21:18 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-04-01 03:21:18 +0000 |
commit | 4fa96fbc914ae8fd69aedafd73f4f1798679d29f (patch) | |
tree | ea0deb3e1573e1dfd540441002e58b403670d178 /firmware/target/arm/tms320dm320/app.lds | |
parent | a606121dd860245328198ac773d454980191abc3 (diff) | |
download | rockbox-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.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 | ||