Add comments and tiny improvements to STM32 flash loader algorithm
[fw/openocd] / src / server / httpd / browsemem.tcl
1 # converted to .tcl by html2tcl.tcl
2 set buffer ""
3 append buffer {
4         
5         
6
7                 
8                 
9                 
10
11
12                 
13
14
15
16                 
17                 
18
19                 
20
21
22
23
24                 
25
26
27
28                 
29
30
31                 
32
33
34                 <html xmlns="http://www.w3.org/TR/REC-html40">
35 <head>
36 <title>OpenOCD debugger</title>
37 <meta charset="utf-8" content="text/html" http-equiv="Content-Type"/>
38 <link type="text/css" rel="stylesheet" href="menuweb.css"/>
39 </head>
40 }
41
42                                 set console ""
43                                 set upload_filename /ram/upload
44                         
45 append buffer {
46 <body style="margin:0px;">
47 <div style="width:974px;height:85px;">
48 <div style="float:left;position:relative;left:32px;width:478px;">
49 <a href="/">
50                                                         OpenOCD
51                                                 </a>
52 </div>
53 <div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');">
54 <div style="position:relative;left:15px;top:4px;" class="textlight">
55 }
56 append buffer [capture version]
57 append buffer {
58 </div>
59 </div>
60 </div>
61 <table style="padding:0px;border-collapse:collapse;">
62 <tr>
63 <td style="width:33px;">
64 <div style="width:20px;height:510px;">
65                                                                 &nbsp;
66                                                         </div>
67 </td>
68 <td style="vertical-align:top;height:100%;width:140px;padding:0px;">
69 <table style="padding:0px;border-collapse:collapse;height:100%;width:140px;">
70 <tr style="height:59px;">
71 <td/>
72 </tr>
73 <tr>
74 <td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;">
75 <div style="position:relative;left:10px;top:10px;font-weight:bold;">
76 <a href="browsemem.tcl" style="font-weight: bold;">Browse / Edit</a>
77 </div>
78 </td>
79 </tr>
80 <tr>
81 <td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;">
82 <div style="position:relative;left:10px;top:10px;font-weight:bold;">
83 <a href="downloadmem.tcl" style="">Download</a>
84 </div>
85 </td>
86 </tr>
87 <tr>
88 <td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/>
89 </tr>
90 <tr>
91 <td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/>
92 </tr>
93 <tr>
94 <td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/>
95 </tr>
96 </table>
97 </td>
98 <td style="vertical-align:top;padding:0px;height:100%">
99 <table style="padding:0px;border-collapse:collapse;height:100%;">
100 <tr>
101 <td>
102 <table style="padding:0px;border-collapse:collapse;">
103 <tr>
104 <td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;">
105 <div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;">
106 <a href="index.tcl">Config Target</a>
107 </div>
108 </td>
109 <td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;">
110 <div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;">
111 <a href="flashinfo.tcl">Flash</a>
112 </div>
113 </td>
114 <td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;">
115 <div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;">
116 <a href="browsemem.tcl" style="font-weight: bold;">Memory</a>
117 </div>
118 </td>
119 <td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;">
120 <div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;">
121 <a href="openocd.tcl">OpenOCD</a>
122 </div>
123 </td>
124 </tr>
125 </table>
126 </td>
127 </tr>
128 <tr>
129 <td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6">
130 <div style="width:500px;background-color:#ffffff;height:100%;">
131                                                                                         &nbsp;
132                                                                                 </div>
133 </td>
134 </tr>
135 <tr>
136 <td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6">
137 <H1>Browse / Edit Memory</H1>
138 </td>
139 </tr>
140 <tr style="height:100%;">
141 <td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6">
142
143
144                         
145                         }
146
147                         
148                         set form_address [formfetch form_address]
149                         set form_length [formfetch form_length]
150                         set form_type [formfetch form_type]
151                         set form_action [formfetch form_action]
152                         set form_value [formfetch form_value]
153                         
154                         if {[string compare $form_length ""]==0} {
155                                 set form_length 0
156                         }  
157                         if {$form_length<=0} {
158                                 set form_length 0x80
159                         } 
160                         if {$form_length>0x1000} {
161                                 set form_length 0x1000
162                         } 
163                         
164                         if {[string compare $form_type ""]==0} {
165                                 set form_type mdw
166                         }
167                         
168                         if {[string compare $form_type "mdw"]==0} {
169                                 set wordsize 4
170                                 set modify_cmd mww 
171                         }
172                         if {[string compare $form_type "mdh"]==0} {
173                                 set wordsize 2
174                                 set modify_cmd mwh 
175                         }
176                         if {[string compare $form_type "mdb"]==0} {
177                                 set wordsize 1
178                                 set modify_cmd mwb 
179                         }
180                         
181                         
182                         
183                         
184                         if {[string compare $form_address ""]!=0} {
185                                 if {[string compare $form_action "Previous"]==0} {
186                                         # Kludge! Work around problems parsing hex in Jim Tcl expressions
187                                         incr form_address ; set form_address [expr $form_address-1]
188                                         if {$form_address-$form_length>0} {
189                                                 set form_address "0x[tohex [expr $form_address-$form_length]]"
190                                         } else {
191                                                 set form_address "0x0"
192                                         }
193                                 }  
194                                 if {[string compare $form_action "Next"]==0} {
195                                         # Kludge! Work around problems parsing hex in Jim Tcl expressions
196                                         incr form_address ; set form_address [expr $form_address-1]
197                                         set form_address "0x[tohex [expr $form_address+$form_length]]"
198                                 }  
199                                 if {[string compare $form_action "Modify"]==0} {
200                                         append console [capture_catch "$modify_cmd $form_address $form_value"]
201                                 }  
202                                 if {[string compare $form_action "Fill"]==0} {
203                                         append console [capture_catch "$modify_cmd $form_address $form_value $form_length"]
204                                 }  
205                         }
206                         
207                         
208                         
209 append buffer {
210                         
211                         <form action="browsemem.tcl" method="post"> 
212                                 <table>
213                                 <tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="}
214 append buffer $form_address
215 append buffer {"></td></tr>
216                                 <tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="}
217 append buffer "0x[tohex $form_length]"
218 append buffer {"></td></tr>
219                                 <tr><td class="formtext">Value</td><td><input type="text" name="form_value" value="}
220 append buffer $form_value
221 append buffer {"></td>
222                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Modify"></td>
223                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Fill"></td></tr>
224                                 <tr><td class="formtext">Type</td><td style="padding-top:1px;">
225                                 <select name="form_type">
226                                   <option 
227                                     }
228 if {[string compare $form_type "mdb"]==0} { append buffer {selected="selected"} }  
229 append buffer { value ="mdb">8 bit
230                                   </option>
231                                   <option 
232                                    }
233 if {[string compare $form_type "mdh"]==0} { append buffer {selected="selected"} }  
234 append buffer { value ="mdh">16 bit
235                                   </option>
236                                         <option
237                                            }
238 if {[string compare $form_type "mdw"]==0} { append buffer {selected="selected"} }  
239 append buffer {value ="mdw">32 bit
240                                         </option>
241                                 </select>
242                                 
243                                 </td></tr>
244                                 </table>
245                                 <table>
246                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>
247                                         <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>
248                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>
249                                 </table>
250                         
251                                 <table><tr>
252                                         <td><input type="submit" name="form_action" value="Refresh"></td>
253                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Previous" ></td>
254                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Next" ></td>
255                                 </tr></table>
256                                 <br>
257                                 
258                         </form>
259                         <p>
260                         <div class="fontbigger">Memory:</div><p>
261                         <code style="white-space: nowrap; font-size:11px;font:courier new;">
262                                 }
263
264                                 if {[string compare $form_address ""]!=0} {
265                                         append console [encode [capture_catch halt]]
266                                         append buffer [encode [capture_catch "$form_type $form_address [expr $form_length]"]]
267                                 } 
268                                 
269 append buffer {
270                         </code>
271
272
273                         
274
275                         
276                         </td>
277 </tr>
278 }
279
280                                                                         
281                                                                         set toggle_details [formfetch toggle_details]
282                                                                         if {[string length $toggle_details]==0} {
283                                                                                 set toggle_details 0
284                                                                         }
285                                                                         set show_details [load_var show_details]
286                                                                         if {[string length $show_details]==0} {
287                                                                                 set show_details 0
288                                                                         }
289                                                                         if {$toggle_details==1} {
290                                                                                 set show_details [expr 1-$show_details]
291                                                                                 save_var show_details $show_details
292                                                                         }
293                                                                         
294                                                                         if {[string length $console]!=0} {
295                                                                                 
296 append buffer {
297 <tr style="height:100%;">
298 <td style="height:100%;background-color:red;" colspan="6">
299 <table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray">
300 <td style="width:25px;">&nbsp;</td>
301 }
302
303                                                                                                                 if {$show_details==1} {
304                                                                                                                         append buffer <
305                                                                                                                         append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"}
306                                                                                                                         append buffer >
307                                                                                                                 } else {
308                                                                                                                         append buffer <
309                                                                                                                         append buffer {td style="background-image:url('menu_cuts/h_tab_free.png');width:110px;height:29px;background-repeat: no-repeat;background-position:top left;"}
310                                                                                                                         append buffer >
311                                                                                                                 }
312                                                                                                         
313 append buffer {
314 <a class="openocd" href="browsemem.tcl?toggle_details=1">
315 }
316
317                                                                                                                         if {$show_details==1} {
318                                                                                                                                 append buffer "Hide details"
319                                                                                                                                 append buffer <br/>
320                                                                                                                         } else {
321                                                                                                                                 append buffer {<div style="position:relative;top:7px;text-align:center;">}
322                                                                                                                                 append buffer "Show details"
323                                                                                                                                 append buffer {</div>}
324                                                                                                                         }
325                                                                                                                         
326 append buffer {
327 </a>
328 }
329
330                                                                                                                         if {$show_details==1} {
331                                                                                                                                 append buffer $console
332                                                                                                                         }
333                                                                                                                 
334 append buffer {</td>}
335
336                                                                                                                 if {$show_details!=1} {
337                                                                                                                         append buffer {<td>&nbsp;</td>}
338                                                                                                                 }
339                                                                                                          
340 append buffer {
341 <td style="width:25px;">&nbsp;</td>
342 </table>
343 </td>
344 </tr>
345 }
346
347                                                                          }
348                                                                 
349 append buffer {
350 <tr>
351 <td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6">
352 <div style="width:500px;background-color:#ffffff;height:100%;">
353                                                                                         &nbsp;
354                                                                                 </div>
355 </td>
356 </tr>
357 </table>
358 </td>
359 <td style="width:6px;"/>
360 <td style="width:245px;height:100%">
361 <table style="padding:0px;border-collapse:collapse;height:100%;">
362 <tr>
363 <td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;">
364 <div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray">
365                                                                                     Documentation
366                                                                                  </div>
367 </td>
368 <td width="40px">
369                                                                                 &nbsp;
370                                                                         </td>
371 <td/>
372 </tr>
373 <tr>
374 <td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/>
375 </tr>
376 <tr>
377 <td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3">
378 <a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a>
379 <br/>
380 </td>
381 </tr>
382 <tr>
383 <td style="background-color:#d8d7d7;height:15px;" colspan="3"/>
384 </tr>
385 <tr>
386 <td colspan="3">
387 <table style="padding:0px;border-collapse:collapse;">
388 <td style="background-color:#d8d7d7;width:10px;height:1px"/>
389 <td style="background-color:#999999;width:225px; height:1px;"/>
390 <td style="background-color:#d8d7d7;width:10px;height:1px"/>
391 </table>
392 </td>
393 </tr>
394 <tr>
395 <td style="background-color:#d8d7d7;height:15px;" colspan="3"/>
396 </tr>
397 <tr style="height:100%;">
398 <td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray">
399                                 
400                                 <p>Browse and edit target memory.<br>
401                                    Length is in bytes, maximum 4096 bytes.</p> 
402                                 <p>An error message is shown when trying to browse or edit memory which cases a CPU fault.</p>
403                                 <p>CPU will be halted if required.</p>
404                                 <p><b>Modify</b> - Will modify only one byte, half-word or word starting at Address.</p>
405                                 <p><b>Fill</b> - Will fill the specified region with the specified value.</p>
406                                 <p><b>Refresh</b> - Display the content of the specified memory area.</p>
407                                         
408                         </td>
409 </tr>
410 <tr>
411 <td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3">
412                                                                                 &nbsp;
413                                                                         </td>
414 </tr>
415 </table>
416 </td>
417 </tr>
418 </table>
419 </body>
420 </html>
421
422                 
423
424
425                 
426
427
428
429                 
430
431                 
432                 
433                 
434                 
435
436
437                 
438
439
440                 
441
442
443                 
444
445
446                 
447         
448         
449 }
450
451 start_chunked "html"
452 write_chunked $buffer
453 end_chunked
454