OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / tools / misc / fwiw.gdb
1 #
2 #       FWIW - Atheros AR7100 target gdbinit script.
3 #
4 #       (C) Copyright 2007-2008, Greg Ungerer <gerg@snapgear.com>
5 #
6
7 define uart-init
8 # Enable UART I/O lines
9 monitor long 0x18040000 = 0xc3e
10 monitor long 0x18040008 = 0x03e
11 monitor long 0x18040028 = 0x100
12 # set 115200,8,n,1
13 monitor char 0x1802000f = 0x83
14 monitor char 0x18020003 = 0x54
15 monitor char 0x18020007 = 0x00
16 monitor char 0x1802000f = 0x03
17 end
18
19
20 define uart-print
21 monitor char 0x18020003 = $arg0
22 end
23
24 define uart-loop
25 while (1)
26         monitor char 0x18020003 = 0x55
27 end
28 end
29
30 define led-init
31 monitor long 0x18040000 = 0xc3e
32 monitor long 0x18040008 = 0x3e
33 end
34
35 define led-clear
36 monitor long 0x18040008 = 0x3e
37 end
38
39 define led-all
40 monitor long 0x18040008 = 0x00
41 end
42
43 define led-scan
44 while (1)
45         monitor long 0x18040008 = 0x3c
46         monitor long 0x18040008 = 0x3a
47         monitor long 0x18040008 = 0x36
48         monitor long 0x18040008 = 0x2e
49         monitor long 0x18040008 = 0x1e
50         monitor long 0x18040008 = 0x2e
51         monitor long 0x18040008 = 0x36
52         monitor long 0x18040008 = 0x3a
53 end
54 end
55
56
57 #
58 #       Set the PLL to high speed...
59 #
60 define pll-init
61 monitor long 0x18050004 = 0x000050c0
62 monitor long 0x18050000 = 0x000f00e8
63 monitor long 0x18050000 = 0x800f00e8
64 monitor long 0x18050008 = 0x1
65 end
66
67
68 #
69 #       RAM setup!
70 #
71
72 define mem-init
73 # set DDR_CONFIG for xxx
74 monitor long 0x18000000 = 0xefbc8cd0
75 shell sleep 1
76 # set DDR_CONFIG2 for xxx
77 monitor long 0x18000004 = 0x827156a2
78 shell sleep 1
79 # send PRECHARGE ALL cycle
80 monitor long 0x18000010 = 8
81 shell sleep 1
82 # send MRS update cycle
83 monitor long 0x18000010 = 1
84 shell sleep 1
85 # set DDR_EXTENDED_MODE 
86 monitor long 0x1800000c = 0
87 shell sleep 1
88 # send EMRS update cycle
89 monitor long 0x18000010 = 2
90 shell sleep 1
91 # send PRECHARGE ALL cycle
92 monitor long 0x18000010 = 8
93 shell sleep 1
94 # set DDR_MODE
95 monitor long 0x18000008 = 0x61
96 shell sleep 1
97 # send MRS update cycle
98 monitor long 0x18000010 = 1
99 shell sleep 1
100 # set DDR_REFRESH
101 monitor long 0x18000014 = 0x461b
102 shell sleep 1
103 # set DDR_RD_DATA_THIS_CYCLE
104 #monitor long 0x18000018 = 0xffff
105 monitor long 0x18000018 = 0xff
106 shell sleep 1
107 # set the TAP_CONTROL words
108 monitor long 0x1800001c = 7
109 monitor long 0x18000020 = 7
110 monitor long 0x18000024 = 7
111 monitor long 0x18000028 = 7
112 end
113
114
115 #
116 #       Set of flash programming macros for SPI flash
117 #
118
119 define spi-bit-banger
120 set $data = $arg0
121 set $cnt = 7
122 while ($cnt >= 0)
123         set $bit = ($data >> $cnt) & 0x1
124         if ($bit == 1)
125                 monitor long 0x1f000008 = 0x60001
126                 monitor long 0x1f000008 = 0x60101
127         else
128                 monitor long 0x1f000008 = 0x60000
129                 monitor long 0x1f000008 = 0x60100
130         end
131         set $cnt = $cnt - 1
132 end
133 end
134
135
136 define spi-send-addr
137 set $bangaddr = $arg0
138 set $addrbyte = (($bangaddr & 0xff0000) >> 16)
139 spi-bit-banger $addrbyte
140 set $addrbyte = (($bangaddr & 0xff00) >> 8)
141 spi-bit-banger $addrbyte
142 set $addrbyte = $bangaddr & 0xff
143 spi-bit-banger $addrbyte
144 end
145
146 define spi-write-enable
147 monitor long 0x1f000000 = 1
148 monitor long 0x1f000008 = 0x70000
149 monitor long 0x1f000008 = 0x60000
150 spi-bit-banger 6
151 monitor long 0x1f000008 = 0x70000
152 monitor long 0x1f000000 = 0
153 end
154
155
156 define spi-write-page
157 set $addr = $arg0
158 set $addrend = $addr + $arg1
159
160 spi-write-enable
161 monitor long 0x1f000000 = 1
162 monitor long 0x1f000008 = 0x70000
163 monitor long 0x1f000008 = 0x60000
164 spi-bit-banger 2
165 spi-send-addr $addr
166
167 while ($addr < $addrend)
168         set $val = *((unsigned char *) $addr)
169         spi-bit-banger $val
170         set $addr = $addr + 1
171 end
172
173 monitor long 0x1f000008 = 0x70000
174 monitor long 0x1f000000 = 0
175 end
176
177
178 define spi-erase-sector
179 set $addr = $arg0
180 spi-write-enable
181 monitor long 0x1f000000 = 1
182 monitor long 0x1f000008 = 0x70000
183 monitor long 0x1f000008 = 0x60000
184 spi-bit-banger 0xd8
185 spi-send-addr $addr
186 monitor long 0x1f000008 = 0x70000
187 monitor long 0x1f000000 = 0
188 end
189
190
191 define spi-read-id
192 monitor long 0x1f000000 = 1
193
194 monitor long 0x1f000008 = 0x70000
195 monitor long 0x1f000008 = 0x60000
196 spi-bit-banger 0x9f
197
198 set $cnt = 0
199 while ($cnt < 0x18)
200         monitor long 0x1f000008 = 0x60001
201         monitor long 0x1f000008 = 0x60101
202         set $cnt = $cnt + 1
203 end
204 monitor long 0x1f000008 = 0x60001
205
206 monitor long 0x1f000008 = 0x70000
207 monitor long 0x1f00000c
208 monitor long 0x1f000000 = 0
209
210 end
211
212
213 #
214 #       Complete flash programming macros.
215 #
216 define flash-program
217 pll-init
218 uart-init
219 mem-init
220 #load /tmp/boot.elf
221 load tools/bin/mips-flasher
222 set $pc = 0
223
224 end
225
226
227 #
228 #       Real startup now...
229 #
230 set output-radix 16
231 set input-radix 16
232
233 target remote localhost:8888
234
235 set endian big
236 monitor endian big
237 #set endian little
238 #monitor endian little
239
240 #display/i $pc
241