OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / tools / misc / ks8695.gdb
1 #
2 #       GDB init script to support the Kendin/Micrel KS8695 ARM
3 #       based CPU.
4 #
5 #       (C) Copyright 2003-2004, Greg Ungerer <gerg@snapgear.com>
6 #
7 #       Designed to be used with the Macraigor RAVEN wiggler for
8 #       ARM based 20ping JTAG setups. I use their OCdemon Linux
9 #       driver and arm-elf-gdb with it.
10 #
11
12 #
13 #       UART functions
14 #
15 define uart-init
16 set *((long*) 0x03ffe00c) = 0x03000000
17 end
18
19 define uart-print
20 set *((long*) 0x03ffe004) = $arg0
21 end
22
23
24 define uart-load
25 load tools/bin/fetch
26 set $r5 = $arg0
27 set $pc = 0x00f00000
28 printf "Ready to download over serial line...\n"
29 c
30 end
31
32
33 define uart-load8
34 load tools/bin/fetch8
35 set $r5 = 0x8000
36 set $pc = 0x00f00000
37 printf "Ready to download over serial line...\n"
38 end
39
40
41 define led-on
42 set *((unsigned long *) 0x03ffe600) = 0x00000006
43 set *((unsigned long *) 0x03ffe604) = 0x00000000
44 set *((unsigned long *) 0x03ffe608) = 0x00000006
45
46 end
47
48
49 #
50 #       Memory functions
51 #
52
53 define flash-init
54 # Map flash0 and flash1 banks contiguously from 0x02000000
55 set *((unsigned long *) 0x03ff4010) = 0x8fe00040
56 set *((unsigned long *) 0x03ff4014) = 0x9fe40040
57 set *((unsigned long *) 0x03ff4020) = 0x30000005
58 end
59
60
61 define mem-init
62 # Set bank0 to map RAM to 0x00000000, 16bit, 9 columns, 4banks
63 #set *((unsigned long *) 0x03ff4030) = 0x3fc0010c
64 set *((unsigned long *) 0x03ff4030) = 0x3fc0000e
65 set *((unsigned long *) 0x03ff4034) = 0
66
67 # Set global RAS/CAS timings
68 set *((unsigned long *) 0x03ff4038) = 0x0000000a
69
70 # Send NOP command (via SDRAM buffer control register)
71 set *((unsigned long *) 0x03ff403c) = 0x00030000
72 shell sleep 1
73
74 # Send PRECHARGE-ALL command (via SDRAM buffer control register)
75 set *((unsigned long *) 0x03ff403c) = 0x00010000
76 shell sleep 1
77
78 # Fast refreash cycles (at least 2 needed)
79 set *((unsigned long *) 0x03ff4040) = 0x00000020
80 shell sleep 1
81 set *((unsigned long *) 0x03ff4040) = 0x00000168
82
83 # Send MODE command (via buffer control register)
84 set *((unsigned long *) 0x03ff403c) = 0x00020033
85 shell sleep 1
86
87 end
88
89
90
91 #
92 #       Some simple memory tests.
93 #
94 define mem-fill
95 set $num = 0
96 set $addr = $arg0
97 set $val = $arg1
98 while ($num < 0x1000)
99         set *((unsigned long *) $addr) = $val
100         set $addr = $addr + 4
101         set $num = $num + 1
102 end
103 end
104
105
106 define mem-check
107 set $num = 0
108 set $addr = $arg0
109 set $val = $arg1
110 while ($num < 0x1000)
111         set $rd = *((unsigned long *) $addr)
112         if ($rd != $val)
113                 print $addr
114         end
115         set $addr = $addr + 4
116         set $num = $num + 1
117 end
118 end
119
120 define mem-test
121 set $num = 0
122 set $total = 0x100000
123 set $addr = $arg0
124 set $val = $arg1
125 while ($num < $total)
126         set *((unsigned long *) $addr) = $val
127         set $addr = $addr + 4
128         set $num = $num + 1
129         set $val = $val + 1
130 end
131 set $num = 0
132 set $addr = $arg0
133 set $val = $arg1
134 while ($num < $total)
135         set $rd = *((unsigned long *) $addr)
136         if ($rd != $val)
137                 print $addr
138         end
139         set $addr = $addr + 4
140         set $num = $num + 1
141         set $val = $val + 1
142 end
143 end
144
145
146 define mem-compare
147 set $src1 = $arg0
148 set $src2 = $arg1
149 set $num = 0
150 while ($num < $arg2)
151         set $val1 = *((unsigned long *) $src1)
152         set $val2 = *((unsigned long *) $src2)
153         if ($val1 != $val2)
154                 printf "ERROR: [%x]=%x [%x]=%x\n", $src1, $val1, $src2, $val2
155         end
156         set $src1 = $src1 + 4
157         set $src2 = $src2 + 4
158         set $num = $num + 4
159 end
160 end
161
162
163 #
164 #       FLASH handling code.
165 #
166 define flash-erase
167 printf "ERASE: addr=%x", $arg0
168 set *((unsigned char *) $arg0) = 0x20
169 set *((unsigned char *) $arg0) = 0xd0
170 shell sleep 2
171 set *((unsigned char *) $arg0) = 0xff
172 printf "\n"
173 end
174
175 define flash-unlock
176 printf "UNLOCK: addr=%x", $arg0
177 set *((unsigned char *) $arg0) = 0x60
178 set *((unsigned char *) $arg0) = 0xd0
179 shell sleep 2
180 set *((unsigned char *) $arg0) = 0xff
181 printf "\n"
182 end
183
184 define flash-eraseall
185 set $addr = 0
186 while ($addr < 0x400000)
187         flash-erase 0x02000000+$addr
188         set $addr = $addr + 0x20000
189 end
190 end
191
192
193 define flash-eraseimage
194 set $addr = 0x40000
195 while ($addr < 0x400000)
196         flash-erase 0x02000000+$addr
197         set $addr = $addr + 0x20000
198 end
199 end
200
201
202 define flash-eraseboot
203 flash-erase 0x02000000
204 end
205
206
207 define flash-program-byte
208 set *((unsigned char *) $arg0) = 0x40
209 set *((unsigned char *) $arg0) = $arg1
210 set $delay = 0
211 while ($delay < 5)
212         set $val = *((unsigned char *) $arg0)
213         set $delay = $delay + 1
214 end
215 set *((unsigned char *) $arg0) = 0xff
216 end
217
218
219 define flash-program
220 set $num = $arg0
221 set $count = 0
222 set $src = 0
223 set $dst = 0x02000000
224 while ($count < $num)
225         set $byte = *((unsigned char *) $src)
226         flash-program-byte $dst $byte
227         set $src = $src + 1
228         set $dst = $dst + 1
229         if (($count & 0x3ff) == 0)
230                 printf "PROGRAMING FLASH: 0x%08x-0x%08x\n", $count, ($count+0x400)
231         end
232         set $count = $count + 1
233 end
234 end
235
236
237 #
238 #       Load and program the boot code into flash.
239 #
240 define flash-boot
241 flash-init
242 mem-init
243 flash-erase 0x02000000
244 load boot/boot-gdb.elf
245 # Bug in gdb??
246 set *((unsigned long *) 0) = 0xea000006
247 flash-program 0x4000
248 end
249
250
251 define flash-bootload
252 flash-init
253 mem-init
254 flash-erase 0x02000000
255 uart-load
256 end
257
258
259 define flash-bootprogram
260 flash-program 0x4000
261 end
262
263
264 #
265 #       flash-burn <flash-addr> <ram-start> <count>
266 #
267 define flash-burn
268 load tools/bin/lite3
269 set $pc = 0x00f10000
270 set $r1 = $arg0
271 set $r5 = $arg1
272 set $r6 = $arg1 + $arg2
273 c
274 end
275
276
277 #
278 #       Load and program a kernel image...
279 #
280 define flash-kernelload
281 flash-init
282 mem-init
283 flash-erase 0x02020000
284 flash-erase 0x02040000
285 flash-erase 0x02060000
286 flash-erase 0x02080000
287 flash-erase 0x020a0000
288 uart-load
289 end
290
291 define flash-kernelprogram
292 load tools/bin/lite3
293 set $pc = 0x00f00000
294 c
295 end
296
297
298 #
299 #       Startup commands...
300 #
301 set output-radix 16
302 set input-radix 16
303
304 target remote localhost:8888
305
306 #set print pretty
307 #set print asm-demangle
308 #display/i $pc
309