summaryrefslogtreecommitdiffstats
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)
#define STUBOFFSET 0
#endif
-#include "cpu.h"
+#define LCD_BUFFER_SIZE (LCD_WIDTH*LCD_HEIGHT*2)
+
+/* must be 16Kb (0x4000) aligned */
+#define TTB_SIZE (0x4000)
+
#define DRAMSIZE (MEMORYSIZE * 0x100000) - STUBOFFSET - PLUGINSIZE - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE
#define DRAMORIG 0x00900000 + STUBOFFSET
@@ -28,6 +32,10 @@ STARTUP(target/arm/tms320dm320/crt0.o)
/* Where the codec buffer ends, and the plugin buffer starts */
#define ENDADDR (ENDAUDIOADDR + CODECSIZE)
+#define LCDBEGIN (ENDADDR + PLUGINSIZE)
+
+#define TTBBEGIN (LCDBEGIN + LCD_BUFFER_SIZE)
+
MEMORY
{
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
@@ -40,7 +48,6 @@ SECTIONS
{
loadaddress = .;
_loadaddress = .;
- . = ALIGN(0x200);
*(.init.text)
*(.text*)
*(.glue_7)
@@ -55,20 +62,22 @@ SECTIONS
*(.rodata.str1.1)
*(.rodata.str1.4)
. = ALIGN(0x4);
-
- /* Pseudo-allocate the copies of the data sections */
- _datacopy = .;
} > DRAM
- /* TRICK ALERT! For RAM execution, we put the .data section at the
- same load address as the copy. Thus, we don't waste extra RAM
- when we don't actually need the copy. */
- .data : AT ( _datacopy )
+ .data :
{
- _datastart = .;
*(.data*)
. = ALIGN(0x4);
- _dataend = .;
+ } > DRAM
+
+ .bss (NOLOAD) :
+ {
+ _edata = .;
+ *(.bss*)
+ *(.ibss*)
+ *(COMMON)
+ . = ALIGN(0x4);
+ _end = .;
} > DRAM
/DISCARD/ :
@@ -81,30 +90,22 @@ SECTIONS
_vectorsstart = .;
*(.vectors);
_vectorsend = .;
-#ifndef CREATIVE_ZVx
} > IRAM AT> DRAM
_vectorscopy = LOADADDR(.vectors);
-#else
- } > IRAM
-#endif
.iram :
{
_iramstart = .;
*(.icode)
- *(.irodata)
+ *(.irodata*)
*(.idata)
. = ALIGN(0x4);
_iramend = .;
-#ifndef CREATIVE_ZVx
} > IRAM AT> DRAM
_iramcopy = LOADADDR(.iram);
-#else
- } > IRAM
-#endif
-
+
.ibss (NOLOAD) :
{
_iedata = .;
@@ -113,49 +114,49 @@ SECTIONS
_iend = .;
} > IRAM
- .stack :
+ .stack (NOLOAD) :
{
*(.stack)
stackbegin = .;
. += 0x2000;
stackend = .;
} > IRAM
+
+ . = ADDR(.bss) + SIZEOF(.bss) + SIZEOF(.vectors) + SIZEOF(.iram);
-#ifndef CREATIVE_ZVx
- .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors):
-#else
- .bss ADDR(.data) + SIZEOF(.data):
-#endif
- {
- _edata = .;
- *(.bss*)
- *(COMMON)
- . = ALIGN(0x4);
- _end = .;
- } > DRAM
-
- .audiobuf ALIGN(4) :
+ .audiobuf (NOLOAD) :
{
+ . = ALIGN(4);
_audiobuffer = .;
audiobuffer = .;
} > DRAM
- .audiobufend ENDAUDIOADDR:
+ .audiobufend ENDAUDIOADDR (NOLOAD) :
{
audiobufend = .;
_audiobufend = .;
} > DRAM
- .codec ENDAUDIOADDR:
+ .codec ENDAUDIOADDR (NOLOAD) :
{
codecbuf = .;
_codecbuf = .;
}
- .plugin ENDADDR:
+ .plugin ENDADDR (NOLOAD) :
{
_pluginbuf = .;
pluginbuf = .;
}
+
+ .lcdbuffer LCDBEGIN (NOLOAD) :
+ {
+ _lcdbuf = .;
+ }
+
+ .ttbtable TTBBEGIN (NOLOAD) :
+ {
+ _ttbstart = .;
+ }
}