OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / tools / misc / semp3.gdb
1 #
2 # GDB Init script for the SecureEdge MP3 ColdFire 5307 board.
3 #
4 # The main purpose of this script is to configure the 
5 # DRAM controller so code can be loaded.
6 #
7
8 define addresses
9
10 set $mbar  = 0x10000001
11 set $rsr   = $mbar - 1 + 0x000
12 set $sypcr = $mbar - 1 + 0x001
13 set $swivr = $mbar - 1 + 0x002
14 set $swsr  = $mbar - 1 + 0x003
15 set $simr  = $mbar - 1 + 0x003
16 set $par   = $mbar - 1 + 0x004
17 set $irqpar= $mbar - 1 + 0x006
18 set $pllcr = $mbar - 1 + 0x008
19 set $mpark = $mbar - 1 + 0x00c
20 set $ipr   = $mbar - 1 + 0x040
21 set $imr   = $mbar - 1 + 0x044
22
23 set $icr0  = $mbar - 1 + 0x04c
24 set $icr1  = $mbar - 1 + 0x04d
25 set $icr2  = $mbar - 1 + 0x04e
26 set $icr3  = $mbar - 1 + 0x04f
27 set $icr4  = $mbar - 1 + 0x050
28 set $icr5  = $mbar - 1 + 0x051
29 set $icr6  = $mbar - 1 + 0x052
30 set $icr7  = $mbar - 1 + 0x053
31 set $icr8  = $mbar - 1 + 0x054
32 set $icr9  = $mbar - 1 + 0x055
33 set $icr10 = $mbar - 1 + 0x056
34 set $icr11 = $mbar - 1 + 0x057
35
36 set $csar0 = $mbar - 1 + 0x080
37 set $csmr0 = $mbar - 1 + 0x084
38 set $cscr0 = $mbar - 1 + 0x08a
39 set $csar1 = $mbar - 1 + 0x08c
40 set $csmr1 = $mbar - 1 + 0x090
41 set $cscr1 = $mbar - 1 + 0x096
42 set $csar2 = $mbar - 1 + 0x098
43 set $csmr2 = $mbar - 1 + 0x09c
44 set $cscr2 = $mbar - 1 + 0x0a2
45 set $csar3 = $mbar - 1 + 0x0a4
46 set $csmr3 = $mbar - 1 + 0x0a8
47 set $cscr3 = $mbar - 1 + 0x0ae
48 set $csar4 = $mbar - 1 + 0x0b0
49 set $csmr4 = $mbar - 1 + 0x0b4
50 set $cscr4 = $mbar - 1 + 0x0ba
51 set $csar5 = $mbar - 1 + 0x0bc
52 set $csmr5 = $mbar - 1 + 0x0c0
53 set $cscr5 = $mbar - 1 + 0x0c6
54 set $csar6 = $mbar - 1 + 0x0c8
55 set $csmr6 = $mbar - 1 + 0x0cc
56 set $cscr6 = $mbar - 1 + 0x0d2
57 set $csar7 = $mbar - 1 + 0x0d4
58 set $csmr7 = $mbar - 1 + 0x0d8
59 set $cscr7 = $mbar - 1 + 0x0de
60
61 set $dcr   = $mbar - 1 + 0x100
62 set $dacr0 = $mbar - 1 + 0x108
63 set $dmr0  = $mbar - 1 + 0x10c
64 set $dacr1 = $mbar - 1 + 0x110
65 set $dmr1  = $mbar - 1 + 0x114
66
67 set $tmr1  = $mbar - 1 + 0x140
68 set $trr1  = $mbar - 1 + 0x144
69 set $tcr1  = $mbar - 1 + 0x148
70 set $tcn1  = $mbar - 1 + 0x14C
71 set $ter1  = $mbar - 1 + 0x151
72 set $tmr2  = $mbar - 1 + 0x180
73 set $trr2  = $mbar - 1 + 0x184
74 set $tcr2  = $mbar - 1 + 0x188
75 set $tcn2  = $mbar - 1 + 0x18C
76 set $ter2  = $mbar - 1 + 0x191
77
78 set $paddr = $mbar - 1 + 0x244
79 set $padat = $mbar - 1 + 0x248
80
81 end
82
83 #
84 #  Setup RAMBAR for the internal SRAM.
85 #
86
87 define setup-sram
88 set $rambar  = 0x20000001
89 end
90
91
92 #
93 #       Setup Parallel I/O ports...
94 #
95
96 define setup-pp
97 set *((unsigned short *) $par) = 0x005b
98 set *((unsigned short *) $paddr) = 0x0180
99 set *((unsigned short *) $padat) = 0x0000
100 end
101
102
103 #
104 #  Setup chip selects...
105 #
106 #  These are defined so that they are compatible with both the
107 #  old and new mask 5307 chips, so be carefull if you modify.
108 #
109
110 define setup-cs
111
112 # CS0 -- FLASH ROM, address=0xf000000, 1MB-2MB size, 8bit
113 set *((unsigned short *) $csar0) = 0xf000
114 set *((unsigned long *) $csmr0)  = 0x001f0001
115 set *((unsigned short *) $cscr0) = 0x3d40
116
117 # CS1 -- Optional DISK-ON-CHIP device, address=0xe0000000, 16MB, 8bit.
118 set *((unsigned short *) $csar1) = 0xe000
119 set *((unsigned long *) $csmr1)  = 0x00ff0001
120 set *((unsigned short *) $cscr1) = 0x3d40
121
122 # CS2 -- LCD display, address=0x30400000, 8bit
123 set *((unsigned short *) $csar2) = 0x3040
124 set *((unsigned long *) $csmr2)  = 0x000f0001
125 set *((unsigned short *) $cscr2) = 0x2940
126 # the next line is for old proto type HW with LCD behind ISA bus
127 # set *((unsigned short *) $cscr2) = 0x0040
128
129 # CS3 -- Ethernet, address=0x30600000, Davicom, 16bit
130 set *((unsigned short *) $csar3) = 0x3060
131 set *((unsigned long *) $csmr3)  = 0x000f0001
132 set *((unsigned short *) $cscr3) = 0x0080
133
134 # CS4 -- IDE interface, address=0x30800000, 16bit
135 set *((unsigned short *) $csar4) = 0x3080
136 set *((unsigned long *) $csmr4)  = 0x000f0001
137 set *((unsigned short *) $cscr4) = 0x0080
138
139 # CS5 -- Audio CODEC, address=0x30a00000, 8bit
140 set *((unsigned short *) $csar5) = 0x30a0
141 set *((unsigned long *) $csmr5)  = 0x000f0001
142 set *((unsigned short *) $cscr5) = 0x0040
143
144 # CS6 -- Nothing, address=0x30c00000
145 set *((unsigned short *) $csar6) = 0x30c0
146 set *((unsigned long *) $csmr6)  = 0x000f0001
147 set *((unsigned short *) $cscr6) = 0x3d40
148
149 # CS7 -- Nothing, address=0x30e00000
150 set *((unsigned short *) $csar7) = 0x30e0
151 set *((unsigned long *) $csmr7)  = 0x000f0001
152 set *((unsigned short *) $cscr7) = 0x3d40
153
154 end
155
156
157 #
158 #       GDB boot loader
159 #
160 define bootload
161 cont
162 load boot/etherboot/ethboot-bdm.elf
163 load boot/boot-bdm.elf
164 symbol-file boot/boot-bdm.elf
165 set $pc=_start
166 add-symbol-file boot/etherboot/ethboot-bdm.elf &etherboot_addr
167 echo \nType 'cont' to start bootloader...\n
168 end
169
170
171 #
172 #       FLASH prgramming code
173 #
174 define flash-erase
175 set *((unsigned char *) 0xf0000aaa) = 0xaa
176 set *((unsigned char *) 0xf0000555) = 0x55
177 set *((unsigned char *) 0xf0000aaa) = 0x80
178 set *((unsigned char *) 0xf0000aaa) = 0xaa
179 set *((unsigned char *) 0xf0000555) = 0x55
180 set *((unsigned char *) 0xf0000000) = 0x30
181 end
182
183 define flash-programbyte
184 set *((unsigned char *) 0xf0000aaa) = 0xaa
185 set *((unsigned char *) 0xf0000555) = 0x55
186 set *((unsigned char *) 0xf0000aaa) = 0xa0
187 set *((unsigned char *) $arg0) = $arg1
188 #while (*((unsigned char *) $arg0) != $arg1)
189 #       set $d0 = 0
190 end
191
192 define flash-programstartaddr
193 flash-programbyte 0xf0000004 0xf0
194 flash-programbyte 0xf0000005 0x00
195 flash-programbyte 0xf0000006 0x04
196 flash-programbyte 0xf0000007 0x00
197 end
198
199 define flash-program
200 set $num = $arg0
201 set $dst = 0xf0000400
202 set $src = 0x20000000
203 flash-programstartaddr
204 while ($num > 0)
205         set $byte = *((unsigned char *) $src)
206         flash-programbyte $dst $byte
207         set $src = $src + 1
208         set $dst = $dst + 1
209         set $num = $num - 1
210 end
211 end
212
213 define goflash
214 set $pc = 0xf0000400
215 c
216 end
217
218
219 #
220 #       Set Audio for simple output
221 #
222 define audio
223
224 # left DAC control
225 set *((unsigned char *) 0x30a00000) = 0x46
226 set *((unsigned char *) 0x30a00001) = 0x00
227
228 # right DAC control
229 set *((unsigned char *) 0x30a00000) = 0x47
230 set *((unsigned char *) 0x30a00001) = 0x00
231
232 # clock and data format register
233 set *((unsigned char *) 0x30a00000) = 0x48
234 set *((unsigned char *) 0x30a00001) = 0x00
235
236 # interface configuration register
237 set *((unsigned char *) 0x30a00000) = 0x49
238 set *((unsigned char *) 0x30a00001) = 0x49
239
240 # upper base count
241 set *((unsigned char *) 0x30a00000) = 0x4e
242 set *((unsigned char *) 0x30a00001) = 0x00
243
244 # upper base count
245 set *((unsigned char *) 0x30a00000) = 0x4f
246 set *((unsigned char *) 0x30a00001) = 0x00
247
248 # pin control register
249 set *((unsigned char *) 0x30a00000) = 0x4a
250 set *((unsigned char *) 0x30a00001) = 0x02
251
252 # misc control register
253 set *((unsigned char *) 0x30a00000) = 0x4c
254 set *((unsigned char *) 0x30a00001) = 0xca
255
256 # crystal, clock select register
257 set *((unsigned char *) 0x30a00000) = 0x40 | 29
258 set *((unsigned char *) 0x30a00001) = 0x60
259
260 set *((unsigned char *) 0x30a00000) = 0x00
261 end
262
263
264 define play
265 set $num = 0
266 while ($num >= 0)
267         set *((unsigned char *) 0x30a00003) = $num
268         set $num = $num + 25
269 end
270 end
271
272
273 define mix
274 set *((unsigned char *) 0x30a00000) = 13
275 set *((unsigned char *) 0x30a00001) = 0x01
276 end
277
278
279 define rec
280 set *((unsigned char *) 0x30a00000) = 0x49
281 set *((unsigned char *) 0x30a00001) = 0xcb
282 set *((unsigned char *) 0x30a00000) = 0x09
283 set $num = 0
284 while ($num >= 0)
285         x/1b 0x30a00003
286         set $num = $num + 1
287 end
288 end
289
290
291 define replay
292 set *((unsigned char *) 0x30a00000) = 0x49
293 set *((unsigned char *) 0x30a00001) = 0xcb
294 set *((unsigned char *) 0x30a00000) = 0x09
295 set $num = 0
296 while ($num >= 0)
297         set $byte = *((unsigned char *) 0x30a00003)
298         set *((unsigned char *) 0x30a00003) = $byte
299         set $num = $num + 1
300 end
301 end
302
303
304 define printreg
305 set $num = 0
306 while ($num < 32)
307         set *((unsigned char *) 0x30a00000) = $num
308         set $byte = *((unsigned char *) 0x30a00001)
309         printf "REG[%02d] = %02x\n", $num, $byte
310         set $num = $num + 1
311 end
312 end
313
314
315 define audio-setreg
316 set *((unsigned char *) 0x30a00000) = 0x40 | $arg0
317 set *((unsigned char *) 0x30a00001) = $arg1
318 end
319
320
321 define fixup
322 #audio-setreg 0  0x00
323 #audio-setreg 1  0x00
324 audio-setreg 2  0x88
325 audio-setreg 3  0x88
326 audio-setreg 4  0x88
327 audio-setreg 5  0x88
328 #audio-setreg 11 0x40
329 #audio-setreg 13 0x00
330 #audio-setreg 16 0x11
331 #audio-setreg 17 0x10
332 #audio-setreg 18 0x88
333 #audio-setreg 19 0x88
334 #audio-setreg 20 0x00
335 #audio-setreg 22 0x1f
336 #audio-setreg 23 0x40
337 #audio-setreg 24 0x11
338 #audio-setreg 26 0x03
339 #audio-setreg 27 0x00
340
341 # Re-enable...
342 set *((unsigned char *) 0x30a00000) = 0
343 end
344
345
346 #
347 #       LCD functions
348 #
349
350 define lcdinit
351 set *((unsigned short *) 0x10000248) = 0x0000
352 set *((unsigned char *) 0x30400000) = 0x38
353 set *((unsigned char *) 0x30400001) = 0   
354 set *((unsigned char *) 0x30400000) = 0x0f
355 set *((unsigned char *) 0x30400001) = 0
356 set *((unsigned char *) 0x30400000) = 0x01
357 set *((unsigned char *) 0x30400001) = 0
358 set *((unsigned char *) 0x30400000) = 0x06
359 set *((unsigned char *) 0x30400001) = 0
360 end
361
362 define lcd0
363 set *((unsigned short *) 0x10000248) = 0x0000
364 set *((unsigned char *) 0x30400000) = 0x38
365 set *((unsigned char *) 0x30400001) = 0   
366 end
367 define lcd1
368 set *((unsigned char *) 0x30400000) = 0x0f
369 set *((unsigned char *) 0x30400001) = 0
370 end
371 define lcd2
372 set *((unsigned char *) 0x30400000) = 0x06
373 set *((unsigned char *) 0x30400001) = 0
374 end
375 define lcd3
376 set *((unsigned char *) 0x30400000) = 0x01
377 set *((unsigned char *) 0x30400001) = 0
378 end
379
380 define lcdput
381 set *((unsigned short *) 0x10000248) = 0x0100
382 set *((unsigned char *) 0x30400000) = $arg0
383 set *((unsigned char *) 0x30400001) = 0
384 end
385
386 define lcdloop
387 set *((unsigned short *) 0x10000248) = 0x0100
388 set $num = 65
389 while ($num >= 0)
390         set *((unsigned char *) 0x30400000) = $num
391         set *((unsigned char *) 0x30400001) = 0
392         set $num = $num + 1
393         if ($num > 90)
394                 set $num = 65
395         end
396 end
397 end
398
399 #
400 #       SecureEdge MP3 ColdFire 5307 target...
401 #
402 target bdm /dev/bdmcf0
403
404 addresses
405 setup-sram
406 setup-cs
407 setup-pp
408 load bin/eliamem.elf               # use nettel8mem.elf for old proto's
409 set $pc = 0x20000000
410 set $sp = 0x20000400
411 set $fp = 0x20000400
412 set $vbr = 0x20000000
413 set $ps = 0x2700
414 set print pretty
415 set print asm-demangle
416 display/i $pc
417 select-frame 0
418