diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/tms320dm320/boot.lds | 115 | ||||
-rwxr-xr-x | firmware/target/arm/tms320dm320/crt0.S | 2 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c | 4 |
3 files changed, 77 insertions, 44 deletions
diff --git a/firmware/target/arm/tms320dm320/boot.lds b/firmware/target/arm/tms320dm320/boot.lds index e391526dc5..ff8203ccd8 100644 --- a/firmware/target/arm/tms320dm320/boot.lds +++ b/firmware/target/arm/tms320dm320/boot.lds | |||
@@ -6,24 +6,42 @@ OUTPUT_FORMAT(elf32-littlearm) | |||
6 | OUTPUT_ARCH(arm) | 6 | OUTPUT_ARCH(arm) |
7 | STARTUP(target/arm/tms320dm320/crt0.o) | 7 | STARTUP(target/arm/tms320dm320/crt0.o) |
8 | 8 | ||
9 | #define LCD_BUFFER_SIZE (LCD_WIDTH*LCD_HEIGHT*2) | 9 | #ifdef DEBUG |
10 | #define STUBOFFSET 0x10000 | ||
11 | #else | ||
12 | #define STUBOFFSET 0 | ||
13 | #endif | ||
14 | |||
15 | #ifndef LCD_NATIVE_WIDTH | ||
16 | #define LCD_NATIVE_WIDTH LCD_WIDTH | ||
17 | #endif | ||
18 | |||
19 | #ifndef LCD_NATIVE_HEIGHT | ||
20 | #define LCD_NATIVE_HEIGHT LCD_HEIGHT | ||
21 | #endif | ||
22 | |||
23 | #define LCD_FUDGE LCD_NATIVE_WIDTH%32 | ||
24 | |||
25 | #define LCD_BUFFER_SIZE ((LCD_NATIVE_WIDTH+LCD_FUDGE)*LCD_NATIVE_HEIGHT*2) | ||
10 | 26 | ||
11 | /* must be 16Kb (0x4000) aligned */ | 27 | /* must be 16Kb (0x4000) aligned */ |
12 | #define TTB_SIZE (0x4000) | 28 | #define TTB_SIZE (0x4000) |
13 | 29 | ||
14 | #define DRAMSIZE (MEMORYSIZE * 0x100000) - TTB_SIZE - LCD_BUFFER_SIZE | 30 | /* Give this 1 meg to allow it to align to the MMU boundary */ |
31 | #define LCD_TTB_AREA 0x100000 | ||
32 | |||
33 | #define BOOT_OFFSET 0x1000000 | ||
15 | 34 | ||
16 | #define DRAMORIG 0x01900000 /* actually it's 0x00900000 */ | 35 | #define DRAMSIZE (MEMORYSIZE * 0x100000) - STUBOFFSET - BOOT_OFFSET |
17 | #define IRAMORIG 0x00000000 | ||
18 | #define IRAMSIZE 16K | ||
19 | #define FLASHORIG 0x00100000 | ||
20 | #define FLASHSIZE 8M | ||
21 | 36 | ||
22 | /* Now we have the LCD buffer */ | 37 | #define DRAMORIG (0x00900000+BOOT_OFFSET) /* actually it's 0x00900000 */ |
23 | #define LCDBEGIN (DRAMSIZE+0x00900000) | 38 | #define IRAMORIG 0x00000000 |
39 | #define IRAMSIZE 0x4000 | ||
40 | #define FLASHORIG 0x00100000 | ||
41 | #define FLASHSIZE 8M | ||
24 | 42 | ||
25 | /* Finally the TTB table */ | 43 | /* End of the audio buffer, where the codec buffer starts */ |
26 | #define TTBBEGIN (LCDBEGIN + LCD_BUFFER_SIZE) | 44 | #define TTB_BEGIN (DRAMORIG + DRAMSIZE - LCD_TTB_AREA) |
27 | 45 | ||
28 | MEMORY | 46 | MEMORY |
29 | { | 47 | { |
@@ -40,7 +58,6 @@ SECTIONS | |||
40 | loadaddress = .; | 58 | loadaddress = .; |
41 | _loadaddress = .; | 59 | _loadaddress = .; |
42 | *(.init.text) | 60 | *(.init.text) |
43 | *(.icode) | ||
44 | *(.text*) | 61 | *(.text*) |
45 | *(.glue_7) | 62 | *(.glue_7) |
46 | *(.glue_7t) | 63 | *(.glue_7t) |
@@ -53,7 +70,6 @@ SECTIONS | |||
53 | *(.rodata*) | 70 | *(.rodata*) |
54 | *(.rodata.str1.1) | 71 | *(.rodata.str1.1) |
55 | *(.rodata.str1.4) | 72 | *(.rodata.str1.4) |
56 | *(.irodata) | ||
57 | . = ALIGN(0x4); | 73 | . = ALIGN(0x4); |
58 | 74 | ||
59 | /* Pseudo-allocate the copies of the data sections */ | 75 | /* Pseudo-allocate the copies of the data sections */ |
@@ -61,31 +77,11 @@ SECTIONS | |||
61 | } > DRAM | 77 | } > DRAM |
62 | 78 | ||
63 | .data : { | 79 | .data : { |
64 | *(.idata) | ||
65 | *(.data*) | 80 | *(.data*) |
66 | . = ALIGN(0x4); | 81 | . = ALIGN(0x4); |
67 | _dataend = . ; | 82 | _dataend = . ; |
68 | } > DRAM | 83 | } > DRAM |
69 | 84 | ||
70 | .stack : | ||
71 | { | ||
72 | *(.stack) | ||
73 | _stackbegin = .; | ||
74 | stackbegin = .; | ||
75 | . += 0x2000; | ||
76 | _stackend = .; | ||
77 | stackend = .; | ||
78 | } > DRAM | ||
79 | |||
80 | .bss : | ||
81 | { | ||
82 | _edata = .; | ||
83 | *(.bss*); | ||
84 | *(.ibss); | ||
85 | *(COMMON) | ||
86 | _end = .; | ||
87 | } > DRAM | ||
88 | |||
89 | .vectors IRAMORIG : | 85 | .vectors IRAMORIG : |
90 | { | 86 | { |
91 | _vectorsstart = .; | 87 | _vectorsstart = .; |
@@ -94,16 +90,57 @@ SECTIONS | |||
94 | KEEP(*(.vectors)); | 90 | KEEP(*(.vectors)); |
95 | *(.vectors); | 91 | *(.vectors); |
96 | _vectorsend = .; | 92 | _vectorsend = .; |
97 | } AT > DRAM | 93 | } > IRAM AT > DRAM |
98 | _vectorscopy = LOADADDR(.vectors); | 94 | _vectorscopy = LOADADDR(.vectors); |
99 | 95 | ||
100 | .lcdbuffer LCDBEGIN (NOLOAD) : | 96 | .iram : |
101 | { | 97 | { |
102 | _lcdbuf = .; | 98 | _iramstart = .; |
103 | } | 99 | *(.icode) |
100 | *(.irodata*) | ||
101 | *(.idata) | ||
102 | . = ALIGN(0x4); | ||
103 | _iramend = .; | ||
104 | } > IRAM AT> DRAM | ||
105 | |||
106 | _iramcopy = LOADADDR(.iram); | ||
107 | |||
108 | .ibss (NOLOAD) : | ||
109 | { | ||
110 | _iedata = .; | ||
111 | *(.ibss) | ||
112 | . = ALIGN(0x4); | ||
113 | _iend = .; | ||
114 | } > IRAM | ||
115 | |||
116 | .stack (NOLOAD) : | ||
117 | { | ||
118 | *(.stack) | ||
119 | stackbegin = .; | ||
120 | . += 0x2000; | ||
121 | stackend = .; | ||
122 | } > IRAM | ||
123 | |||
124 | .bss (NOLOAD) : | ||
125 | { | ||
126 | . = ADDR(.data) + SIZEOF(.data) + SIZEOF(.vectors) + SIZEOF(.iram); | ||
127 | _edata = .; | ||
128 | *(.bss*) | ||
129 | *(COMMON) | ||
130 | . = ALIGN(0x4); | ||
131 | _end = .; | ||
132 | } > DRAM | ||
104 | 133 | ||
105 | .ttbtable TTBBEGIN (NOLOAD) : | 134 | .ttbtable TTB_BEGIN (NOLOAD) : |
106 | { | 135 | { |
136 | . = ALIGN (0x4000); | ||
107 | _ttbstart = .; | 137 | _ttbstart = .; |
108 | } | 138 | . += TTB_SIZE; |
139 | } > DRAM | ||
140 | |||
141 | .lcdbuffer (NOLOAD) : | ||
142 | { | ||
143 | _lcdbuf = .; | ||
144 | . += LCD_BUFFER_SIZE; | ||
145 | } > DRAM | ||
109 | } | 146 | } |
diff --git a/firmware/target/arm/tms320dm320/crt0.S b/firmware/target/arm/tms320dm320/crt0.S index a5a965b9c2..0243c13971 100755 --- a/firmware/target/arm/tms320dm320/crt0.S +++ b/firmware/target/arm/tms320dm320/crt0.S | |||
@@ -54,7 +54,7 @@ start: | |||
54 | orr r0, r0, #0x00000002 | 54 | orr r0, r0, #0x00000002 |
55 | mcr p15, 0, r0, c1, c0, 0 | 55 | mcr p15, 0, r0, c1, c0, 0 |
56 | 56 | ||
57 | #if !defined(BOOTLOADER) && !defined(STUB) | 57 | #if !defined(STUB) |
58 | /* Zero out IBSS */ | 58 | /* Zero out IBSS */ |
59 | ldr r2, =_iedata | 59 | ldr r2, =_iedata |
60 | ldr r3, =_iend | 60 | ldr r3, =_iend |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c index 1334eeaf8d..54e1dc0cf2 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c | |||
@@ -127,8 +127,6 @@ void lcd_init_device(void) | |||
127 | /* Clear the Frame */ | 127 | /* Clear the Frame */ |
128 | memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT); | 128 | memset16(FRAME, 0x0000, LCD_WIDTH*LCD_HEIGHT); |
129 | 129 | ||
130 | lcd_sleep(); | ||
131 | |||
132 | IO_OSD_OSDWINMD0&=~(0x0001); | 130 | IO_OSD_OSDWINMD0&=~(0x0001); |
133 | IO_OSD_VIDWINMD&=~(0x0001); | 131 | IO_OSD_VIDWINMD&=~(0x0001); |
134 | 132 | ||
@@ -242,8 +240,6 @@ void lcd_init_device(void) | |||
242 | 240 | ||
243 | IO_OSD_OSDWINMD0|=0x01; | 241 | IO_OSD_OSDWINMD0|=0x01; |
244 | IO_VID_ENC_VMOD|=0x01; | 242 | IO_VID_ENC_VMOD|=0x01; |
245 | |||
246 | lcd_enable(true); | ||
247 | } | 243 | } |
248 | 244 | ||
249 | /* Update a fraction of the display. */ | 245 | /* Update a fraction of the display. */ |