From 4fa96fbc914ae8fd69aedafd73f4f1798679d29f Mon Sep 17 00:00:00 2001 From: Karl Kurbjun Date: Wed, 1 Apr 2009 03:21:18 +0000 Subject: 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 --- firmware/target/arm/tms320dm320/app.lds | 79 +++++++++++++++++---------------- 1 file changed, 40 insertions(+), 39 deletions(-) (limited to 'firmware/target/arm/tms320dm320/app.lds') 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 = .; + } } -- cgit v1.2.3