httpd wip
[fw/openocd] / src / server / httpd / menu.xml
1 <?xml version = "1.0" encoding="iso-8859-1" standalone="yes"?>\r
2 <?xml-stylesheet type="text/xsl" href="plaintext.xsl"?>\r
3 <website>\r
4         \r
5         <language lang="Norsk">\r
6 \r
7                 <page lang="eng">\r
8                         <outfile>index.tcl</outfile>\r
9                         <menutext>Config Target</menutext> \r
10                         <menulink>index.tcl</menulink> \r
11                         <pageheading>OpenOCD debugger</pageheading>\r
12                         <level2parent>index.tcl</level2parent>\r
13                         <level2menu href="index.tcl" title="Target Status" titlestyle="color:#4e6627;">\r
14                         </level2menu>\r
15                         <!-- \r
16                         <level2menu href="terminal.tcl" title="UART forwarding" titlestyle="color:#4e6627;">\r
17                         </level2menu>\r
18                          -->\r
19                 \r
20                         <pagetext>\r
21                         <markup_code><![CDATA[\r
22 \r
23                         \r
24                         <table>\r
25                                 <tr><td style="height:10px;width:535px;">&nbsp</td></tr>\r
26                                 <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
27                                 <tr><td style="height:5px;width:535px;">&nbsp</td></tr>\r
28                         </table>\r
29 \r
30                         <H1>Target Status</H1>\r
31 \r
32                         <table>\r
33                                 <tr>\r
34                                         <td class="fontbigger">\r
35                                                 <tcl>\r
36                                                         set form_address [formfetch form_address]\r
37                                                         set form_action [formfetch form_action]\r
38                                                         \r
39                                                         if {[string compare $form_action "Halt"]==0} {\r
40                                                                 append console [encode [capture_catch "halt"]]\r
41                                                         }\r
42                                                         if {[string compare $form_action "Resume"]==0} {\r
43                                                                 append console [encode [capture_catch "resume"]]\r
44                                                         }\r
45                                                           \r
46                                                         if {[string compare $form_action "Reset and run"]==0} {\r
47                                                                 append console [encode [capture_catch "reset run"]]\r
48                                                         }\r
49                                                         \r
50                                                         if {[string compare $form_action "Power on"]==0} {\r
51                                                                 append console [encode [capture_catch "power on"]]\r
52                                                         }\r
53                                                         if {[string compare $form_action "Power off"]==0} {\r
54                                                                 append console [encode [capture_catch "power off"]]\r
55                                                         }\r
56                                                 </tcl>\r
57                                         \r
58                                                 <tcl>append console [encode [capture_catch poll]]</tcl>\r
59                                         </td>\r
60                                 </tr>\r
61                         </table>\r
62 \r
63                         <form action="index.tcl" method="post"> \r
64                                 <table><tr>\r
65                                         <td><input type="submit" name="form_action" value="Reset and run"></td>\r
66                                         <td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Halt"></td>\r
67                                         <td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Resume"></td>\r
68                                         <td style="width:50px;"></td><td><input type="submit" name="form_action" value="Power on"></td>\r
69                                         <td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Power off"></td>\r
70                                 </tr></table>\r
71 \r
72                                 <br>                                            \r
73                                 <br>                                            \r
74                                                                                 \r
75                                 <p>\r
76                         </form>\r
77                         ]]></markup_code>\r
78                         <right_column>\r
79                                 <markup_code><![CDATA[\r
80                                         <p>Target status shows that status of the connected target. </p> \r
81                                         <p><b>Current target</b> - selected target configuration. <br>\r
82                                         <p><b>Startup</b> - whether or not the target script ran to completion. Note\r
83                                         that even if the target is disconnected, powered down or unresponsive, the\r
84                                         startup script will still run to completion. Startup - OK does not mean\r
85                                         that the target is fully operational, simply that the configuration script\r
86                                         did not contain syntax errors for instance. \r
87                                         See log for details. <br>\r
88                                         <p><b>Target power</b> - Detects power on target. <br>\r
89                                         If the JTAG cable is not connected, or the target has no power, then no target power will be detected.</p>\r
90                                         <p>Type "help power" in telnet for command to control power relay.</p>\r
91                                 ]]></markup_code>\r
92                         </right_column>\r
93                         \r
94                         </pagetext>\r
95                 </page>\r
96                 \r
97                 \r
98 \r
99 \r
100                 <page lang="eng">\r
101                         <outfile>targets.tcl</outfile>\r
102                         <level2parent>documentation.tcl</level2parent>\r
103                         <pageheading>Target config quick start guide</pageheading>\r
104                         <pagetext>\r
105                                 <markup_code><![CDATA[\r
106                                 \r
107                                 A target needs an openocd.cfg file. This config file sets up\r
108                                 the CPU, flash and reset init script. Either OpenOCD ships with an\r
109                                 openocd.cfg file for your target or you need to take an existing\r
110                                 config file and modify it for your needs.\r
111                                 <p> \r
112                                 The reset init script is crucial. It will set up e.g. MMU, chip\r
113                                 select registers, etc. after a reset. The init.cfg (reset init script)\r
114                                 is embedded into the openocd.cfg file in the sampls OpenOCD provides.\r
115                                 <p>\r
116                                 Writing an openocd.cfg from scratch is a non-trivial exercise, but\r
117                                 fortunally it only has to be done once for a target and afterwards it\r
118                                 rarely if ever needs to be changed.\r
119                                 \r
120                                 \r
121                                 ]]></markup_code>\r
122                                 <right_column>\r
123                                         \r
124                                           Quick start guide on how to configure a target.\r
125                                 </right_column>\r
126                         </pagetext>\r
127                         \r
128                         \r
129                 </page>\r
130 \r
131 \r
132 \r
133                 \r
134                 <page lang="eng">\r
135                         <outfile>flashinfo.tcl</outfile>\r
136                         <menutext>Flash</menutext> \r
137                         <menulink>flashinfo.tcl</menulink> \r
138                         <pageheading>Flash Information</pageheading>\r
139                         <level2parent>flashinfo.tcl</level2parent>\r
140                         <level2menu href="flashinfo.tcl" title="Info" titlestyle="color:#4e6627;">\r
141                         </level2menu>\r
142                         <level2menu href="erase.tcl" title="Erase" titlestyle="color:#4e6627;">\r
143                         </level2menu>\r
144                         <level2menu href="flash.tcl" title="Program / Verify" titlestyle="color:#4e6627;">\r
145                         </level2menu>\r
146                         <level2menu href="production.tcl" title="Production" titlestyle="color:#4e6627;">\r
147                         </level2menu>\r
148 \r
149                         <pagetext>\r
150                         <markup_code><![CDATA[\r
151 \r
152                         <div style="font-size:14px;">Configured flash banks:</div>\r
153                         <p>                     \r
154                         <code style="white-space: nowrap;">\r
155                                 <tcl>\r
156                                         set flash_return [ocd_flash_banks]\r
157                                         if {[llength $flash_return]!=0} {\r
158                                                 append buffer [encode [flash banks]]\r
159                                         \r
160                                                 set form_action [formfetch form_action]\r
161                                                 if {[string compare $form_action "Reset CPU and probe flash"]==0} {\r
162                                                         append console [encode [capture_catch "reset init"]]\r
163                                                         append buffer [encode [capture_catch "flash probe 0"]]\r
164                                                         append buffer [encode [capture_catch "flash info 0"]]\r
165                                                 }\r
166                                         } else {\r
167                                                 append buffer "No flash bank configured."\r
168                                         }\r
169                                 </tcl>\r
170                                 <p>\r
171                                 <form action="flashinfo.tcl" method="post"> \r
172                                         <input type="submit" name="form_action" value="Reset CPU and probe flash">\r
173                                 </form>\r
174                                 <tcl>\r
175                                         foreach a [ocd_flash_banks] {\r
176                                                 append buffer "Flash bank at [format "0x%08x size 0x%08x" $a(base) $a(size)]: "\r
177                                                 </tcl>\r
178                                                         <form action="downloadmem.tcl" method="post"> \r
179                                                                 <input type="hidden" name="form_address" value="<tcl>append buffer [format "0x%08x" $a(base)]</tcl>">\r
180                                                                 <input type="hidden" name="form_length" value="<tcl>append buffer [format "0x%08x" $a(size)]</tcl>">\r
181                 \r
182                                                                 <input type="submit" value="Download" name="form_action">\r
183                                                                 <br>\r
184                                                         </form>\r
185                                                 <tcl>\r
186                                         }\r
187                                 </tcl>\r
188                         </code>\r
189                         \r
190 \r
191                         ]]></markup_code>\r
192                         <right_column>\r
193                                 <![CDATA[\r
194                                 <p>Here you will find information about the flash chips that you have\r
195                                 in your configuration.<p/>\r
196                                 <p><b>Reset CPU and probe flash</b> - This will reset the CPU and show\r
197                                 you more detailed information about your flash. This includes information about\r
198                                 the different sectors in the flash, and the flash driver used.</p>\r
199                                 ]]>\r
200                         </right_column>\r
201                         \r
202                         </pagetext>\r
203                 </page>\r
204 \r
205                 <page lang="eng">\r
206                         <outfile>flash.tcl</outfile>\r
207                         <level2parent>flashinfo.tcl</level2parent>\r
208                         <pageheading>Program / Verify Flash</pageheading>\r
209                         <pagetext>\r
210                         <markup_code><![CDATA[\r
211                         \r
212                         <tcl>\r
213                         \r
214                         set form_offset [formfetch form_offset]\r
215                         set form_action [formfetch form_action]\r
216                         set form_type [formfetch form_type]\r
217                         \r
218                         \r
219                         set post ""\r
220                         catch {set post $post_data} err\r
221                         \r
222                         if {[string compare $form_offset ""]==0} {\r
223                                 set form_offset 0\r
224                         }\r
225                         if {[string compare $form_type ""]==0} {\r
226                                 set form_type ""\r
227                         }\r
228                         \r
229                         </tcl><code style="white-space: nowrap;"><tcl>\r
230                         \r
231                         set data ""\r
232                         append buffer {<form enctype="multipart/form-data" action="flash.tcl" method="post">}\r
233                         \r
234                         set action_reset [expr {[string length $form_action]!=0}] \r
235                         set action_flash [expr {[string compare $form_action "Flash"]==0 || [string compare $form_action "Flash and verify"]==0}] \r
236                         set action_verify [expr {[string compare $form_action "Verify"]==0 || [string compare $form_action "Flash and verify"]==0}]\r
237                         \r
238                         if {$action_reset} {\r
239                                 append console [encode [capture_catch "reset init"]]\r
240                         }\r
241                         </tcl>\r
242                         </code><tcl>\r
243                                 \r
244                         append buffer {<table>}\r
245                         append buffer {<tr><td class="formtext">File</td><td><input type="file" name="form_filecontent"></td></tr>}\r
246                         append buffer "<tr><td class=\"formtext\" >Offset</td><td><input type=\"text\" name=\"form_offset\" value=\"$form_offset\"></td></tr>"\r
247                         \r
248                         </tcl>\r
249                         <tr><td class="formtext" style="padding-top:1px;">Type</td><td>\r
250                         <select name="form_type">\r
251                                         <option\r
252                            <tcl>if {[string compare $form_type ""]==0} { append buffer {selected="selected"} }  </tcl>\r
253                                         value ="">auto</option>\r
254                           <option \r
255                            <tcl>if {[string compare $form_type "elf"]==0} { append buffer {selected="selected"} }  </tcl>\r
256                           value ="elf">elf</option>\r
257                           <option \r
258                            <tcl>if {[string compare $form_type "bin"]==0} { append buffer {selected="selected"} }  </tcl>\r
259                           value ="bin">binary</option>\r
260                           <option \r
261                            <tcl>if {[string compare $form_type "ihex"]==0} { append buffer {selected="selected"} }  </tcl>\r
262                           value ="ihex">ihex</option>\r
263                           <!-- broken <option value ="s19">s19</option> -->\r
264                         </select>\r
265                         </td>\r
266                         \r
267                         </tr>\r
268                         \r
269                         \r
270                         </table>\r
271                         \r
272                                 <table>\r
273                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
274                                         <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
275                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
276                                 </table>\r
277                         \r
278                         <table><tr>\r
279                                 <td><input type="submit" name="form_action" value="Flash" ></td>\r
280                                 <td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Flash and verify" ></td>\r
281                                 <td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Verify" ></td>\r
282                         </tr></table>\r
283                 \r
284                         <p>\r
285                         <tcl>\r
286                         \r
287                         if {$action_flash||$action_verify} {\r
288                                 catch {writeform form_filecontent $upload_filename} result\r
289                                 append console [encode $result]\r
290                         }\r
291                         append buffer "<br>"\r
292                         if {$action_flash} {\r
293                                 append console [encode [capture_catch "halt"]]\r
294                                 append buffer "<b>"\r
295                                 if {[catch {capture_catch {eval "flash write_image erase $upload_filename $form_offset $form_type"}} result]} {\r
296                                         append buffer "Flash write failed<br>"\r
297                                         append console [encode $result]\r
298                                 } else {\r
299                                         append buffer [encode $result]\r
300                                         append buffer "Flash write succeed<br>"\r
301                                 }\r
302                                 append buffer "</b>"\r
303                         }\r
304                         if {$action_verify} {\r
305                                 append console [encode [capture_catch "halt"]]\r
306                                 append buffer "<b>"\r
307                                 if {[catch {capture_catch {eval "verify_image $upload_filename $form_offset $form_type"}} result]} {\r
308                                         append buffer "Verify failed<br>"\r
309                                         append console [encode $result]\r
310                                 } else {\r
311                                         append buffer [encode $result]\r
312                                         append buffer "Verify succeed<br>"\r
313                                 }\r
314                                 append buffer "</b>"\r
315                         }\r
316                         </tcl>          \r
317                                 \r
318                         </form>\r
319                         \r
320                         ]]></markup_code>\r
321                         \r
322                         <right_column>\r
323                                 <![CDATA[\r
324                                 <p>Program and/or verify the flash on your target.</p>\r
325                                 <p><b>Flash</b> - Halt CPU, automatically erase flash if required and program flash with image.</p>\r
326                                 <p><b>Flash and verify</b> - Programs the flash and verifies the programmed flash content is correct.</p>\r
327                                 <p><b>Verify</b> - Halt CPU and verify image in flash or RAM.</p>\r
328                                 <p><b>Offset</b> - This value is added to the address of the image.<br> \r
329                                         Binary images start at address 0 by default, whereas elf and ihex have addresses encoded into the image.<br> \r
330                                         Typically 0 for elf/ihex and the address to     write the image to for binary files.</p>\r
331                                         ]]> \r
332                         </right_column>\r
333                         \r
334                         \r
335                         </pagetext>\r
336                         \r
337                 </page>\r
338 \r
339 \r
340 \r
341 \r
342                 <page lang="eng">\r
343                         <outfile>production.tcl</outfile>\r
344                         <level2parent>flashinfo.tcl</level2parent>\r
345                         <pageheading>Production</pageheading>\r
346                         <pagetext>\r
347                         <markup_code><![CDATA[\r
348                         <tcl>\r
349                                 set form_action [formfetch form_action]\r
350                                 set form_serialnumber [formfetch form_serialnumber]\r
351                                 append buffer [production_info]\r
352                         </tcl>\r
353                                 \r
354                         <form enctype="multipart/form-data" action="production.tcl" method="post">\r
355                                 <code style="white-space: nowrap;">\r
356                                         <tcl>   \r
357                                                 if {[string compare $form_action "Upload firmware"]==0} {\r
358                                                         set wrotedata [catch {writeform form_filecontent $upload_filename} result]  \r
359                                                         append buffer [encode $result]\r
360                                                         if {$wrotedata==0} {\r
361                                                                 append buffer "<br>Running production procedure<p>"\r
362                                                                 append buffer "<br>Reset and init: <br>"\r
363                                                                 \r
364                                                                 append console [encode [capture_catch {catch "production $upload_filename $form_serialnumber"}]]\r
365                                                         }\r
366                                                 }\r
367                                                 if {[string compare $form_action "Test"]==0} {\r
368                                                         append buffer "<br>Running production test. Output from first 10 seconds printed below. <p>"\r
369                                                         \r
370                                                         append console [encode [capture_catch {catch production_test}]]\r
371                                                 }\r
372                                                 if {[string compare $form_action "Power on"]==0} {\r
373                                                         append console [encode [capture_catch "power on"]]\r
374                                                 }\r
375                                                 if {[string compare $form_action "Power off"]==0} {\r
376                                                         append console [encode [capture_catch "power off"]]\r
377                                                 }\r
378                                         </tcl>\r
379                                 </code>\r
380                                 <tcl>\r
381                                         append buffer {<p class="formtext">Firmware file(raw binary) <input type="file" name="form_filecontent"><p>}\r
382                                         append buffer {<p class="formtext">Serial number <input type="text" name="form_serialnumber"><p>}\r
383                                 </tcl>\r
384                                 \r
385                                 <table>\r
386                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
387                                         <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
388                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
389                                 </table>\r
390                         \r
391                                 <table><tr>\r
392                                         <td><input type="submit" name="form_action" value="Upload firmware" ></td>\r
393                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Test"></td>\r
394                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Power on"></td>\r
395                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Power off">\r
396                                 </tr></table>\r
397                         </form>\r
398                         \r
399                         ]]></markup_code>\r
400                         \r
401                         <right_column>\r
402                                 <![CDATA[\r
403                                 The target script can implement the "production", "production_info" and "production_test" tcl proc's. These procedures\r
404                                 are used on this page. There are default implementations that do nothing.\r
405                                 \r
406                                 <p><b>Upload firmware</b> - Power cycle target, reset target and program raw binary file to flash bank 0, offset 0 and verify flash programming. Leave target powered on.</p>\r
407                                 <p><b>Test</b> -  Power up target, run 10 second target test. Output is provided via the DCC output channel. </p>\r
408                                 <p><b>Power on</b> - Power on target.</p>\r
409                                 <p><b>Power off</b> - Power off target.</p>\r
410                                 <p><b>Serial number</b> - A target script can use this string in the production procedure. Type "help production" for more info.</p>\r
411                                         ]]> \r
412                         </right_column>\r
413                         \r
414                         \r
415                         </pagetext>\r
416                         \r
417                 </page>\r
418 \r
419 \r
420 \r
421                 <page lang="eng">\r
422                         <outfile>erase.tcl</outfile>\r
423                         <menulink>erase.tcl</menulink> \r
424                         <pageheading>Erase Flash</pageheading>\r
425                         <level2parent>flashinfo.tcl</level2parent>\r
426                         <pagetext>\r
427                         <markup_code><![CDATA[\r
428 \r
429 \r
430                         \r
431                         <tcl>\r
432                         \r
433                         set form_address [formfetch form_address]\r
434                         set form_length [formfetch form_length]\r
435                         set form_action [formfetch form_action]\r
436                         \r
437                         if {[string compare $form_length ""]==0} {\r
438                                 set form_length 0x10000\r
439                         }  \r
440                         if {[string compare $form_address ""]==0} {\r
441                                 if {[catch {[first_flash_base]} result]==0} {\r
442                                                 set form_address "0x[tohex $result]"\r
443                                         }                       \r
444                         }  \r
445                         \r
446                         \r
447                         if {[string compare $form_address ""]!=0} {\r
448                                 if {[string compare $form_action "Erase"]==0} {\r
449                                                 append buffer "<code style=\"white-space: nowrap;\">"\r
450                                                 append console [encode [capture_catch {\r
451                                                 reset init\r
452                                                 flash erase_address $form_address $form_length}]]\r
453                                                 append buffer </code>\r
454                                 }  \r
455                         }\r
456                         \r
457                         \r
458                         </tcl>\r
459                         \r
460                         <form action="erase.tcl" method="post"> \r
461                                 <table>\r
462                                 <tr><td class="formtext" style="padding-right:10px;">Address</td><td><input type="text" name="form_address" value="<tcl>append buffer $form_address</tcl>"></td></tr>\r
463                                 <tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="<tcl>append buffer $form_length</tcl>"></td></tr>\r
464                                 </td></tr>\r
465                                 </table>\r
466                                 <table>\r
467                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
468                                         <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
469                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
470                                 </table>\r
471                         \r
472                                 <input type="submit" name="form_action" value="Erase"><br>\r
473                                 \r
474                                 \r
475                         </form>\r
476                         \r
477 \r
478                         \r
479                         ]]></markup_code>\r
480                         <right_column>\r
481                                 <![CDATA[\r
482                                 <p>Note that flash programming will erase flash if required.<p/>\r
483                                 <p>Reset and init CPU, then erase address range.</p>\r
484                                 <p>The length field is specified in number of bytes.</p>\r
485                                         ]]>\r
486                         </right_column>\r
487                         \r
488                         </pagetext>\r
489                 </page>\r
490 \r
491 \r
492                 <page lang="eng">\r
493                         <outfile>run.tcl</outfile>\r
494                         <menulink>run.tcl</menulink> \r
495                         <pageheading>Run program</pageheading>\r
496                         <level2parent>flashinfo.tcl</level2parent>\r
497                         <pagetext>\r
498                         <markup_code><![CDATA[\r
499 \r
500 \r
501                         \r
502 <tcl>\r
503 \r
504 set form_address [formfetch form_address]\r
505 set form_action [formfetch form_action]\r
506 \r
507 if {[string compare $form_action "Run from address"]==0} {\r
508         append console [encode [capture_catch "halt"]]\r
509         append console [encode [capture_catch "wait_halt"]]\r
510         append console [encode [capture_catch "resume $form_address"]]\r
511 }  \r
512 \r
513 if {[string compare $form_action "Halt"]==0} {\r
514         append console [encode [capture_catch "halt"]]\r
515         append console [encode [capture_catch "wait_halt"]]\r
516 }\r
517   \r
518 if {[string compare $form_action "Reset and run"]==0} {\r
519         append console [encode [capture_catch "reset run"]]\r
520 }\r
521   \r
522 if {[string compare $form_action "Reset and init"]==0} {\r
523         append console [encode [capture_catch "reset init"]]\r
524 }  \r
525 \r
526 append console [encode [capture_catch poll]]\r
527 \r
528 </tcl>\r
529 \r
530 <form action="run.tcl" method="post"> \r
531         <table>\r
532         <tr><td class="formtext" style="padding-right:10px;">Address</td><td><input type="text" name="form_address" value="<tcl>append buffer $form_address</tcl>"></td></tr>\r
533         </td></tr>\r
534         </table>\r
535         <table>\r
536                 <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
537                 <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
538                 <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
539         </table>\r
540         \r
541         <input type="submit" name="form_action" value="Reset and run"> <input type="submit" name="form_action" value="Run from address"> <input type="submit" name="form_action" value="Halt"><input type="submit" name="form_action" value="Reset and init"><br>\r
542 </form>\r
543                         \r
544 \r
545                         \r
546                         ]]></markup_code>\r
547                         <right_column>\r
548                                 <![CDATA[\r
549                                 <p>Reset and run - reset CPU and let it run.</p>\r
550                                 <p>Halt - halt CPU.</p>\r
551                                 <p>Run from address - halt CPU and resume from address. Default is resume from current address.</p>\r
552                                 <p>Reset and init - reset CPU and run init script.</p>\r
553                                 ]]>\r
554                         </right_column>\r
555                         \r
556                         </pagetext>\r
557                 </page>\r
558 \r
559 \r
560                 <page lang="eng">\r
561                         <outfile>browsemem.tcl</outfile>\r
562                         <menutext>Memory</menutext> \r
563                         <menulink>browsemem.tcl</menulink> \r
564                         <pageheading>Browse / Edit Memory</pageheading>\r
565                         <level2parent>browsemem.tcl</level2parent>\r
566                         <level2menu href="browsemem.tcl" title="Browse / Edit" titlestyle="color:#4e6627;">\r
567                         <![CDATA[\r
568                                 Browse and edit memory.\r
569                         ]]>\r
570                         </level2menu>\r
571                         <level2menu href="downloadmem.tcl" title="Download" titlestyle="color:#4e6627;">\r
572                         <![CDATA[\r
573                             Copy memory range to developer machine\r
574                         ]]>\r
575                         </level2menu>\r
576                         \r
577                         <pagetext>\r
578                         <markup_code><![CDATA[\r
579 \r
580 \r
581                         \r
582                         <tcl>\r
583                         \r
584                         set form_address [formfetch form_address]\r
585                         set form_length [formfetch form_length]\r
586                         set form_type [formfetch form_type]\r
587                         set form_action [formfetch form_action]\r
588                         set form_value [formfetch form_value]\r
589                         \r
590                         if {[string compare $form_length ""]==0} {\r
591                                 set form_length 0\r
592                         }  \r
593                         if {$form_length<=0} {\r
594                                 set form_length 0x80\r
595                         } \r
596                         if {$form_length>0x1000} {\r
597                                 set form_length 0x1000\r
598                         } \r
599                         \r
600                         if {[string compare $form_type ""]==0} {\r
601                                 set form_type mdw\r
602                         }\r
603                         \r
604                         if {[string compare $form_type "mdw"]==0} {\r
605                                 set wordsize 4\r
606                                 set modify_cmd mww \r
607                         }\r
608                         if {[string compare $form_type "mdh"]==0} {\r
609                                 set wordsize 2\r
610                                 set modify_cmd mwh \r
611                         }\r
612                         if {[string compare $form_type "mdb"]==0} {\r
613                                 set wordsize 1\r
614                                 set modify_cmd mwb \r
615                         }\r
616                         \r
617                         \r
618                         \r
619                         \r
620                         if {[string compare $form_address ""]!=0} {\r
621                                 if {[string compare $form_action "Previous"]==0} {\r
622                                         # Kludge! Work around problems parsing hex in Jim Tcl expressions\r
623                                         incr form_address ; set form_address [expr $form_address-1]\r
624                                         if {$form_address-$form_length>0} {\r
625                                                 set form_address "0x[tohex [expr $form_address-$form_length]]"\r
626                                         } else {\r
627                                                 set form_address "0x0"\r
628                                         }\r
629                                 }  \r
630                                 if {[string compare $form_action "Next"]==0} {\r
631                                         # Kludge! Work around problems parsing hex in Jim Tcl expressions\r
632                                         incr form_address ; set form_address [expr $form_address-1]\r
633                                         set form_address "0x[tohex [expr $form_address+$form_length]]"\r
634                                 }  \r
635                                 if {[string compare $form_action "Modify"]==0} {\r
636                                         append console [capture_catch "$modify_cmd $form_address $form_value"]\r
637                                 }  \r
638                                 if {[string compare $form_action "Fill"]==0} {\r
639                                         append console [capture_catch "$modify_cmd $form_address $form_value $form_length"]\r
640                                 }  \r
641                         }\r
642                         \r
643                         \r
644                         </tcl>\r
645                         \r
646                         <form action="browsemem.tcl" method="post"> \r
647                                 <table>\r
648                                 <tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="<tcl>append buffer $form_address</tcl>"></td></tr>\r
649                                 <tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="<tcl>append buffer "0x[tohex $form_length]"</tcl>"></td></tr>\r
650                                 <tr><td class="formtext">Value</td><td><input type="text" name="form_value" value="<tcl>append buffer $form_value</tcl>"></td>\r
651                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Modify"></td>\r
652                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Fill"></td></tr>\r
653                                 <tr><td class="formtext">Type</td><td style="padding-top:1px;">\r
654                                 <select name="form_type">\r
655                                   <option \r
656                                     <tcl>if {[string compare $form_type "mdb"]==0} { append buffer {selected="selected"} }  </tcl> value ="mdb">8 bit\r
657                                   </option>\r
658                                   <option \r
659                                    <tcl>if {[string compare $form_type "mdh"]==0} { append buffer {selected="selected"} }  </tcl> value ="mdh">16 bit\r
660                                   </option>\r
661                                         <option\r
662                                            <tcl>if {[string compare $form_type "mdw"]==0} { append buffer {selected="selected"} }  </tcl>value ="mdw">32 bit\r
663                                         </option>\r
664                                 </select>\r
665                                 \r
666                                 </td></tr>\r
667                                 </table>\r
668                                 <table>\r
669                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
670                                         <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
671                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
672                                 </table>\r
673                         \r
674                                 <table><tr>\r
675                                         <td><input type="submit" name="form_action" value="Refresh"></td>\r
676                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Previous" ></td>\r
677                                         <td class="buttonspacesmall">&nbsp</td><td><input type="submit" name="form_action" value="Next" ></td>\r
678                                 </tr></table>\r
679                                 <br>\r
680                                 \r
681                         </form>\r
682                         <p>\r
683                         <div class="fontbigger">Memory:</div><p>\r
684                         <code style="white-space: nowrap; font-size:11px;font:courier new;">\r
685                                 <tcl>\r
686                                 if {[string compare $form_address ""]!=0} {\r
687                                         append console [encode [capture_catch halt]]\r
688                                         append buffer [encode [capture_catch "$form_type $form_address [expr $form_length]"]]\r
689                                 } \r
690                                 </tcl>\r
691                         </code>\r
692 \r
693 \r
694                         \r
695 \r
696                         \r
697                         ]]></markup_code>\r
698                         <right_column>\r
699                                 <![CDATA[\r
700                                 <p>Browse and edit target memory.<br>\r
701                                    Length is in bytes, maximum 4096 bytes.</p> \r
702                                 <p>An error message is shown when trying to browse or edit memory which cases a CPU fault.</p>\r
703                                 <p>CPU will be halted if required.</p>\r
704                                 <p><b>Modify</b> - Will modify only one byte, half-word or word starting at Address.</p>\r
705                                 <p><b>Fill</b> - Will fill the specified region with the specified value.</p>\r
706                                 <p><b>Refresh</b> - Display the content of the specified memory area.</p>\r
707                                         ]]>\r
708                         </right_column>\r
709                         \r
710                         </pagetext>\r
711                 </page>\r
712 \r
713                 \r
714 \r
715 \r
716                 <page lang="eng">\r
717                         <outfile>downloadmem.tcl</outfile>\r
718                         <level2parent>browsemem.tcl</level2parent>\r
719                         <pageheading>Download Memory Range</pageheading>\r
720                         <pagetext>\r
721                         <markup_code><![CDATA[\r
722                         <tcl>\r
723                                 set form_address [formfetch form_address]\r
724                                 set form_length [formfetch form_length]\r
725                                 set form_action [formfetch form_action]\r
726                         </tcl>                  \r
727                         <form action="downloadmem.tcl" method="post"> \r
728                                 <table>\r
729                                 <tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="<tcl>append buffer $form_address</tcl>"></td></tr>\r
730                                 <tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="<tcl>append buffer $form_length</tcl>"></td></tr>\r
731                                 </td></tr>\r
732                                 </table>\r
733 \r
734                                 <table>\r
735                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
736                                         <tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr>\r
737                                         <tr><td style="height:15px;width:535px;">&nbsp</td></tr>\r
738                                 </table>\r
739                         \r
740                                 <input type="submit" value="Download" name="form_action">\r
741                                 \r
742                                 \r
743                         </form>\r
744                         <tcl>\r
745                                 if {[string compare $form_action "Download"]==0} {\r
746                                         append console [encode [capture_catch "reset init"]]\r
747                                         append console [encode [capture_catch "dump_image /tmp/dump.bin $form_address $form_length"]]\r
748                                         </tcl>\r
749                                         <form action="../dump.bin" target="_blank"> \r
750                                                 <input type="submit" name="form_action" value="Save downloaded memory">\r
751                                         </form>\r
752                                         <tcl> \r
753                                 }\r
754                                 \r
755                         </tcl>\r
756 \r
757 \r
758                         \r
759                         ]]></markup_code>\r
760                         <right_column>\r
761                                 <![CDATA[       \r
762                                 Download memory from target. <br>\r
763                                 <b>Note</b> that download memory can take\r
764                                 a long time(potentially minutes for megabytes at low JTAG clk speeds).\r
765                                 <p/>\r
766                                 Once the memory is downloaded a link is available on the page to download\r
767                                 the file to your PC.\r
768                                 ]]>\r
769                         </right_column>\r
770                         </pagetext>\r
771                         \r
772                 </page>\r
773 \r
774 \r
775 \r
776                 <page lang="eng">\r
777                         <outfile>openocd.tcl</outfile>\r
778                         <menutext>OpenOCD</menutext> \r
779                         <menulink>openocd.tcl</menulink> \r
780                         <pageheading>Run Command</pageheading>\r
781                         <level2parent>openocd.tcl</level2parent>\r
782                         <level2menu href="openocd.tcl" title="Run Command" titlestyle="color:#4e6627;">\r
783                         </level2menu>\r
784                         <level2menu href="guiupload.tcl" title="Upload File" titlestyle="color:#4e6627;">\r
785                         <![CDATA[\r
786                             Upload file\r
787                         ]]>\r
788                         </level2menu>\r
789                         \r
790                         <pagetext>\r
791                         <markup_code><![CDATA[\r
792 \r
793                         <tcl>\r
794                                 set form_command [formfetch form_command]\r
795 \r
796                                 set form_edittext ""\r
797                                 if {[string length $form_command]>0} {\r
798                                         set form_edittext [capture_catch {eval $form_command}]\r
799                                 }\r
800                                 \r
801                                 append buffer {<form action="openocd.tcl" method="post">} "\n"\r
802                                 append buffer {Command<br>}\r
803                                 append buffer {<textarea  style="overflow:auto;"  rows="5" cols="65" name="form_command" wrap="off">}\r
804                                 append buffer [to_textarea $form_command]\r
805                                 append buffer {</textarea><br>}\r
806                                 append buffer {<input type="submit" value="Run" name="form_action" ><br>}\r
807                                 append buffer {<textarea  style="overflow:auto;"  rows="21" cols="65" name="form_edittext" readonly=1 wrap="off">}\r
808                                 append buffer [to_textarea $form_edittext]\r
809                                 append buffer {</textarea><br>}\r
810                                 \r
811                                 append buffer {</form>} "\n"\r
812                         \r
813                         </tcl>\r
814 \r
815                         ]]></markup_code>\r
816                         \r
817                         <right_column>\r
818                                 <![CDATA[\r
819                                 <p>Run tcl statement(s). Add "ocd_" prefix to OpenOCD commands otherwise\r
820                                 there will be no output, e.g. "reset init" use "ocd_reset init".\r
821                                 <p/>\r
822                                 <p><a href="/ram/log">Click here to download log</a>.</p>\r
823                                 <p>To download log you can also use commands like "wget http://<tcl>append buffer [ip]</tcl>/ram/log", or\r
824                                 point your web browser to said address.</p>\r
825                                 <p>\r
826                                 You can also execute tcl commands using curl from your developer PC:\r
827                                 </p>\r
828                                 <code>\r
829                                 curl --form form_command=ocd_version <tcl>append buffer [ip]</tcl>runtcl.tcl\r
830                                 </code>\r
831                                 \r
832                                 ]]>\r
833                         </right_column>\r
834                         </pagetext>\r
835                 </page>\r
836 \r
837                 \r
838                 \r
839                 <page lang="eng">\r
840                         <outfile>guiupload.tcl</outfile>\r
841                         <level2parent>openocd.tcl</level2parent>\r
842                         <pageheading>Upload File</pageheading>\r
843                         <pagetext>\r
844                         <markup_code><![CDATA[\r
845                         \r
846                         <tcl>\r
847                                 set form_filename [formfetch form_filename];\r
848                                 set form_action [formfetch form_action];\r
849                                 #set form_filecontent [formfetch form_filecontent];\r
850                                 \r
851                                 append buffer {<form enctype="multipart/form-data" action="guiupload.tcl" method="post">}\r
852                                 append buffer <br> \r
853                                 if {[string compare $form_action "Upload"]==0} {\r
854                                         if {[catch {writeform form_filecontent $form_filename} result]==0} {\r
855                                                 append buffer [encode $result]\r
856                                         } else {\r
857                                                 append buffer Wrote $form_filename\r
858                                         }\r
859                                 }\r
860                                 \r
861                                 append buffer {<table style="padding:0px;border-collapse:collapse;"><tr><td class="formtext">Filename on OpenOCD machine</td><td><input type="text" name="form_filename"></td></tr>}\r
862                                 append buffer {<td class="formtext">File to upload</td><td><input type="file" name="form_filecontent"></td></tr></table>}\r
863                                 append buffer {<table><tr><td style="height:15px;width:535px;">&nbsp</td></tr><tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr><tr><td style="height:15px;width:535px;">&nbsp</td></tr></table>}\r
864                                 append buffer {<input type="submit" name="form_action" value="Upload" ><br> }\r
865                                 append buffer {</form>}\r
866                         \r
867                         </tcl>\r
868                         \r
869                         ]]></markup_code>\r
870                         </pagetext>\r
871                         \r
872                 </page>\r
873                 \r
874 \r
875 \r
876                 <page lang="eng">\r
877                         <outfile>targets.tcl</outfile>\r
878                         <level2parent>documentation.tcl</level2parent>\r
879                         <pageheading>Target config quick start guide</pageheading>\r
880                         <pagetext>\r
881                                 <markup_code><![CDATA[\r
882                                 \r
883                                 A target needs an openocd.cfg file. This config file sets up\r
884                                 the CPU, flash and reset init script. Either OpenOCD ships with an\r
885                                 openocd.cfg file for your target or you need to take an existing\r
886                                 config file and modify it for your needs.\r
887                                 <p> \r
888                                 The reset init script is crucial. It will set up e.g. MMU, chip\r
889                                 select registers, etc. after a reset. The init.cfg (reset init script)\r
890                                 is embedded into the openocd.cfg file in the sampls OpenOCD provides.\r
891                                 <p>\r
892                                 Writing an openocd.cfg from scratch is a non-trivial exercise, but\r
893                                 fortunally it only has to be done once for a target and afterwards it\r
894                                 rarely if ever needs to be changed.\r
895                                 \r
896                                 \r
897                                 ]]></markup_code>\r
898                                 <right_column>\r
899                                         \r
900                                           Quick start guide on how to configure a target.\r
901                                 </right_column>\r
902                         </pagetext>\r
903                         \r
904                         \r
905                 </page>\r
906 \r
907 \r
908                 \r
909 \r
910 \r
911                 <page lang="eng">\r
912                         <menulink>index.tcl</menulink> \r
913                         <level2parent>index.tcl</level2parent>\r
914                         <outfile>terminal.tcl</outfile>\r
915                         <pageheading>UART forwarding</pageheading>\r
916                         <pagetext>\r
917                         <markup_code><![CDATA[\r
918                         <tcl>\r
919                                 set form_baudrate [formfetch form_baudrate]\r
920                                 if {[string length $form_baudrate]==0} {\r
921                                         set form_baudrate [ocd_uart]\r
922                                         set form_baudrate [string range $form_baudrate 0 [expr [string length $form_baudrate]-2]]\r
923                                 }\r
924                                 set form_action [formfetch form_action]\r
925                         </tcl>\r
926                         <form action="terminal.tcl" method="post">\r
927                                 Target baudrate: \r
928                                         <select name="form_baudrate">\r
929                                                 <tcl>\r
930                                                         foreach i {9600 19200 38400 57600 115200} { \r
931                                                         </tcl>\r
932                                                                 <option <tcl>if {[string compare $form_baudrate $i]==0} { append buffer {selected="selected"} }  </tcl>\r
933                                                                 value ="<tcl>append buffer $i</tcl>"><tcl>append buffer $i</tcl></option>\r
934                                                         <tcl>\r
935                                                         }\r
936                                                         </tcl>\r
937                                                 </select>\r
938 \r
939                                         <p>     \r
940                                         <input type="submit" name="form_action" value="Set baudrate" >\r
941                                 </form>                 \r
942                         <tcl>\r
943                                 if {[string compare $form_action "Set baudrate"]==0} {\r
944                                         append console [encode [ocd_uart $form_baudrate]]\r
945                                 }\r
946                         </tcl>\r
947                         \r
948                         <h2>Simple UART</h2>\r
949                         This terminal window is purely for illustrative purposes. Use telnet or a terminal program\r
950                         to talk to the target over TCP/IP for anything but trivial case of reading/writing a few\r
951                         lines of texts in simple tests.\r
952                         <p>\r
953                         ]]></markup_code>\r
954                         <right_column>\r
955                                 <![CDATA[\r
956                                 Serial port data to target is forwarded(both directions) in the simple terminal window\r
957                                 to the left. Alternatively you can <b>telnet <tcl>append buffer [ip]</tcl> 5555</b>\r
958                                 or connect via TCP/IP from e.g. HyperTerminal.\r
959                                 <p>\r
960                                 Type "help uart" in telnet for information on how to set uart speed for target. Normally\r
961                                 the uart speed is set from the target configuration script by adding an "uart N", where\r
962                                 N is the baudrate.\r
963                                 ]]>\r
964                         </right_column>\r
965                         </pagetext>\r
966                         \r
967                 </page>\r
968 \r
969 \r
970                 \r
971         </language>\r
972         \r
973 </website>