this never panned out and there are enough mistakes in the code that probably nobody used this. Use the tcl server and implement a standalone http app instead works fine. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>tags/v0.5.0-rc1
@@ -255,8 +255,6 @@ options may be available there: | |||||
--enable-ioutil Enable ioutil functions - useful for standalone | --enable-ioutil Enable ioutil functions - useful for standalone | ||||
OpenOCD implementations | OpenOCD implementations | ||||
--enable-httpd Enable builtin httpd server - useful for standalone | |||||
OpenOCD implementations | |||||
--disable-doxygen-html Disable building Doxygen manual as HTML. | --disable-doxygen-html Disable building Doxygen manual as HTML. | ||||
--enable-doxygen-pdf Enable building Doxygen manual as PDF. | --enable-doxygen-pdf Enable building Doxygen manual as PDF. | ||||
@@ -420,10 +420,6 @@ AC_ARG_ENABLE(ioutil, | |||||
AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]), | AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]), | ||||
[build_ioutil=$enableval], [build_ioutil=no]) | [build_ioutil=$enableval], [build_ioutil=no]) | ||||
AC_ARG_ENABLE(httpd, | |||||
AS_HELP_STRING([--enable-httpd], [Enable builtin httpd server - useful for standalone OpenOCD implementations]), | |||||
[build_httpd=$enableval], [build_httpd=no]) | |||||
case "${host_cpu}" in | case "${host_cpu}" in | ||||
arm*) | arm*) | ||||
AC_ARG_ENABLE(ep93xx, | AC_ARG_ENABLE(ep93xx, | ||||
@@ -1039,7 +1035,6 @@ AM_CONDITIONAL(ECOSBOARD, test $build_ecosboard = yes) | |||||
AM_CONDITIONAL(ZY1000, test $build_zy1000 = yes) | AM_CONDITIONAL(ZY1000, test $build_zy1000 = yes) | ||||
AM_CONDITIONAL(ZY1000_MASTER, test $build_zy1000_master = yes) | AM_CONDITIONAL(ZY1000_MASTER, test $build_zy1000_master = yes) | ||||
AM_CONDITIONAL(IOUTIL, test $build_ioutil = yes) | AM_CONDITIONAL(IOUTIL, test $build_ioutil = yes) | ||||
AM_CONDITIONAL(HTTPD, test $build_httpd = yes) | |||||
AM_CONDITIONAL(AT91RM9200, test $build_at91rm9200 = yes) | AM_CONDITIONAL(AT91RM9200, test $build_at91rm9200 = yes) | ||||
AM_CONDITIONAL(BITBANG, test $build_bitbang = yes) | AM_CONDITIONAL(BITBANG, test $build_bitbang = yes) | ||||
AM_CONDITIONAL(FT2232_LIBFTDI, test $build_ft2232_libftdi = yes) | AM_CONDITIONAL(FT2232_LIBFTDI, test $build_ft2232_libftdi = yes) | ||||
@@ -309,17 +309,3 @@ This section needs to be expanded. | |||||
*/ | */ | ||||
/** @page serverhttp OpenOCD HTTP Server API | |||||
Smoketest: | |||||
configure --enable-httpd --enable-dummy --enable-ioutil | |||||
openocd -s /usr/local/share/openocd -f httpd/httpd.tcl -f interface/dummy.cfg -f target/lpc2148.cfg | |||||
Navigate to: http://localhost:8888/ | |||||
*/ |
@@ -101,10 +101,6 @@ libopenocd_la_LIBADD = \ | |||||
$(top_builddir)/src/helper/libhelper.la \ | $(top_builddir)/src/helper/libhelper.la \ | ||||
$(FTDI2232LIB) $(MINGWLDADD) $(LIBUSB) | $(FTDI2232LIB) $(MINGWLDADD) $(LIBUSB) | ||||
if HTTPD | |||||
libopenocd_la_LIBADD += -lmicrohttpd | |||||
endif | |||||
STARTUP_TCL_SRCS = \ | STARTUP_TCL_SRCS = \ | ||||
$(srcdir)/helper/startup.tcl \ | $(srcdir)/helper/startup.tcl \ | ||||
$(srcdir)/jtag/startup.tcl \ | $(srcdir)/jtag/startup.tcl \ | ||||
@@ -42,7 +42,6 @@ | |||||
#include <server/server.h> | #include <server/server.h> | ||||
#include <server/gdb_server.h> | #include <server/gdb_server.h> | ||||
#include <server/httpd.h> | |||||
#ifdef HAVE_STRINGS_H | #ifdef HAVE_STRINGS_H | ||||
#include <strings.h> | #include <strings.h> | ||||
@@ -337,9 +336,6 @@ int openocd_main(int argc, char *argv[]) | |||||
if (ret != ERROR_OK) | if (ret != ERROR_OK) | ||||
return EXIT_FAILURE; | return EXIT_FAILURE; | ||||
if (httpd_start(cmd_ctx) != ERROR_OK) | |||||
return EXIT_FAILURE; | |||||
ret = server_init(cmd_ctx); | ret = server_init(cmd_ctx); | ||||
if (ERROR_OK != ret) | if (ERROR_OK != ret) | ||||
return EXIT_FAILURE; | return EXIT_FAILURE; | ||||
@@ -357,8 +353,6 @@ int openocd_main(int argc, char *argv[]) | |||||
server_quit(); | server_quit(); | ||||
httpd_stop(); | |||||
unregister_all_commands(cmd_ctx, NULL); | unregister_all_commands(cmd_ctx, NULL); | ||||
/* free commandline interface */ | /* free commandline interface */ | ||||
@@ -8,15 +8,9 @@ noinst_LTLIBRARIES = libserver.la | |||||
noinst_HEADERS = server.h telnet_server.h gdb_server.h | noinst_HEADERS = server.h telnet_server.h gdb_server.h | ||||
libserver_la_SOURCES = server.c telnet_server.c gdb_server.c | libserver_la_SOURCES = server.c telnet_server.c gdb_server.c | ||||
if HTTPD | |||||
libserver_la_SOURCES += httpd.c | |||||
else | |||||
libserver_la_SOURCES += httpd_stubs.c | |||||
if !ECOSBOARD | if !ECOSBOARD | ||||
libserver_la_SOURCES += server_stubs.c | libserver_la_SOURCES += server_stubs.c | ||||
endif | endif | ||||
endif | |||||
noinst_HEADERS += httpd.h | |||||
libserver_la_CFLAGS = | libserver_la_CFLAGS = | ||||
if IS_MINGW | if IS_MINGW | ||||
@@ -28,23 +22,7 @@ endif | |||||
noinst_HEADERS += tcl_server.h | noinst_HEADERS += tcl_server.h | ||||
libserver_la_SOURCES += tcl_server.c | libserver_la_SOURCES += tcl_server.c | ||||
if HTTPD | |||||
nobase_dist_pkgdata_DATA = \ | |||||
$(wildcard \ | |||||
$(srcdir)/httpd/*.tcl \ | |||||
$(srcdir)/httpd/*.css \ | |||||
$(srcdir)/httpd/menu_cuts/*.png \ | |||||
) | |||||
endif | |||||
EXTRA_DIST = \ | EXTRA_DIST = \ | ||||
startup.tcl \ | |||||
httpd/readme.txt \ | |||||
httpd/menu.xml \ | |||||
httpd/menu.xsl \ | |||||
httpd/build.sh \ | |||||
httpd/html2tcl.sh \ | |||||
httpd/Stylizer.java \ | |||||
httpd/Stylizer.class | |||||
startup.tcl | |||||
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in | MAINTAINERCLEANFILES = $(srcdir)/Makefile.in |
@@ -1,506 +0,0 @@ | |||||
/*************************************************************************** | |||||
* Copyright (C) 2007,2008,2009 Øyvind Harboe * | |||||
* oyvind.harboe@zylin.com * | |||||
* * | |||||
* This program is free software; you can redistribute it and/or modify * | |||||
* it under the terms of the GNU General Public License as published by * | |||||
* the Free Software Foundation; either version 2 of the License, or * | |||||
* (at your option) any later version. * | |||||
* * | |||||
* This program is distributed in the hope that it will be useful, * | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||||
* GNU General Public License for more details. * | |||||
* * | |||||
* You should have received a copy of the GNU General Public License * | |||||
* along with this program; if not, write to the * | |||||
* Free Software Foundation, Inc., * | |||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | |||||
***************************************************************************/ | |||||
/* some bits were copied from ahttpd which is under eCos license and | |||||
* copyright to FSF | |||||
*/ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include "config.h" | |||||
#endif | |||||
#include "telnet_server.h" | |||||
#include <target/target.h> | |||||
#include <microhttpd.h> | |||||
#include <pthread.h> | |||||
#include <signal.h> | |||||
#define PAGE_NOT_FOUND "<html><head><title > File not found</title></head><body > File not found</body></html>" | |||||
static pthread_mutex_t mutex; | |||||
void openocd_sleep_prelude(void) | |||||
{ | |||||
pthread_mutex_unlock(&mutex); | |||||
} | |||||
void openocd_sleep_postlude(void) | |||||
{ | |||||
pthread_mutex_lock(&mutex); | |||||
} | |||||
int loadFile(const char *name, void **data, size_t *len); | |||||
static const char *appendf(const char *prev, const char *format, ...) | |||||
{ | |||||
va_list ap; | |||||
va_start(ap, format); | |||||
char *string = alloc_vprintf(format, ap); | |||||
va_end(ap); | |||||
char *string2 = NULL; | |||||
if (string != NULL) | |||||
{ | |||||
string2 = alloc_printf("%s%s", (prev == NULL) ? "" : prev, string); | |||||
} | |||||
if (prev != NULL) | |||||
{ | |||||
free((void *)prev); | |||||
} | |||||
if (string == NULL) | |||||
free(string); | |||||
return string2; | |||||
} | |||||
static const char *httpd_exec_cgi_tcl_error(Jim_Interp *interp) | |||||
{ | |||||
int len, i; | |||||
const char *t = NULL; | |||||
t = appendf(t, "<html><body>\n"); | |||||
t = appendf(t, "Runtime error, file \"%s\", line %d:<br>", | |||||
interp->errorFileName, interp->errorLine); | |||||
t = appendf(t, " %s < br>", Jim_GetString(interp->result, NULL)); | |||||
Jim_ListLength(interp, interp->stackTrace, &len); | |||||
for (i = 0; i < len; i += 3) | |||||
{ | |||||
Jim_Obj *objPtr; | |||||
const char *proc, *file, *line; | |||||
Jim_ListIndex(interp, interp->stackTrace, i, &objPtr, JIM_NONE); | |||||
proc = Jim_GetString(objPtr, NULL); | |||||
Jim_ListIndex(interp, interp->stackTrace, i + 1, &objPtr, JIM_NONE); | |||||
file = Jim_GetString(objPtr, NULL); | |||||
Jim_ListIndex(interp, interp->stackTrace, i + 2, &objPtr, JIM_NONE); | |||||
line = Jim_GetString(objPtr, NULL); | |||||
t = appendf(t, "In procedure '%s' called at file \"%s\", line %s < br>", | |||||
proc, file, line); | |||||
} | |||||
t = appendf(t, "</html></body>\n"); | |||||
return t; | |||||
} | |||||
static int httpd_Jim_Command_writeform(Jim_Interp *interp, int argc, | |||||
Jim_Obj * const *argv) | |||||
{ | |||||
if (argc != 3) | |||||
{ | |||||
Jim_WrongNumArgs(interp, 1, argv, "method ?CMD_ARGV ...?"); | |||||
return JIM_ERR; | |||||
} | |||||
char *name = (char*) Jim_GetString(argv[1], NULL); | |||||
char *file = (char*) Jim_GetString(argv[2], NULL); | |||||
// Find length | |||||
const char *data; | |||||
int actual; | |||||
int retcode; | |||||
const char *script = alloc_printf( | |||||
"set dummy_val $httppostdata(%s); set dummy_val", | |||||
name); | |||||
retcode = Jim_Eval_Named(interp, script, __FILE__, __LINE__); | |||||
free((void *) script); | |||||
if (retcode != JIM_OK) | |||||
return retcode; | |||||
data = Jim_GetString(Jim_GetResult(interp), &actual); | |||||
FILE *f = fopen(file, "wb"); | |||||
if (NULL == f) | |||||
{ | |||||
Jim_SetResultString(interp, "Could not create file", -1); | |||||
return JIM_ERR; | |||||
} | |||||
int result = fwrite(data, 1, actual, f); | |||||
fclose(f); | |||||
if (result != actual) | |||||
{ | |||||
Jim_SetResultString(interp, "Could not write to file", -1); | |||||
return JIM_ERR; | |||||
} | |||||
return JIM_OK; | |||||
} | |||||
int | |||||
httpd_Jim_Command_formfetch(Jim_Interp *interp, | |||||
int argc, | |||||
Jim_Obj *const *argv) | |||||
{ | |||||
if (argc != 2) | |||||
{ | |||||
Jim_WrongNumArgs(interp, 1, argv, "method ?CMD_ARGV ...?"); | |||||
return JIM_ERR; | |||||
} | |||||
char *name = (char*)Jim_GetString(argv[1], NULL); | |||||
const char *script = alloc_printf( | |||||
"set dummy_val $httppostdata(%s); set dummy_val", | |||||
name); | |||||
int retcode = Jim_Eval_Named(interp, script, __FILE__, __LINE__); | |||||
free((void *) script); | |||||
if (retcode != JIM_OK) | |||||
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); | |||||
else | |||||
Jim_SetResult(interp, Jim_GetResult(interp)); | |||||
return JIM_OK; | |||||
} | |||||
struct httpd_request | |||||
{ | |||||
int post; | |||||
Jim_Interp *interp; | |||||
struct MHD_PostProcessor *postprocessor; | |||||
//Jim_Obj *dict; | |||||
int complete; /* did we receive the entire post ? */ | |||||
}; | |||||
static void request_completed(void *cls, struct MHD_Connection *connection, | |||||
void **con_cls, enum MHD_RequestTerminationCode toe) | |||||
{ | |||||
struct httpd_request *r = (struct httpd_request*) *con_cls; | |||||
if (NULL == r) | |||||
return; | |||||
if (r->postprocessor) | |||||
{ | |||||
openocd_sleep_postlude(); | |||||
MHD_destroy_post_processor(r->postprocessor); | |||||
openocd_sleep_prelude(); | |||||
} | |||||
free(r); | |||||
*con_cls = NULL; | |||||
} | |||||
/* append to said key in dictionary */ | |||||
static void append_key(Jim_Interp *interp, | |||||
struct httpd_request *r, const char *key, | |||||
const char *data, size_t off, size_t size) | |||||
{ | |||||
Jim_Obj *keyObj = Jim_NewStringObj(interp, key, -1); | |||||
Jim_IncrRefCount(keyObj); | |||||
Jim_Obj *value = NULL; | |||||
Jim_Obj *dict = Jim_GetVariableStr(interp, "httppostdata", 0); | |||||
if (dict != NULL) | |||||
{ | |||||
if (Jim_DictKey(interp, dict, keyObj, &value, 0) != JIM_OK) | |||||
{ | |||||
value = NULL; | |||||
} | |||||
else | |||||
{ | |||||
Jim_IncrRefCount(value); | |||||
} | |||||
} | |||||
if (value == NULL) | |||||
{ | |||||
value = Jim_NewStringObj(interp, "", -1); | |||||
Jim_IncrRefCount(value); | |||||
} | |||||
/* create a new object we append to and insert into this location */ | |||||
Jim_Obj *newObj = Jim_NewStringObj(interp, "", -1); | |||||
Jim_IncrRefCount(newObj); | |||||
Jim_AppendObj(interp, newObj, value); | |||||
Jim_AppendString(interp, newObj, data, size); | |||||
/* uhh... use name here of dictionary */ | |||||
dict = Jim_NewStringObj(interp, "httppostdata", -1); | |||||
Jim_IncrRefCount(dict); | |||||
Jim_SetDictKeysVector(interp, dict, &keyObj, 1, newObj); | |||||
Jim_DecrRefCount(interp, dict); | |||||
Jim_DecrRefCount(interp, value); | |||||
Jim_DecrRefCount(interp, newObj); | |||||
Jim_DecrRefCount(interp, keyObj); | |||||
} | |||||
/* append data to each key */ | |||||
static int iterate_post(void *con_cls, enum MHD_ValueKind kind, | |||||
const char *key, const char *filename, const char *content_type, | |||||
const char *transfer_encoding, const char *data, uint64_t off, | |||||
size_t size) | |||||
{ | |||||
struct httpd_request *r = (struct httpd_request*) con_cls; | |||||
append_key(r->interp, r, key, data, off, size); | |||||
return MHD_YES; | |||||
} | |||||
static int record_arg(void *cls, enum MHD_ValueKind kind, const char *key, | |||||
const char *value) | |||||
{ | |||||
struct httpd_request *r = (struct httpd_request*) cls; | |||||
append_key(r->interp, r, key, value, 0, strlen(value)); | |||||
return MHD_YES; | |||||
} | |||||
static int handle_request(Jim_Interp *interp, | |||||
struct MHD_Connection * connection, const char * url) | |||||
{ | |||||
struct MHD_Response * response; | |||||
int ret; | |||||
const char *suffix; | |||||
suffix = strrchr(url, '.'); | |||||
if ((suffix != NULL) && (strcmp(suffix, ".tcl") == 0)) | |||||
{ | |||||
printf("Run tcl %s\n", url); | |||||
int retcode; | |||||
const char *script = alloc_printf( | |||||
"global httpdata; source {%s}; set httpdata", url); | |||||
retcode = Jim_Eval_Named(interp, script, __FILE__, __LINE__); | |||||
free((void *) script); | |||||
if (retcode != JIM_OK) | |||||
{ | |||||
printf("Tcl failed\n"); | |||||
const char *t = httpd_exec_cgi_tcl_error(interp); | |||||
if (t == NULL) | |||||
return MHD_NO; | |||||
response = MHD_create_response_from_data(strlen(t), (void *) t, | |||||
MHD_YES, MHD_NO); | |||||
ret = MHD_queue_response(connection, | |||||
MHD_HTTP_INTERNAL_SERVER_ERROR, response); | |||||
MHD_destroy_response(response); | |||||
return ret; | |||||
} | |||||
else | |||||
{ | |||||
LOG_DEBUG("Tcl OK"); | |||||
/* FIX!!! how to handle mime types??? */ | |||||
const char *result; | |||||
int reslen; | |||||
result = Jim_GetString(Jim_GetResult(interp), &reslen); | |||||
response = MHD_create_response_from_data(reslen, (void *) result, | |||||
MHD_NO, MHD_YES); | |||||
ret = MHD_queue_response(connection, | |||||
MHD_HTTP_INTERNAL_SERVER_ERROR, response); | |||||
MHD_destroy_response(response); | |||||
return ret; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
void *data; | |||||
size_t len; | |||||
int retval = loadFile(url, &data, &len); | |||||
if (retval != ERROR_OK) | |||||
{ | |||||
printf("Did not find %s\n", url); | |||||
response = MHD_create_response_from_data(strlen(PAGE_NOT_FOUND), | |||||
(void *) PAGE_NOT_FOUND, MHD_NO, MHD_NO); | |||||
ret = MHD_queue_response(connection, MHD_HTTP_NOT_FOUND, response); | |||||
MHD_destroy_response(response); | |||||
return ret; | |||||
} | |||||
LOG_DEBUG("Serving %s length=%zu", url, len); | |||||
/* serve file directly */ | |||||
response = MHD_create_response_from_data(len, data, MHD_YES, MHD_NO); | |||||
/* Should we expose mimetype via tcl here or just let the browser | |||||
guess? | |||||
MHD_add_response_header(response, "Content-Type", "image/png"); | |||||
*/ | |||||
ret = MHD_queue_response(connection, MHD_HTTP_OK, response); | |||||
MHD_destroy_response(response); | |||||
//free(data); | |||||
return ret; | |||||
} | |||||
} | |||||
static int ahc_echo_inner(void * cls, struct MHD_Connection * connection, | |||||
const char * url, const char * method, const char * version, | |||||
const char * upload_data, size_t * upload_data_size, void ** ptr) | |||||
{ | |||||
Jim_Interp *interp = (Jim_Interp *)cls; | |||||
int post = 0; | |||||
if (0 == strcmp(method, "POST")) | |||||
{ | |||||
post = 1; | |||||
} | |||||
else if (0 == strcmp(method, "GET")) | |||||
{ | |||||
} | |||||
else | |||||
{ | |||||
return MHD_NO; /* unexpected method */ | |||||
} | |||||
struct httpd_request *r; | |||||
if (*ptr == NULL) | |||||
{ | |||||
/* The first time only the headers are valid, | |||||
do not respond in the first round... */ | |||||
*ptr = malloc(sizeof(struct httpd_request)); | |||||
if (*ptr == NULL) | |||||
return MHD_NO; | |||||
memset(*ptr, 0, sizeof(struct httpd_request)); | |||||
r = (struct httpd_request *) *ptr; | |||||
r->interp = interp; | |||||
r->post = post; | |||||
Jim_SetVariableStr(interp, "httppostdata", Jim_NewDictObj(interp, NULL, 0)); | |||||
/* fill in url query strings in dictionary */ | |||||
MHD_get_connection_values(connection, MHD_GET_ARGUMENT_KIND, | |||||
record_arg, r); | |||||
if (r->post) | |||||
{ | |||||
r->postprocessor = MHD_create_post_processor(connection, 2048 | |||||
* 1024, &iterate_post, r); | |||||
} | |||||
return MHD_YES; | |||||
} | |||||
r = (struct httpd_request *) *ptr; | |||||
if (r->post) | |||||
{ | |||||
/* consume post data */ | |||||
if (*upload_data_size) | |||||
{ | |||||
MHD_post_process(r->postprocessor, upload_data, *upload_data_size); | |||||
*upload_data_size = 0; | |||||
return MHD_YES; | |||||
} | |||||
else | |||||
{ | |||||
} | |||||
} else | |||||
{ | |||||
} | |||||
/* hand over to request who will be using it. */ | |||||
// r->dict = NULL; | |||||
/* FIX!!!! we need more advanced handling of url's to avoid them | |||||
* being subverted to evil purposes | |||||
*/ | |||||
const char *httpd_dir = PKGDATADIR "/httpd"; | |||||
if (*url=='/') | |||||
{ | |||||
url++; /* skip '/' */ | |||||
} | |||||
if (!*url) | |||||
url="index.tcl"; | |||||
const char *file_name = alloc_printf("%s/%s", httpd_dir, url); | |||||
int result = handle_request(interp, connection, file_name); | |||||
free((void *)file_name); | |||||
return result; | |||||
} | |||||
static int ahc_echo(void * cls, struct MHD_Connection * connection, | |||||
const char * url, const char * method, const char * version, | |||||
const char * upload_data, size_t * upload_data_size, void ** ptr) | |||||
{ | |||||
int result; | |||||
openocd_sleep_postlude(); | |||||
result = ahc_echo_inner(cls, connection, url, method, version, upload_data, upload_data_size, ptr); | |||||
openocd_sleep_prelude(); | |||||
return result; | |||||
} | |||||
static struct MHD_Daemon * d; | |||||
static const struct command_registration httpd_command_handlers[] = { | |||||
{ | |||||
.name = "formfetch", | |||||
.jim_handler = httpd_Jim_Command_formfetch, | |||||
.mode = COMMAND_EXEC, | |||||
.usage = "parameter_name", | |||||
.help = "Reads a posted form value.", | |||||
}, | |||||
{ | |||||
.name = "writeform", | |||||
.jim_handler = httpd_Jim_Command_writeform, | |||||
.mode = COMMAND_EXEC, | |||||
.usage = "parameter_name filename", | |||||
.help = "Writes a form value to a file.", | |||||
}, | |||||
COMMAND_REGISTRATION_DONE | |||||
}; | |||||
int httpd_start(struct command_context *cmd_ctx) | |||||
{ | |||||
pthread_mutexattr_t attr; | |||||
pthread_mutexattr_init(&attr); | |||||
pthread_mutex_init(&mutex, &attr); | |||||
int port = 8888; | |||||
LOG_USER("Launching httpd server on port %d", port); | |||||
d = MHD_start_daemon(MHD_USE_SELECT_INTERNALLY, port, NULL, NULL, | |||||
&ahc_echo, cmd_ctx->interp, | |||||
MHD_OPTION_NOTIFY_COMPLETED, request_completed, NULL, /* Closure... what's that??? */ | |||||
MHD_OPTION_END); | |||||
if (d == NULL) | |||||
return ERROR_FAIL; | |||||
return register_commands(cmd_ctx, NULL, httpd_command_handlers); | |||||
} | |||||
void httpd_stop(void) | |||||
{ | |||||
MHD_stop_daemon(d); | |||||
pthread_mutex_destroy(&mutex); | |||||
} | |||||
@@ -1,28 +0,0 @@ | |||||
/*************************************************************************** | |||||
* Copyright (C) 2009 Zachary T Welch <zw@superlucidity.net> * | |||||
* * | |||||
* This program is free software; you can redistribute it and/or modify * | |||||
* it under the terms of the GNU General Public License as published by * | |||||
* the Free Software Foundation; either version 2 of the License, or * | |||||
* (at your option) any later version. * | |||||
* * | |||||
* This program is distributed in the hope that it will be useful, * | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||||
* GNU General Public License for more details. * | |||||
* * | |||||
* You should have received a copy of the GNU General Public License * | |||||
* along with this program; if not, write to the * | |||||
* Free Software Foundation, Inc., * | |||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | |||||
***************************************************************************/ | |||||
#ifndef OPENOCD_SERVER_HTTPD_H | |||||
#define OPENOCD_SERVER_HTTPD_H | |||||
struct command_context; | |||||
int httpd_start(struct command_context *cmd_ctx); | |||||
void httpd_stop(void); | |||||
#endif // OPENOCD_SERVER_HTTPD_H |
@@ -1,114 +0,0 @@ | |||||
import java.io.File; | |||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | |||||
import java.io.OutputStream; | |||||
import javax.xml.parsers.DocumentBuilder; | |||||
import javax.xml.parsers.DocumentBuilderFactory; | |||||
import javax.xml.parsers.ParserConfigurationException; | |||||
import javax.xml.transform.Transformer; | |||||
import javax.xml.transform.TransformerConfigurationException; | |||||
import javax.xml.transform.TransformerException; | |||||
import javax.xml.transform.TransformerFactory; | |||||
import javax.xml.transform.dom.DOMSource; | |||||
import javax.xml.transform.stream.StreamResult; | |||||
import javax.xml.transform.stream.StreamSource; | |||||
import org.apache.xpath.XPathAPI; | |||||
import org.w3c.dom.Document; | |||||
import org.w3c.dom.Node; | |||||
import org.w3c.dom.NodeList; | |||||
import org.xml.sax.SAXException; | |||||
/** used to generate .tcl files from */ | |||||
public class Stylizer | |||||
{ | |||||
// Global value so it can be ref'd by the tree-adapter | |||||
static Document document; | |||||
public static void main(String argv[]) | |||||
{ | |||||
if (argv.length != 3) | |||||
{ | |||||
System.err.println("Usage: java Stylizer stylesheet xmlfile outputdir"); | |||||
System.exit(1); | |||||
} | |||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |||||
try | |||||
{ | |||||
System.err.println("Starting conversion..."); | |||||
File stylesheet = new File(argv[0]); | |||||
File datafile = new File(argv[1]); | |||||
DocumentBuilder builder = factory.newDocumentBuilder(); | |||||
document = builder.parse(datafile); | |||||
NodeList list = XPathAPI.selectNodeList(document, "website/language/page"); | |||||
for (int i=0; i<list.getLength(); i++) | |||||
{ | |||||
Node node=list.item(i); | |||||
// Use a Transformer for output | |||||
TransformerFactory tFactory = TransformerFactory.newInstance(); | |||||
StreamSource stylesource = new StreamSource(stylesheet); | |||||
Transformer transformer = tFactory.newTransformer(stylesource); | |||||
Node fileName = XPathAPI.selectSingleNode(node, "outfile/text()"); | |||||
System.err.println("Converting " + fileName.getNodeValue()); | |||||
DOMSource source = new DOMSource(document); | |||||
OutputStream output=new FileOutputStream(new File(argv[2], fileName.getNodeValue())); | |||||
try | |||||
{ | |||||
StreamResult result = new StreamResult(output); | |||||
transformer.setParameter("pagetogenerate", fileName.getNodeValue()); | |||||
transformer.transform(source, result); | |||||
} | |||||
finally | |||||
{ | |||||
output.close(); | |||||
} | |||||
} | |||||
} catch (TransformerConfigurationException tce) | |||||
{ | |||||
// Error generated by the parser | |||||
System.out.println("\n** Transformer Factory error"); | |||||
System.out.println(" " + tce.getMessage()); | |||||
// Use the contained exception, if any | |||||
Throwable x = tce; | |||||
if (tce.getException() != null) | |||||
x = tce.getException(); | |||||
x.printStackTrace(); | |||||
} catch (TransformerException te) | |||||
{ | |||||
// Error generated by the parser | |||||
System.out.println("\n** Transformation error"); | |||||
System.out.println(" " + te.getMessage()); | |||||
// Use the contained exception, if any | |||||
Throwable x = te; | |||||
if (te.getException() != null) | |||||
x = te.getException(); | |||||
x.printStackTrace(); | |||||
} catch (SAXException sxe) | |||||
{ | |||||
// Error generated by this application | |||||
// (or a parser-initialization error) | |||||
Exception x = sxe; | |||||
if (sxe.getException() != null) | |||||
x = sxe.getException(); | |||||
x.printStackTrace(); | |||||
} catch (ParserConfigurationException pce) | |||||
{ | |||||
// Parser with specified options can't be built | |||||
pce.printStackTrace(); | |||||
} catch (IOException ioe) | |||||
{ | |||||
// I/O error | |||||
ioe.printStackTrace(); | |||||
} | |||||
} // main | |||||
} |
@@ -1,454 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="browsemem.tcl" style="font-weight: bold;">Browse / Edit</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="downloadmem.tcl" style="">Download</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl" style="font-weight: bold;">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Browse / Edit Memory</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_address [formfetch form_address] | |||||
set form_length [formfetch form_length] | |||||
set form_type [formfetch form_type] | |||||
set form_action [formfetch form_action] | |||||
set form_value [formfetch form_value] | |||||
if {[string compare $form_length ""]==0} { | |||||
set form_length 0 | |||||
} | |||||
if {$form_length<=0} { | |||||
set form_length 0x80 | |||||
} | |||||
if {$form_length>0x1000} { | |||||
set form_length 0x1000 | |||||
} | |||||
if {[string compare $form_type ""]==0} { | |||||
set form_type mdw | |||||
} | |||||
if {[string compare $form_type "mdw"]==0} { | |||||
set wordsize 4 | |||||
set modify_cmd mww | |||||
} | |||||
if {[string compare $form_type "mdh"]==0} { | |||||
set wordsize 2 | |||||
set modify_cmd mwh | |||||
} | |||||
if {[string compare $form_type "mdb"]==0} { | |||||
set wordsize 1 | |||||
set modify_cmd mwb | |||||
} | |||||
if {[string compare $form_address ""]!=0} { | |||||
if {[string compare $form_action "Previous"]==0} { | |||||
# Kludge! Work around problems parsing hex in Jim Tcl expressions | |||||
incr form_address ; set form_address [expr $form_address-1] | |||||
if {$form_address-$form_length>0} { | |||||
set form_address "0x[tohex [expr $form_address-$form_length]]" | |||||
} else { | |||||
set form_address "0x0" | |||||
} | |||||
} | |||||
if {[string compare $form_action "Next"]==0} { | |||||
# Kludge! Work around problems parsing hex in Jim Tcl expressions | |||||
incr form_address ; set form_address [expr $form_address-1] | |||||
set form_address "0x[tohex [expr $form_address+$form_length]]" | |||||
} | |||||
if {[string compare $form_action "Modify"]==0} { | |||||
append console [capture_catch "$modify_cmd $form_address $form_value"] | |||||
} | |||||
if {[string compare $form_action "Fill"]==0} { | |||||
append console [capture_catch "$modify_cmd $form_address $form_value $form_length"] | |||||
} | |||||
} | |||||
append buffer { | |||||
<form action="browsemem.tcl" method="post"> | |||||
<table> | |||||
<tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="} | |||||
append buffer $form_address | |||||
append buffer {"></td></tr> | |||||
<tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="} | |||||
append buffer "0x[tohex $form_length]" | |||||
append buffer {"></td></tr> | |||||
<tr><td class="formtext">Value</td><td><input type="text" name="form_value" value="} | |||||
append buffer $form_value | |||||
append buffer {"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Modify"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Fill"></td></tr> | |||||
<tr><td class="formtext">Type</td><td style="padding-top:1px;"> | |||||
<select name="form_type"> | |||||
<option | |||||
} | |||||
if {[string compare $form_type "mdb"]==0} { append buffer {selected="selected"} } | |||||
append buffer { value ="mdb">8 bit | |||||
</option> | |||||
<option | |||||
} | |||||
if {[string compare $form_type "mdh"]==0} { append buffer {selected="selected"} } | |||||
append buffer { value ="mdh">16 bit | |||||
</option> | |||||
<option | |||||
} | |||||
if {[string compare $form_type "mdw"]==0} { append buffer {selected="selected"} } | |||||
append buffer {value ="mdw">32 bit | |||||
</option> | |||||
</select> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Refresh"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Previous" ></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Next" ></td> | |||||
</tr></table> | |||||
<br> | |||||
</form> | |||||
<p> | |||||
<div class="fontbigger">Memory:</div><p> | |||||
<code style="white-space: nowrap; font-size:11px;font:courier new;"> | |||||
} | |||||
if {[string compare $form_address ""]!=0} { | |||||
append console [encode [capture_catch halt]] | |||||
append buffer [encode [capture_catch "$form_type $form_address [expr $form_length]"]] | |||||
} | |||||
append buffer { | |||||
</code> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="browsemem.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Browse and edit target memory.<br> | |||||
Length is in bytes, maximum 4096 bytes.</p> | |||||
<p>An error message is shown when trying to browse or edit memory which cases a CPU fault.</p> | |||||
<p>CPU will be halted if required.</p> | |||||
<p><b>Modify</b> - Will modify only one byte, half-word or word starting at Address.</p> | |||||
<p><b>Fill</b> - Will fill the specified region with the specified value.</p> | |||||
<p><b>Refresh</b> - Display the content of the specified memory area.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,5 +0,0 @@ | |||||
set e | |||||
java -classpath ../../../../zy1000/build/xalan.jar\;. Stylizer menu.xsl menu.xml . | |||||
find . -regex ".*\.tcl" -type f -exec sh html2tcl.sh {} {} \; | |||||
echo "Copy .tcl files to /usr/local/lib/openocd/httpd/" | |||||
cp *.tcl /usr/local/lib/openocd/httpd/ |
@@ -1,366 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="browsemem.tcl" style="">Browse / Edit</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="downloadmem.tcl" style="font-weight: bold;">Download</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl" style="font-weight: bold;">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Download Memory Range</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_address [formfetch form_address] | |||||
set form_length [formfetch form_length] | |||||
set form_action [formfetch form_action] | |||||
append buffer { | |||||
<form action="downloadmem.tcl" method="post"> | |||||
<table> | |||||
<tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="} | |||||
append buffer $form_address | |||||
append buffer {"></td></tr> | |||||
<tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="} | |||||
append buffer $form_length | |||||
append buffer {"></td></tr> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<input type="submit" value="Download" name="form_action"> | |||||
</form> | |||||
} | |||||
if {[string compare $form_action "Download"]==0} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
append console [encode [capture_catch "dump_image /tmp/dump.bin $form_address $form_length"]] | |||||
append buffer { | |||||
<form action="../dump.bin" target="_blank"> | |||||
<input type="submit" name="form_action" value="Save downloaded memory"> | |||||
</form> | |||||
} | |||||
} | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="downloadmem.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Download memory from target. <br> | |||||
<b>Note</b> that download memory can take | |||||
a long time(potentially minutes for megabytes at low JTAG clk speeds). | |||||
<p/> | |||||
Once the memory is downloaded a link is available on the page to download | |||||
the file to your PC. | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,462 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>Zylin ZY1000 JTAG debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
<img src="menu_cuts/logo_top.png" style="border:0px;"/> | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="index.tcl" style="">Target Status</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="preconfig.tcl" style="">Select Target Config</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="editconfigs.tcl" style="font-weight: bold;">Edit Configurations</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="reload.tcl" style="">Reload Config Scripts</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl" style="font-weight: bold;">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Edit Target Configurations</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
<form action="editconfigs.tcl" method="post"> | |||||
} | |||||
set form_edittext [formfetch form_edittext] | |||||
set form_action [formfetch form_action] | |||||
set form_filename [formfetch form_filename] | |||||
set form_selected [formfetch form_selected] | |||||
if {[string compare $form_action "Load"]==0} { | |||||
set form_filename $form_selected | |||||
} | |||||
if {[string compare $form_action "Delete"]==0} { | |||||
capture_catch "rm /config/settings/$form_selected" | |||||
} | |||||
if {[string compare $form_action "Save"]==0} { | |||||
save_var $form_filename [from_textarea $form_edittext] | |||||
append buffer "Wrote file $form_filename<br>" | |||||
} | |||||
set form_edittext "" | |||||
# load original or script saved on disk. | |||||
if {[string compare $form_action "Show default"]==0} { | |||||
set form_edittext [load_file "/rom/$form_selected"] | |||||
set form_filename $form_selected | |||||
} else { | |||||
set form_edittext [load_config $form_filename] | |||||
} | |||||
set form_edittext_subst [to_textarea $form_edittext] | |||||
proc prepend { val list } { | |||||
set res "" | |||||
foreach value $list { | |||||
set t $val | |||||
append t $value | |||||
lappend res $t | |||||
} | |||||
return $res | |||||
} | |||||
set files [prepend target/ [ls /rom/target]] | |||||
set files [lunion $files [prepend event/ [ls /config/settings/event]]] | |||||
set files [lunion $files [prepend target/ [ls /config/settings/target]]] | |||||
set files [lsort $files] | |||||
append buffer { | |||||
<table style="padding:0px;border-collapse:collapse;"><tr> | |||||
<td style="padding-top:1px;"><select name="form_selected"> | |||||
} | |||||
set foundTarget 0 | |||||
foreach i $files { | |||||
append buffer { | |||||
<option | |||||
} | |||||
if {[string compare $form_filename $i]==0} { | |||||
set foundTarget 1 | |||||
append buffer {selected="selected"} | |||||
} | |||||
append buffer { | |||||
value="} | |||||
append buffer $i | |||||
append buffer {">} | |||||
append buffer $i | |||||
append buffer {</option> | |||||
} | |||||
} | |||||
if {$foundTarget==0} { | |||||
append buffer { | |||||
<option selected="selected" value="">Select target config</option> | |||||
} | |||||
} | |||||
append buffer { | |||||
</select></td> | |||||
<td class="buttonspacesmall"> </td> | |||||
<td><input type="submit" value="Load" name="form_action"></td> | |||||
<td class="buttonspacesmall"> </td> | |||||
<td><input type="submit" value="Show default" name="form_action"></td> | |||||
<td class="buttonspacesmall"> </td> | |||||
<td><input type="submit" value="Delete" name="form_action"></td> | |||||
</tr></table> | |||||
<textarea style="overflow:auto;" rows="21" cols="65" name="form_edittext" wrap="off">} | |||||
append buffer $form_edittext_subst | |||||
append buffer {</textarea> | |||||
<table style="padding:0px;border-collapse:collapse;"><tr> | |||||
} | |||||
append buffer {<td class="formtext">File</td><td><input type="text" name="form_filename" } "\n" | |||||
append buffer "value=\"$form_filename\" ></td>\n" | |||||
append buffer {<td class="buttonspacesmall"> </td><td><input type="submit" value="Save" name="form_action"></td><br>} "\n" | |||||
append buffer {</tr></table>} "\n" | |||||
append buffer { | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="editconfigs.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/ZY1000_Quick_Start_Guide.pdf">Quick Start Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000_contact.html">Contact Zylin AS</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Here you can edit predefined target configurations, restore predefined configurations to | |||||
default state and create new target configurations.<p/> | |||||
<p>Typically when creating a new target configuration, you would take an existing | |||||
configuration that resembles the most your needs and modify it for your | |||||
purposes and save it under a different name.</p> | |||||
<p><b>Load</b> - Loads a configuration file into the editor.</p> | |||||
<p><b>Show default</b> - Loads the firmware included version of the | |||||
configuration file (if any), into the editor.<br> | |||||
<b>Note</b> that the editor content is not saved.</p> | |||||
<p><b>Delete</b> - Deletes a custom created configuration file.<br> | |||||
<b>Note</b> that firmware included configuration files can not be deleted.</p> | |||||
<p><b>Save</b> - Save the edited file under the a new or the same name.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td/> | |||||
<td> | |||||
<img border="0" src="menu_cuts/logo_bottom.png"/> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,436 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>Zylin ZY1000 JTAG debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
<img src="menu_cuts/logo_top.png" style="border:0px;"/> | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="zy1000.tcl" style="">Set IP Address</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="upgrade.tcl" style="">ZY1000 Firmware</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="editfile.tcl" style="font-weight: bold;">Edit File</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="support.tcl" style="">Support Request</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="log.tcl#tail" style="">View Tail of Log</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/zy1000.tcl" style="font-weight: bold;">Setup ZY1000</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Edit File</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
#Read a text file, edit it and write it back. Useful for interactive debugging | |||||
#of tcl scripts | |||||
set data "" | |||||
append buffer {<form action="editfile.tcl" method="post">} "\n" | |||||
set err ""; | |||||
set form_edittext [formfetch form_edittext]; | |||||
set form_action [formfetch form_action]; | |||||
set form_filename [formfetch form_filename]; | |||||
puts Action $form_action | |||||
if {[string compare $form_action "Load"]==0} { | |||||
set form_edittext "" | |||||
catch { | |||||
set fp [aio.open $form_filename r]; | |||||
set form_edittext [$fp read]; | |||||
$fp close; | |||||
} err | |||||
} | |||||
if {[string compare $form_action "Delete"]==0} { | |||||
capture "rm $form_filename" | |||||
} | |||||
set form_edittext_subst [to_textarea $form_edittext] | |||||
if {[string compare $form_action "Save"]==0} { | |||||
if {[catch { | |||||
set fp [aio.open $form_filename w]; | |||||
$fp puts [from_textarea $form_edittext] | |||||
$fp close | |||||
append buffer "Wrote file $form_filename<br>" | |||||
} err]} { | |||||
append buffer "Could not write $form_filename<br>" | |||||
} | |||||
} | |||||
append buffer {<table><tr><td class="formtext">File</td><td style="padding-top:1px;"><input type="text" name="form_filename" } "\n" | |||||
append buffer "value=\"$form_filename\" ></td>\n" | |||||
append buffer {<td class="buttonspacesmall"> </td><td><input type="submit" value="Load" name="form_action" ></td><td class="buttonspacesmall"> </td><td><input type="submit" value="Save" name="form_action"></td><td class="buttonspacesmall"> </td><td><input type="submit" value="Delete" name="form_action"></td>} "\n" | |||||
append buffer {</tr></table>} "\n" | |||||
append buffer {<br>} | |||||
append buffer {<textarea style="overflow:auto;" rows="18" cols="65" name="form_edittext" wrap="off">} | |||||
append buffer $form_edittext_subst | |||||
append buffer {</textarea><br>} | |||||
append buffer {</html> } "\n" | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="/ram/cgi/editfile.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/ZY1000_Quick_Start_Guide.pdf">Quick Start Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000_contact.html">Contact Zylin AS</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Edit any file on the ZY1000 by typing in the | |||||
filename and pressing Load. | |||||
</p> | |||||
<table style="line-height:17px;"><tr> | |||||
<td><a href="/ram" target="_blank">Browse files on /ram</a><br> | |||||
<a href="/config" target="_blank">Browse files on /config</a><br> | |||||
<a href="/rom" target="_blank">Browse files on /rom</a></td> | |||||
</tr></table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td/> | |||||
<td> | |||||
<img border="0" src="menu_cuts/logo_bottom.png"/> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,387 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flashinfo.tcl" style="">Info</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="erase.tcl" style="font-weight: bold;">Erase</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flash.tcl" style="">Program / Verify</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="production.tcl" style="">Production</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl" style="font-weight: bold;">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Erase Flash</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_address [formfetch form_address] | |||||
set form_length [formfetch form_length] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_length ""]==0} { | |||||
set form_length 0x10000 | |||||
} | |||||
if {[string compare $form_address ""]==0} { | |||||
if {[catch {[first_flash_base]} result]==0} { | |||||
set form_address "0x[tohex $result]" | |||||
} | |||||
} | |||||
if {[string compare $form_address ""]!=0} { | |||||
if {[string compare $form_action "Erase"]==0} { | |||||
append buffer "<code style=\"white-space: nowrap;\">" | |||||
append console [encode [capture_catch { | |||||
reset init | |||||
flash erase_address $form_address $form_length}]] | |||||
append buffer </code> | |||||
} | |||||
} | |||||
append buffer { | |||||
<form action="erase.tcl" method="post"> | |||||
<table> | |||||
<tr><td class="formtext" style="padding-right:10px;">Address</td><td><input type="text" name="form_address" value="} | |||||
append buffer $form_address | |||||
append buffer {"></td></tr> | |||||
<tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="} | |||||
append buffer $form_length | |||||
append buffer {"></td></tr> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<input type="submit" name="form_action" value="Erase"><br> | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="erase.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Note that flash programming will erase flash if required.<p/> | |||||
<p>Reset and init CPU, then erase address range.</p> | |||||
<p>The length field is specified in number of bytes.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,459 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flashinfo.tcl" style="">Info</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="erase.tcl" style="">Erase</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flash.tcl" style="font-weight: bold;">Program / Verify</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="production.tcl" style="">Production</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl" style="font-weight: bold;">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Program / Verify Flash</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_offset [formfetch form_offset] | |||||
set form_action [formfetch form_action] | |||||
set form_type [formfetch form_type] | |||||
set post "" | |||||
catch {set post $post_data} err | |||||
if {[string compare $form_offset ""]==0} { | |||||
set form_offset 0 | |||||
} | |||||
if {[string compare $form_type ""]==0} { | |||||
set form_type "" | |||||
} | |||||
append buffer {<code style="white-space: nowrap;">} | |||||
set data "" | |||||
append buffer {<form enctype="multipart/form-data" action="flash.tcl" method="post">} | |||||
set action_reset [expr {[string length $form_action]!=0}] | |||||
set action_flash [expr {[string compare $form_action "Flash"]==0 || [string compare $form_action "Flash and verify"]==0}] | |||||
set action_verify [expr {[string compare $form_action "Verify"]==0 || [string compare $form_action "Flash and verify"]==0}] | |||||
if {$action_reset} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
} | |||||
append buffer { | |||||
</code>} | |||||
append buffer {<table>} | |||||
append buffer {<tr><td class="formtext">File</td><td><input type="file" name="form_filecontent"></td></tr>} | |||||
append buffer "<tr><td class=\"formtext\" >Offset</td><td><input type=\"text\" name=\"form_offset\" value=\"$form_offset\"></td></tr>" | |||||
append buffer { | |||||
<tr><td class="formtext" style="padding-top:1px;">Type</td><td> | |||||
<select name="form_type"> | |||||
<option | |||||
} | |||||
if {[string compare $form_type ""]==0} { append buffer {selected="selected"} } | |||||
append buffer { | |||||
value ="">auto</option> | |||||
<option | |||||
} | |||||
if {[string compare $form_type "elf"]==0} { append buffer {selected="selected"} } | |||||
append buffer { | |||||
value ="elf">elf</option> | |||||
<option | |||||
} | |||||
if {[string compare $form_type "bin"]==0} { append buffer {selected="selected"} } | |||||
append buffer { | |||||
value ="bin">binary</option> | |||||
<option | |||||
} | |||||
if {[string compare $form_type "ihex"]==0} { append buffer {selected="selected"} } | |||||
append buffer { | |||||
value ="ihex">ihex</option> | |||||
<!-- broken <option value ="s19">s19</option> --> | |||||
</select> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Flash" ></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Flash and verify" ></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Verify" ></td> | |||||
</tr></table> | |||||
<p> | |||||
} | |||||
if {$action_flash||$action_verify} { | |||||
catch {writeform form_filecontent $upload_filename} result | |||||
append console [encode $result] | |||||
} | |||||
append buffer "<br>" | |||||
if {$action_flash} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append buffer "<b>" | |||||
if {[catch {capture_catch {eval "flash write_image erase $upload_filename $form_offset $form_type"}} result]} { | |||||
append buffer "Flash write failed<br>" | |||||
append console [encode $result] | |||||
} else { | |||||
append buffer [encode $result] | |||||
append buffer "Flash write succeed<br>" | |||||
} | |||||
append buffer "</b>" | |||||
} | |||||
if {$action_verify} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append buffer "<b>" | |||||
if {[catch {capture_catch {eval "verify_image $upload_filename $form_offset $form_type"}} result]} { | |||||
append buffer "Verify failed<br>" | |||||
append console [encode $result] | |||||
} else { | |||||
append buffer [encode $result] | |||||
append buffer "Verify succeed<br>" | |||||
} | |||||
append buffer "</b>" | |||||
} | |||||
append buffer { | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="flash.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Program and/or verify the flash on your target.</p> | |||||
<p><b>Flash</b> - Halt CPU, automatically erase flash if required and program flash with image.</p> | |||||
<p><b>Flash and verify</b> - Programs the flash and verifies the programmed flash content is correct.</p> | |||||
<p><b>Verify</b> - Halt CPU and verify image in flash or RAM.</p> | |||||
<p><b>Offset</b> - This value is added to the address of the image.<br> | |||||
Binary images start at address 0 by default, whereas elf and ihex have addresses encoded into the image.<br> | |||||
Typically 0 for elf/ihex and the address to write the image to for binary files.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,382 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flashinfo.tcl" style="font-weight: bold;">Info</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="erase.tcl" style="">Erase</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flash.tcl" style="">Program / Verify</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="production.tcl" style="">Production</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl" style="font-weight: bold;">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Flash Information</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
<div style="font-size:14px;">Configured flash banks:</div> | |||||
<p> | |||||
<code style="white-space: nowrap;"> | |||||
} | |||||
set flash_return [ocd_flash_banks] | |||||
if {[llength $flash_return]!=0} { | |||||
append buffer [encode [flash banks]] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Reset CPU and probe flash"]==0} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
append buffer [encode [capture_catch "flash probe 0"]] | |||||
append buffer [encode [capture_catch "flash info 0"]] | |||||
} | |||||
} else { | |||||
append buffer "No flash bank configured." | |||||
} | |||||
append buffer { | |||||
<p> | |||||
<form action="flashinfo.tcl" method="post"> | |||||
<input type="submit" name="form_action" value="Reset CPU and probe flash"> | |||||
</form> | |||||
} | |||||
foreach a [ocd_flash_banks] { | |||||
append buffer "Flash bank at [format "0x%08x size 0x%08x" $a(base) $a(size)]: " | |||||
append buffer { | |||||
<form action="downloadmem.tcl" method="post"> | |||||
<input type="hidden" name="form_address" value="} | |||||
append buffer [format "0x%08x" $a(base)] | |||||
append buffer {"> | |||||
<input type="hidden" name="form_length" value="} | |||||
append buffer [format "0x%08x" $a(size)] | |||||
append buffer {"> | |||||
<input type="submit" value="Download" name="form_action"> | |||||
<br> | |||||
</form> | |||||
} | |||||
} | |||||
append buffer { | |||||
</code> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="flashinfo.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Here you will find information about the flash chips that you have | |||||
in your configuration.<p/> | |||||
<p><b>Reset CPU and probe flash</b> - This will reset the CPU and show | |||||
you more detailed information about your flash. This includes information about | |||||
the different sectors in the flash, and the flash driver used.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,336 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="openocd.tcl" style="">Run Command</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="guiupload.tcl" style="font-weight: bold;">Upload File</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl" style="font-weight: bold;">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Upload File</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_filename [formfetch form_filename]; | |||||
set form_action [formfetch form_action]; | |||||
#set form_filecontent [formfetch form_filecontent]; | |||||
append buffer {<form enctype="multipart/form-data" action="guiupload.tcl" method="post">} | |||||
append buffer <br> | |||||
if {[string compare $form_action "Upload"]==0} { | |||||
if {[catch {writeform form_filecontent $form_filename} result]==0} { | |||||
append buffer [encode $result] | |||||
} else { | |||||
append buffer Wrote $form_filename | |||||
} | |||||
} | |||||
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>} | |||||
append buffer {<td class="formtext">File to upload</td><td><input type="file" name="form_filecontent"></td></tr></table>} | |||||
append buffer {<table><tr><td style="height:15px;width:535px;"> </td></tr><tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr><tr><td style="height:15px;width:535px;"> </td></tr></table>} | |||||
append buffer {<input type="submit" name="form_action" value="Upload" ><br> } | |||||
append buffer {</form>} | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="guiupload.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,128 +0,0 @@ | |||||
#!/bin/bash | |||||
# restart using a Tcl shell \ | |||||
exec sh -c 'for tclshell in tclsh tclsh83 cygtclsh80 ; do \ | |||||
( echo | $tclshell ) 2> /dev/null && exec $tclshell "`( cygpath -w \"$0\" ) 2> /dev/null || echo $0`" "$@" ; \ | |||||
done ; \ | |||||
echo "file2c.tcl: cannot find Tcl shell" ; exit 1' "$0" "$@" | |||||
#=============================================================================== | |||||
# | |||||
# file2c.tcl | |||||
# | |||||
# Convert a file into a header that can be #included from C. | |||||
# | |||||
#=============================================================================== | |||||
#####ECOSGPLCOPYRIGHTBEGIN#### | |||||
## ------------------------------------------- | |||||
## This file is part of eCos, the Embedded Configurable Operating System. | |||||
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. | |||||
## | |||||
## eCos is free software; you can redistribute it and/or modify it under | |||||
## the terms of the GNU General Public License as published by the Free | |||||
## Software Foundation; either version 2 or (at your option) any later version. | |||||
## | |||||
## eCos is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
## WARRANTY; without even the implied warranty of MERCHANTABILITY or | |||||
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |||||
## for more details. | |||||
## | |||||
## You should have received a copy of the GNU General Public License along | |||||
## with eCos; if not, write to the Free Software Foundation, Inc., | |||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. | |||||
## | |||||
## As a special exception, if other files instantiate templates or use macros | |||||
## or inline functions from this file, or you compile this file and link it | |||||
## with other works to produce a work based on this file, this file does not | |||||
## by itself cause the resulting work to be covered by the GNU General Public | |||||
## License. However the source code for this file must still be made available | |||||
## in accordance with section (3) of the GNU General Public License. | |||||
## | |||||
## This exception does not invalidate any other reasons why a work based on | |||||
## this file might be covered by the GNU General Public License. | |||||
## | |||||
## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. | |||||
## at http://sources.redhat.com/ecos/ecos-license/ | |||||
## ------------------------------------------- | |||||
#####ECOSGPLCOPYRIGHTEND#### | |||||
#=============================================================================== | |||||
######DESCRIPTIONBEGIN#### | |||||
# | |||||
# Author(s): jlarmour,bartv | |||||
# Contact(s): | |||||
# Date: 2001-07-20 | |||||
# Purpose: | |||||
# Description: | |||||
# Usage: file2c.tcl <file to encode> <output C header file> | |||||
# | |||||
#####DESCRIPTIONEND#### | |||||
#=============================================================================== | |||||
if { $argc != 2 } { | |||||
puts "Usage: html2tcl.tcl <infile> <outfile>" | |||||
exit 1 | |||||
} | |||||
set infile [lindex $argv 0] | |||||
set outfile [lindex $argv 1] | |||||
set infilefd [open $infile "r"] | |||||
set data [read $infilefd] | |||||
close $infilefd | |||||
if [string match *\.tcl $infile]==0 { | |||||
puts "Not .tcl file, skipping $infile" | |||||
exit 0 | |||||
} | |||||
set outfilefd [ open $outfile "w" ] | |||||
if [regexp -start 0 {^\s*<html.*} $data]==0 { | |||||
puts "copy $infile" | |||||
puts -nonewline $outfilefd $data | |||||
close $outfilefd | |||||
exit 0 | |||||
} | |||||
puts "converting $infile" | |||||
set result "" | |||||
append result "# converted to .tcl by html2tcl.tcl\n" | |||||
append result "set buffer \"\"\n" | |||||
set pos 0 | |||||
set done 0 | |||||
while {$done==0} { | |||||
set start [string first <tcl> $data $pos] | |||||
if $start==-1 { | |||||
# We're done... | |||||
set done 1 | |||||
set start [string length $data] | |||||
set end $start | |||||
} else { | |||||
set end [string first </tcl> $data $start] | |||||
if $end==-1 { | |||||
# uh-oh, not closed | |||||
puts "<tcl> not closed!" | |||||
exit 1 | |||||
} | |||||
} | |||||
#puts "done $done start $start end $end" | |||||
# Dump HTML into resulting file. | |||||
append result "append buffer {" | |||||
append result [string range $data $pos [expr $start-1]] | |||||
#puts [string range $data $pos $start] | |||||
append result "}\n" | |||||
# Dump TCL into resulting file. | |||||
append result "[string range $data [expr $start+5] [expr $end-1]]\n" | |||||
set pos [expr $end+6] | |||||
} | |||||
append result "start_chunked \"html\"\n" | |||||
append result {write_chunked $buffer} "\n" | |||||
append result "end_chunked\n" | |||||
puts $outfilefd $result | |||||
close $outfilefd |
@@ -1,100 +0,0 @@ | |||||
# some dummy proc's to get things going for test purposes | |||||
proc ip {} { | |||||
return 10.0.0.55 | |||||
} | |||||
proc start_chunked {a} { | |||||
global httpdata | |||||
global httpmime | |||||
set httpmime $a | |||||
set httpdata "" | |||||
} | |||||
proc write_chunked {a} { | |||||
global httpdata | |||||
append httpdata $a | |||||
} | |||||
proc end_chunked {} { | |||||
} | |||||
#proc formfetch {a} { | |||||
# global httppostdata | |||||
#catch { | |||||
# echo "$a=$httppostdata($a)" | |||||
#return $httppostdata($a) | |||||
#} | |||||
# | |||||
#return "" | |||||
#} | |||||
proc tohex {a} { | |||||
set r "" | |||||
while 1 { | |||||
set rem [expr $a%16] | |||||
set a [expr $a/16] | |||||
set r [string index "0123456789abcdef" $rem]$r | |||||
if ($a==0) then break | |||||
} | |||||
return $r | |||||
} | |||||
# encode text | |||||
proc encode {a} { | |||||
return [string map {\n <br/> { } { } \t { } > > < < / /} $a] | |||||
} | |||||
#stubs that can be overriden to save between sessions | |||||
proc load_var {a} { | |||||
global glob_var | |||||
catch { | |||||
return $glob_var($a) | |||||
} | |||||
return "" | |||||
} | |||||
#stubs that can be overriden to save between sessions | |||||
proc save_var {a b} { | |||||
catch { | |||||
set glob_var($a) $b | |||||
return "" | |||||
} err | |||||
set glob_var($a) "" | |||||
return "" | |||||
} | |||||
proc to_textarea {a} { | |||||
return [string map {& & > > < < / /} $a] | |||||
} | |||||
proc from_textarea {a} { | |||||
return [string map {> > < < & & / /} $a] | |||||
} | |||||
proc lunion {a b} { | |||||
foreach e $a { | |||||
set x($e) {} | |||||
} | |||||
foreach e $b { | |||||
if {![info exists x($e)]} { | |||||
lappend a $e | |||||
} | |||||
} | |||||
return $a | |||||
} | |||||
proc first_flash_base {} { | |||||
set t [lindex 0 [ocd_flash_banks]] | |||||
return $t(base) | |||||
} |
@@ -1,376 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="index.tcl" style="font-weight: bold;">Target Status</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl" style="font-weight: bold;">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>OpenOCD debugger</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
<table> | |||||
<tr><td style="height:10px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:5px;width:535px;"> </td></tr> | |||||
</table> | |||||
<H1>Target Status</H1> | |||||
<table> | |||||
<tr> | |||||
<td class="fontbigger"> | |||||
} | |||||
set form_address [formfetch form_address] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Halt"]==0} { | |||||
append console [encode [capture_catch "halt"]] | |||||
} | |||||
if {[string compare $form_action "Resume"]==0} { | |||||
append console [encode [capture_catch "resume"]] | |||||
} | |||||
if {[string compare $form_action "Reset and run"]==0} { | |||||
append console [encode [capture_catch "reset run"]] | |||||
} | |||||
if {[string compare $form_action "Power on"]==0} { | |||||
append console [encode [capture_catch "power on"]] | |||||
} | |||||
if {[string compare $form_action "Power off"]==0} { | |||||
append console [encode [capture_catch "power off"]] | |||||
} | |||||
append buffer { | |||||
} | |||||
append console [encode [capture_catch poll]] | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
<form action="index.tcl" method="post"> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Reset and run"></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Halt"></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Resume"></td> | |||||
<td style="width:50px;"></td><td><input type="submit" name="form_action" value="Power on"></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Power off"></td> | |||||
</tr></table> | |||||
<br> | |||||
<br> | |||||
<p> | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="index.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Target status shows that status of the connected target. </p> | |||||
<p><b>Current target</b> - selected target configuration. <br> | |||||
<p><b>Startup</b> - whether or not the target script ran to completion. Note | |||||
that even if the target is disconnected, powered down or unresponsive, the | |||||
startup script will still run to completion. Startup - OK does not mean | |||||
that the target is fully operational, simply that the configuration script | |||||
did not contain syntax errors for instance. | |||||
See log for details. <br> | |||||
<p><b>Target power</b> - Detects power on target. <br> | |||||
If the JTAG cable is not connected, or the target has no power, then no target power will be detected.</p> | |||||
<p>Type "help power" in telnet for command to control power relay.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,343 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>Zylin ZY1000 JTAG debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
<img src="menu_cuts/logo_top.png" style="border:0px;"/> | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="openocd.tcl" style="">Run Command</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="guiupload.tcl" style="">Upload File to ZY1000</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="log.tcl#tail" style="">View Tail of Log</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl" style="font-weight: bold;">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>View Tail of Log</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
append buffer "<code style=\"white-space: nowrap;\">" | |||||
append buffer [encode [log]] | |||||
append buffer {<p><p><p><a name="tail"/>} | |||||
append buffer {<a href="log.tcl} | |||||
append buffer "?rnd=[rand]" | |||||
append buffer {#tail">Refresh</a>} | |||||
append buffer {<p>} | |||||
append buffer "</code>"; | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="log.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/ZY1000_Quick_Start_Guide.pdf">Quick Start Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000_contact.html">Contact Zylin AS</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td/> | |||||
<td> | |||||
<img border="0" src="menu_cuts/logo_bottom.png"/> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,973 +0,0 @@ | |||||
<?xml version = "1.0" encoding="iso-8859-1" standalone="yes"?> | |||||
<?xml-stylesheet type="text/xsl" href="plaintext.xsl"?> | |||||
<website> | |||||
<language lang="Norsk"> | |||||
<page lang="eng"> | |||||
<outfile>index.tcl</outfile> | |||||
<menutext>Config Target</menutext> | |||||
<menulink>index.tcl</menulink> | |||||
<pageheading>OpenOCD debugger</pageheading> | |||||
<level2parent>index.tcl</level2parent> | |||||
<level2menu href="index.tcl" title="Target Status" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
<!-- | |||||
<level2menu href="terminal.tcl" title="UART forwarding" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
--> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<table> | |||||
<tr><td style="height:10px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:5px;width:535px;"> </td></tr> | |||||
</table> | |||||
<H1>Target Status</H1> | |||||
<table> | |||||
<tr> | |||||
<td class="fontbigger"> | |||||
<tcl> | |||||
set form_address [formfetch form_address] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Halt"]==0} { | |||||
append console [encode [capture_catch "halt"]] | |||||
} | |||||
if {[string compare $form_action "Resume"]==0} { | |||||
append console [encode [capture_catch "resume"]] | |||||
} | |||||
if {[string compare $form_action "Reset and run"]==0} { | |||||
append console [encode [capture_catch "reset run"]] | |||||
} | |||||
if {[string compare $form_action "Power on"]==0} { | |||||
append console [encode [capture_catch "power on"]] | |||||
} | |||||
if {[string compare $form_action "Power off"]==0} { | |||||
append console [encode [capture_catch "power off"]] | |||||
} | |||||
</tcl> | |||||
<tcl>append console [encode [capture_catch poll]]</tcl> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
<form action="index.tcl" method="post"> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Reset and run"></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Halt"></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Resume"></td> | |||||
<td style="width:50px;"></td><td><input type="submit" name="form_action" value="Power on"></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Power off"></td> | |||||
</tr></table> | |||||
<br> | |||||
<br> | |||||
<p> | |||||
</form> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<markup_code><![CDATA[ | |||||
<p>Target status shows that status of the connected target. </p> | |||||
<p><b>Current target</b> - selected target configuration. <br> | |||||
<p><b>Startup</b> - whether or not the target script ran to completion. Note | |||||
that even if the target is disconnected, powered down or unresponsive, the | |||||
startup script will still run to completion. Startup - OK does not mean | |||||
that the target is fully operational, simply that the configuration script | |||||
did not contain syntax errors for instance. | |||||
See log for details. <br> | |||||
<p><b>Target power</b> - Detects power on target. <br> | |||||
If the JTAG cable is not connected, or the target has no power, then no target power will be detected.</p> | |||||
<p>Type "help power" in telnet for command to control power relay.</p> | |||||
]]></markup_code> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>targets.tcl</outfile> | |||||
<level2parent>documentation.tcl</level2parent> | |||||
<pageheading>Target config quick start guide</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
A target needs an openocd.cfg file. This config file sets up | |||||
the CPU, flash and reset init script. Either OpenOCD ships with an | |||||
openocd.cfg file for your target or you need to take an existing | |||||
config file and modify it for your needs. | |||||
<p> | |||||
The reset init script is crucial. It will set up e.g. MMU, chip | |||||
select registers, etc. after a reset. The init.cfg (reset init script) | |||||
is embedded into the openocd.cfg file in the sampls OpenOCD provides. | |||||
<p> | |||||
Writing an openocd.cfg from scratch is a non-trivial exercise, but | |||||
fortunally it only has to be done once for a target and afterwards it | |||||
rarely if ever needs to be changed. | |||||
]]></markup_code> | |||||
<right_column> | |||||
Quick start guide on how to configure a target. | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>flashinfo.tcl</outfile> | |||||
<menutext>Flash</menutext> | |||||
<menulink>flashinfo.tcl</menulink> | |||||
<pageheading>Flash Information</pageheading> | |||||
<level2parent>flashinfo.tcl</level2parent> | |||||
<level2menu href="flashinfo.tcl" title="Info" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
<level2menu href="erase.tcl" title="Erase" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
<level2menu href="flash.tcl" title="Program / Verify" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
<level2menu href="production.tcl" title="Production" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<div style="font-size:14px;">Configured flash banks:</div> | |||||
<p> | |||||
<code style="white-space: nowrap;"> | |||||
<tcl> | |||||
set flash_return [ocd_flash_banks] | |||||
if {[llength $flash_return]!=0} { | |||||
append buffer [encode [flash banks]] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Reset CPU and probe flash"]==0} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
append buffer [encode [capture_catch "flash probe 0"]] | |||||
append buffer [encode [capture_catch "flash info 0"]] | |||||
} | |||||
} else { | |||||
append buffer "No flash bank configured." | |||||
} | |||||
</tcl> | |||||
<p> | |||||
<form action="flashinfo.tcl" method="post"> | |||||
<input type="submit" name="form_action" value="Reset CPU and probe flash"> | |||||
</form> | |||||
<tcl> | |||||
foreach a [ocd_flash_banks] { | |||||
append buffer "Flash bank at [format "0x%08x size 0x%08x" $a(base) $a(size)]: " | |||||
</tcl> | |||||
<form action="downloadmem.tcl" method="post"> | |||||
<input type="hidden" name="form_address" value="<tcl>append buffer [format "0x%08x" $a(base)]</tcl>"> | |||||
<input type="hidden" name="form_length" value="<tcl>append buffer [format "0x%08x" $a(size)]</tcl>"> | |||||
<input type="submit" value="Download" name="form_action"> | |||||
<br> | |||||
</form> | |||||
<tcl> | |||||
} | |||||
</tcl> | |||||
</code> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
<p>Here you will find information about the flash chips that you have | |||||
in your configuration.<p/> | |||||
<p><b>Reset CPU and probe flash</b> - This will reset the CPU and show | |||||
you more detailed information about your flash. This includes information about | |||||
the different sectors in the flash, and the flash driver used.</p> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>flash.tcl</outfile> | |||||
<level2parent>flashinfo.tcl</level2parent> | |||||
<pageheading>Program / Verify Flash</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_offset [formfetch form_offset] | |||||
set form_action [formfetch form_action] | |||||
set form_type [formfetch form_type] | |||||
set post "" | |||||
catch {set post $post_data} err | |||||
if {[string compare $form_offset ""]==0} { | |||||
set form_offset 0 | |||||
} | |||||
if {[string compare $form_type ""]==0} { | |||||
set form_type "" | |||||
} | |||||
</tcl><code style="white-space: nowrap;"><tcl> | |||||
set data "" | |||||
append buffer {<form enctype="multipart/form-data" action="flash.tcl" method="post">} | |||||
set action_reset [expr {[string length $form_action]!=0}] | |||||
set action_flash [expr {[string compare $form_action "Flash"]==0 || [string compare $form_action "Flash and verify"]==0}] | |||||
set action_verify [expr {[string compare $form_action "Verify"]==0 || [string compare $form_action "Flash and verify"]==0}] | |||||
if {$action_reset} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
} | |||||
</tcl> | |||||
</code><tcl> | |||||
append buffer {<table>} | |||||
append buffer {<tr><td class="formtext">File</td><td><input type="file" name="form_filecontent"></td></tr>} | |||||
append buffer "<tr><td class=\"formtext\" >Offset</td><td><input type=\"text\" name=\"form_offset\" value=\"$form_offset\"></td></tr>" | |||||
</tcl> | |||||
<tr><td class="formtext" style="padding-top:1px;">Type</td><td> | |||||
<select name="form_type"> | |||||
<option | |||||
<tcl>if {[string compare $form_type ""]==0} { append buffer {selected="selected"} } </tcl> | |||||
value ="">auto</option> | |||||
<option | |||||
<tcl>if {[string compare $form_type "elf"]==0} { append buffer {selected="selected"} } </tcl> | |||||
value ="elf">elf</option> | |||||
<option | |||||
<tcl>if {[string compare $form_type "bin"]==0} { append buffer {selected="selected"} } </tcl> | |||||
value ="bin">binary</option> | |||||
<option | |||||
<tcl>if {[string compare $form_type "ihex"]==0} { append buffer {selected="selected"} } </tcl> | |||||
value ="ihex">ihex</option> | |||||
<!-- broken <option value ="s19">s19</option> --> | |||||
</select> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Flash" ></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Flash and verify" ></td> | |||||
<td class="buttonspacesmall"></td><td><input type="submit" name="form_action" value="Verify" ></td> | |||||
</tr></table> | |||||
<p> | |||||
<tcl> | |||||
if {$action_flash||$action_verify} { | |||||
catch {writeform form_filecontent $upload_filename} result | |||||
append console [encode $result] | |||||
} | |||||
append buffer "<br>" | |||||
if {$action_flash} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append buffer "<b>" | |||||
if {[catch {capture_catch {eval "flash write_image erase $upload_filename $form_offset $form_type"}} result]} { | |||||
append buffer "Flash write failed<br>" | |||||
append console [encode $result] | |||||
} else { | |||||
append buffer [encode $result] | |||||
append buffer "Flash write succeed<br>" | |||||
} | |||||
append buffer "</b>" | |||||
} | |||||
if {$action_verify} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append buffer "<b>" | |||||
if {[catch {capture_catch {eval "verify_image $upload_filename $form_offset $form_type"}} result]} { | |||||
append buffer "Verify failed<br>" | |||||
append console [encode $result] | |||||
} else { | |||||
append buffer [encode $result] | |||||
append buffer "Verify succeed<br>" | |||||
} | |||||
append buffer "</b>" | |||||
} | |||||
</tcl> | |||||
</form> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
<p>Program and/or verify the flash on your target.</p> | |||||
<p><b>Flash</b> - Halt CPU, automatically erase flash if required and program flash with image.</p> | |||||
<p><b>Flash and verify</b> - Programs the flash and verifies the programmed flash content is correct.</p> | |||||
<p><b>Verify</b> - Halt CPU and verify image in flash or RAM.</p> | |||||
<p><b>Offset</b> - This value is added to the address of the image.<br> | |||||
Binary images start at address 0 by default, whereas elf and ihex have addresses encoded into the image.<br> | |||||
Typically 0 for elf/ihex and the address to write the image to for binary files.</p> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>production.tcl</outfile> | |||||
<level2parent>flashinfo.tcl</level2parent> | |||||
<pageheading>Production</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_action [formfetch form_action] | |||||
set form_serialnumber [formfetch form_serialnumber] | |||||
append buffer [production_info] | |||||
</tcl> | |||||
<form enctype="multipart/form-data" action="production.tcl" method="post"> | |||||
<code style="white-space: nowrap;"> | |||||
<tcl> | |||||
if {[string compare $form_action "Upload firmware"]==0} { | |||||
set wrotedata [catch {writeform form_filecontent $upload_filename} result] | |||||
append buffer [encode $result] | |||||
if {$wrotedata==0} { | |||||
append buffer "<br>Running production procedure<p>" | |||||
append buffer "<br>Reset and init: <br>" | |||||
append console [encode [capture_catch {catch "production $upload_filename $form_serialnumber"}]] | |||||
} | |||||
} | |||||
if {[string compare $form_action "Test"]==0} { | |||||
append buffer "<br>Running production test. Output from first 10 seconds printed below. <p>" | |||||
append console [encode [capture_catch {catch production_test}]] | |||||
} | |||||
if {[string compare $form_action "Power on"]==0} { | |||||
append console [encode [capture_catch "power on"]] | |||||
} | |||||
if {[string compare $form_action "Power off"]==0} { | |||||
append console [encode [capture_catch "power off"]] | |||||
} | |||||
</tcl> | |||||
</code> | |||||
<tcl> | |||||
append buffer {<p class="formtext">Firmware file(raw binary) <input type="file" name="form_filecontent"><p>} | |||||
append buffer {<p class="formtext">Serial number <input type="text" name="form_serialnumber"><p>} | |||||
</tcl> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Upload firmware" ></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Test"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Power on"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Power off"> | |||||
</tr></table> | |||||
</form> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
The target script can implement the "production", "production_info" and "production_test" tcl proc's. These procedures | |||||
are used on this page. There are default implementations that do nothing. | |||||
<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> | |||||
<p><b>Test</b> - Power up target, run 10 second target test. Output is provided via the DCC output channel. </p> | |||||
<p><b>Power on</b> - Power on target.</p> | |||||
<p><b>Power off</b> - Power off target.</p> | |||||
<p><b>Serial number</b> - A target script can use this string in the production procedure. Type "help production" for more info.</p> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>erase.tcl</outfile> | |||||
<menulink>erase.tcl</menulink> | |||||
<pageheading>Erase Flash</pageheading> | |||||
<level2parent>flashinfo.tcl</level2parent> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_address [formfetch form_address] | |||||
set form_length [formfetch form_length] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_length ""]==0} { | |||||
set form_length 0x10000 | |||||
} | |||||
if {[string compare $form_address ""]==0} { | |||||
if {[catch {[first_flash_base]} result]==0} { | |||||
set form_address "0x[tohex $result]" | |||||
} | |||||
} | |||||
if {[string compare $form_address ""]!=0} { | |||||
if {[string compare $form_action "Erase"]==0} { | |||||
append buffer "<code style=\"white-space: nowrap;\">" | |||||
append console [encode [capture_catch { | |||||
reset init | |||||
flash erase_address $form_address $form_length}]] | |||||
append buffer </code> | |||||
} | |||||
} | |||||
</tcl> | |||||
<form action="erase.tcl" method="post"> | |||||
<table> | |||||
<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> | |||||
<tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="<tcl>append buffer $form_length</tcl>"></td></tr> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<input type="submit" name="form_action" value="Erase"><br> | |||||
</form> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
<p>Note that flash programming will erase flash if required.<p/> | |||||
<p>Reset and init CPU, then erase address range.</p> | |||||
<p>The length field is specified in number of bytes.</p> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>run.tcl</outfile> | |||||
<menulink>run.tcl</menulink> | |||||
<pageheading>Run program</pageheading> | |||||
<level2parent>flashinfo.tcl</level2parent> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_address [formfetch form_address] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Run from address"]==0} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append console [encode [capture_catch "wait_halt"]] | |||||
append console [encode [capture_catch "resume $form_address"]] | |||||
} | |||||
if {[string compare $form_action "Halt"]==0} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append console [encode [capture_catch "wait_halt"]] | |||||
} | |||||
if {[string compare $form_action "Reset and run"]==0} { | |||||
append console [encode [capture_catch "reset run"]] | |||||
} | |||||
if {[string compare $form_action "Reset and init"]==0} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
} | |||||
append console [encode [capture_catch poll]] | |||||
</tcl> | |||||
<form action="run.tcl" method="post"> | |||||
<table> | |||||
<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> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<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> | |||||
</form> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
<p>Reset and run - reset CPU and let it run.</p> | |||||
<p>Halt - halt CPU.</p> | |||||
<p>Run from address - halt CPU and resume from address. Default is resume from current address.</p> | |||||
<p>Reset and init - reset CPU and run init script.</p> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>browsemem.tcl</outfile> | |||||
<menutext>Memory</menutext> | |||||
<menulink>browsemem.tcl</menulink> | |||||
<pageheading>Browse / Edit Memory</pageheading> | |||||
<level2parent>browsemem.tcl</level2parent> | |||||
<level2menu href="browsemem.tcl" title="Browse / Edit" titlestyle="color:#4e6627;"> | |||||
<![CDATA[ | |||||
Browse and edit memory. | |||||
]]> | |||||
</level2menu> | |||||
<level2menu href="downloadmem.tcl" title="Download" titlestyle="color:#4e6627;"> | |||||
<![CDATA[ | |||||
Copy memory range to developer machine | |||||
]]> | |||||
</level2menu> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_address [formfetch form_address] | |||||
set form_length [formfetch form_length] | |||||
set form_type [formfetch form_type] | |||||
set form_action [formfetch form_action] | |||||
set form_value [formfetch form_value] | |||||
if {[string compare $form_length ""]==0} { | |||||
set form_length 0 | |||||
} | |||||
if {$form_length<=0} { | |||||
set form_length 0x80 | |||||
} | |||||
if {$form_length>0x1000} { | |||||
set form_length 0x1000 | |||||
} | |||||
if {[string compare $form_type ""]==0} { | |||||
set form_type mdw | |||||
} | |||||
if {[string compare $form_type "mdw"]==0} { | |||||
set wordsize 4 | |||||
set modify_cmd mww | |||||
} | |||||
if {[string compare $form_type "mdh"]==0} { | |||||
set wordsize 2 | |||||
set modify_cmd mwh | |||||
} | |||||
if {[string compare $form_type "mdb"]==0} { | |||||
set wordsize 1 | |||||
set modify_cmd mwb | |||||
} | |||||
if {[string compare $form_address ""]!=0} { | |||||
if {[string compare $form_action "Previous"]==0} { | |||||
# Kludge! Work around problems parsing hex in Jim Tcl expressions | |||||
incr form_address ; set form_address [expr $form_address-1] | |||||
if {$form_address-$form_length>0} { | |||||
set form_address "0x[tohex [expr $form_address-$form_length]]" | |||||
} else { | |||||
set form_address "0x0" | |||||
} | |||||
} | |||||
if {[string compare $form_action "Next"]==0} { | |||||
# Kludge! Work around problems parsing hex in Jim Tcl expressions | |||||
incr form_address ; set form_address [expr $form_address-1] | |||||
set form_address "0x[tohex [expr $form_address+$form_length]]" | |||||
} | |||||
if {[string compare $form_action "Modify"]==0} { | |||||
append console [capture_catch "$modify_cmd $form_address $form_value"] | |||||
} | |||||
if {[string compare $form_action "Fill"]==0} { | |||||
append console [capture_catch "$modify_cmd $form_address $form_value $form_length"] | |||||
} | |||||
} | |||||
</tcl> | |||||
<form action="browsemem.tcl" method="post"> | |||||
<table> | |||||
<tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="<tcl>append buffer $form_address</tcl>"></td></tr> | |||||
<tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="<tcl>append buffer "0x[tohex $form_length]"</tcl>"></td></tr> | |||||
<tr><td class="formtext">Value</td><td><input type="text" name="form_value" value="<tcl>append buffer $form_value</tcl>"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Modify"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Fill"></td></tr> | |||||
<tr><td class="formtext">Type</td><td style="padding-top:1px;"> | |||||
<select name="form_type"> | |||||
<option | |||||
<tcl>if {[string compare $form_type "mdb"]==0} { append buffer {selected="selected"} } </tcl> value ="mdb">8 bit | |||||
</option> | |||||
<option | |||||
<tcl>if {[string compare $form_type "mdh"]==0} { append buffer {selected="selected"} } </tcl> value ="mdh">16 bit | |||||
</option> | |||||
<option | |||||
<tcl>if {[string compare $form_type "mdw"]==0} { append buffer {selected="selected"} } </tcl>value ="mdw">32 bit | |||||
</option> | |||||
</select> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Refresh"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Previous" ></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Next" ></td> | |||||
</tr></table> | |||||
<br> | |||||
</form> | |||||
<p> | |||||
<div class="fontbigger">Memory:</div><p> | |||||
<code style="white-space: nowrap; font-size:11px;font:courier new;"> | |||||
<tcl> | |||||
if {[string compare $form_address ""]!=0} { | |||||
append console [encode [capture_catch halt]] | |||||
append buffer [encode [capture_catch "$form_type $form_address [expr $form_length]"]] | |||||
} | |||||
</tcl> | |||||
</code> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
<p>Browse and edit target memory.<br> | |||||
Length is in bytes, maximum 4096 bytes.</p> | |||||
<p>An error message is shown when trying to browse or edit memory which cases a CPU fault.</p> | |||||
<p>CPU will be halted if required.</p> | |||||
<p><b>Modify</b> - Will modify only one byte, half-word or word starting at Address.</p> | |||||
<p><b>Fill</b> - Will fill the specified region with the specified value.</p> | |||||
<p><b>Refresh</b> - Display the content of the specified memory area.</p> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>downloadmem.tcl</outfile> | |||||
<level2parent>browsemem.tcl</level2parent> | |||||
<pageheading>Download Memory Range</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_address [formfetch form_address] | |||||
set form_length [formfetch form_length] | |||||
set form_action [formfetch form_action] | |||||
</tcl> | |||||
<form action="downloadmem.tcl" method="post"> | |||||
<table> | |||||
<tr><td class="formtext">Address</td><td><input type="text" name="form_address" value="<tcl>append buffer $form_address</tcl>"></td></tr> | |||||
<tr><td class="formtext">Length</td><td><input type="text" name="form_length" value="<tcl>append buffer $form_length</tcl>"></td></tr> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<input type="submit" value="Download" name="form_action"> | |||||
</form> | |||||
<tcl> | |||||
if {[string compare $form_action "Download"]==0} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
append console [encode [capture_catch "dump_image /tmp/dump.bin $form_address $form_length"]] | |||||
</tcl> | |||||
<form action="../dump.bin" target="_blank"> | |||||
<input type="submit" name="form_action" value="Save downloaded memory"> | |||||
</form> | |||||
<tcl> | |||||
} | |||||
</tcl> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
Download memory from target. <br> | |||||
<b>Note</b> that download memory can take | |||||
a long time(potentially minutes for megabytes at low JTAG clk speeds). | |||||
<p/> | |||||
Once the memory is downloaded a link is available on the page to download | |||||
the file to your PC. | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>openocd.tcl</outfile> | |||||
<menutext>OpenOCD</menutext> | |||||
<menulink>openocd.tcl</menulink> | |||||
<pageheading>Run Command</pageheading> | |||||
<level2parent>openocd.tcl</level2parent> | |||||
<level2menu href="openocd.tcl" title="Run Command" titlestyle="color:#4e6627;"> | |||||
</level2menu> | |||||
<level2menu href="guiupload.tcl" title="Upload File" titlestyle="color:#4e6627;"> | |||||
<![CDATA[ | |||||
Upload file | |||||
]]> | |||||
</level2menu> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_command [formfetch form_command] | |||||
set form_edittext "" | |||||
if {[string length $form_command]>0} { | |||||
set form_edittext [capture_catch {eval $form_command}] | |||||
} | |||||
append buffer {<form action="openocd.tcl" method="post">} "\n" | |||||
append buffer {Command<br>} | |||||
append buffer {<textarea style="overflow:auto;" rows="5" cols="65" name="form_command" wrap="off">} | |||||
append buffer [to_textarea $form_command] | |||||
append buffer {</textarea><br>} | |||||
append buffer {<input type="submit" value="Run" name="form_action" ><br>} | |||||
append buffer {<textarea style="overflow:auto;" rows="21" cols="65" name="form_edittext" readonly=1 wrap="off">} | |||||
append buffer [to_textarea $form_edittext] | |||||
append buffer {</textarea><br>} | |||||
append buffer {</form>} "\n" | |||||
</tcl> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
<p>Run tcl statement(s). Add "ocd_" prefix to OpenOCD commands otherwise | |||||
there will be no output, e.g. "reset init" use "ocd_reset init". | |||||
<p/> | |||||
<p><a href="/ram/log">Click here to download log</a>.</p> | |||||
<p>To download log you can also use commands like "wget http://<tcl>append buffer [ip]</tcl>/ram/log", or | |||||
point your web browser to said address.</p> | |||||
<p> | |||||
You can also execute tcl commands using curl from your developer PC: | |||||
</p> | |||||
<code> | |||||
curl --form form_command=ocd_version <tcl>append buffer [ip]</tcl>runtcl.tcl | |||||
</code> | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>guiupload.tcl</outfile> | |||||
<level2parent>openocd.tcl</level2parent> | |||||
<pageheading>Upload File</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_filename [formfetch form_filename]; | |||||
set form_action [formfetch form_action]; | |||||
#set form_filecontent [formfetch form_filecontent]; | |||||
append buffer {<form enctype="multipart/form-data" action="guiupload.tcl" method="post">} | |||||
append buffer <br> | |||||
if {[string compare $form_action "Upload"]==0} { | |||||
if {[catch {writeform form_filecontent $form_filename} result]==0} { | |||||
append buffer [encode $result] | |||||
} else { | |||||
append buffer Wrote $form_filename | |||||
} | |||||
} | |||||
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>} | |||||
append buffer {<td class="formtext">File to upload</td><td><input type="file" name="form_filecontent"></td></tr></table>} | |||||
append buffer {<table><tr><td style="height:15px;width:535px;"> </td></tr><tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr><tr><td style="height:15px;width:535px;"> </td></tr></table>} | |||||
append buffer {<input type="submit" name="form_action" value="Upload" ><br> } | |||||
append buffer {</form>} | |||||
</tcl> | |||||
]]></markup_code> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<outfile>targets.tcl</outfile> | |||||
<level2parent>documentation.tcl</level2parent> | |||||
<pageheading>Target config quick start guide</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
A target needs an openocd.cfg file. This config file sets up | |||||
the CPU, flash and reset init script. Either OpenOCD ships with an | |||||
openocd.cfg file for your target or you need to take an existing | |||||
config file and modify it for your needs. | |||||
<p> | |||||
The reset init script is crucial. It will set up e.g. MMU, chip | |||||
select registers, etc. after a reset. The init.cfg (reset init script) | |||||
is embedded into the openocd.cfg file in the sampls OpenOCD provides. | |||||
<p> | |||||
Writing an openocd.cfg from scratch is a non-trivial exercise, but | |||||
fortunally it only has to be done once for a target and afterwards it | |||||
rarely if ever needs to be changed. | |||||
]]></markup_code> | |||||
<right_column> | |||||
Quick start guide on how to configure a target. | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
<page lang="eng"> | |||||
<menulink>index.tcl</menulink> | |||||
<level2parent>index.tcl</level2parent> | |||||
<outfile>terminal.tcl</outfile> | |||||
<pageheading>UART forwarding</pageheading> | |||||
<pagetext> | |||||
<markup_code><![CDATA[ | |||||
<tcl> | |||||
set form_baudrate [formfetch form_baudrate] | |||||
if {[string length $form_baudrate]==0} { | |||||
set form_baudrate [ocd_uart] | |||||
set form_baudrate [string range $form_baudrate 0 [expr [string length $form_baudrate]-2]] | |||||
} | |||||
set form_action [formfetch form_action] | |||||
</tcl> | |||||
<form action="terminal.tcl" method="post"> | |||||
Target baudrate: | |||||
<select name="form_baudrate"> | |||||
<tcl> | |||||
foreach i {9600 19200 38400 57600 115200} { | |||||
</tcl> | |||||
<option <tcl>if {[string compare $form_baudrate $i]==0} { append buffer {selected="selected"} } </tcl> | |||||
value ="<tcl>append buffer $i</tcl>"><tcl>append buffer $i</tcl></option> | |||||
<tcl> | |||||
} | |||||
</tcl> | |||||
</select> | |||||
<p> | |||||
<input type="submit" name="form_action" value="Set baudrate" > | |||||
</form> | |||||
<tcl> | |||||
if {[string compare $form_action "Set baudrate"]==0} { | |||||
append console [encode [ocd_uart $form_baudrate]] | |||||
} | |||||
</tcl> | |||||
<h2>Simple UART</h2> | |||||
This terminal window is purely for illustrative purposes. Use telnet or a terminal program | |||||
to talk to the target over TCP/IP for anything but trivial case of reading/writing a few | |||||
lines of texts in simple tests. | |||||
<p> | |||||
]]></markup_code> | |||||
<right_column> | |||||
<![CDATA[ | |||||
Serial port data to target is forwarded(both directions) in the simple terminal window | |||||
to the left. Alternatively you can <b>telnet <tcl>append buffer [ip]</tcl> 5555</b> | |||||
or connect via TCP/IP from e.g. HyperTerminal. | |||||
<p> | |||||
Type "help uart" in telnet for information on how to set uart speed for target. Normally | |||||
the uart speed is set from the target configuration script by adding an "uart N", where | |||||
N is the baudrate. | |||||
]]> | |||||
</right_column> | |||||
</pagetext> | |||||
</page> | |||||
</language> | |||||
</website> |
@@ -1,298 +0,0 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE xsl:stylesheet [<!ENTITY nbsp " ">]> | |||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/REC-html40" version="1.0"> | |||||
<xsl:output method="html" version="4.0" indent="yes" encoding="UTF-8" | |||||
media-type="text/plain; charset=UTF-8"/> | |||||
<xsl:param name="pagetogenerate" select="UNDEFINED"/> | |||||
<xsl:template match="page[outfile!=$pagetogenerate]"> | |||||
</xsl:template> | |||||
<xsl:template match="page[outfile=$pagetogenerate]"> | |||||
<xsl:variable name="Xlevel2parent" select="level2parent"/> | |||||
<xsl:variable name="Xlevel3parent" select="level3parent"/> | |||||
<html> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"/> | |||||
<link href="menuweb.css" rel="stylesheet" type="text/css"/> | |||||
</head> | |||||
<tcl> | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
</tcl> | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div class="textlight" style="position:relative;left:15px;top:4px;"> | |||||
<tcl>append buffer [capture version]</tcl> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<!-- level 2 menu bar on left --> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td></td> | |||||
</tr> | |||||
<xsl:for-each select="parent::language/page[outfile = $Xlevel2parent]/level2menu"> | |||||
<tr> | |||||
<td> | |||||
<xsl:choose> | |||||
<xsl:when test="contains(@href, $pagetogenerate)"> | |||||
<xsl:attribute name="style">width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;</xsl:attribute> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:attribute name="style">width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;</xsl:attribute> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a> | |||||
<xsl:attribute name="href"> | |||||
<xsl:value-of select="@href"/> | |||||
</xsl:attribute> | |||||
<xsl:choose> | |||||
<xsl:when test="(@href = $pagetogenerate)"> | |||||
<xsl:attribute name="style">font-weight: bold;</xsl:attribute> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:choose> | |||||
<xsl:when test="(@href = $Xlevel3parent)"> | |||||
<xsl:attribute name="style">font-weight: bold;</xsl:attribute> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:attribute name="style"></xsl:attribute> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<xsl:value-of select="@title"/> | |||||
</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</xsl:for-each> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<!-- top level menu --> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<xsl:for-each select="parent::language/page"> | |||||
<xsl:if test="menutext"> | |||||
<td> | |||||
<xsl:choose> | |||||
<xsl:when test="(outfile = $pagetogenerate) or (outfile = $Xlevel2parent)"> | |||||
<xsl:attribute name="style">width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;</xsl:attribute> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:attribute name="style">width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;</xsl:attribute> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a> | |||||
<xsl:attribute name="href"><xsl:value-of select="menulink"/></xsl:attribute> | |||||
<xsl:if test="(outfile = $pagetogenerate)"> | |||||
<xsl:attribute name="style">font-weight: bold;</xsl:attribute> | |||||
</xsl:if> | |||||
<xsl:if test="(outfile = $Xlevel2parent)"> | |||||
<xsl:attribute name="style">font-weight: bold;</xsl:attribute> | |||||
</xsl:if> | |||||
<xsl:value-of select="menutext"/> | |||||
</a> | |||||
</div> | |||||
</td> | |||||
</xsl:if> | |||||
</xsl:for-each> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="6" style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="6" style="background-color:#ffffff;text-indent:30px;height:40px;"> | |||||
<H1><xsl:value-of select="pageheading"/></H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td colspan="6" style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;"> | |||||
<xsl:value-of disable-output-escaping="yes" select="pagetext/markup_code"/> | |||||
</td> | |||||
</tr> | |||||
<tcl> | |||||
<!-- This is the output from any OpenOCD commands --> | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
</tcl> | |||||
<tr style="height:100%;"> | |||||
<td colspan="6" style="height:100%;background-color:red;"> | |||||
<table class="textgray" style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%"> | |||||
<td style="width:25px;"> </td> | |||||
<tcl> | |||||
if {$show_details==1} { | |||||
append buffer <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text> | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer <xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text> | |||||
} else { | |||||
append buffer <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text> | |||||
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;"} | |||||
append buffer <xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text> | |||||
} | |||||
</tcl> | |||||
<a class="openocd"> | |||||
<xsl:attribute name="href"><xsl:value-of select="$pagetogenerate"/>?toggle_details=1</xsl:attribute> | |||||
<tcl> | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
</tcl> | |||||
</a> | |||||
<tcl> | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
</tcl> | |||||
<xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text>/td<xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text> | |||||
<tcl> | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
</tcl> | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tcl> | |||||
} | |||||
</tcl> | |||||
<tr> | |||||
<td colspan="6" style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"> | |||||
</td> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div class="textgray" style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3" style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');"></td> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3" style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;"> | |||||
<a href="http://openocd.berlios.de/doc/openocd.pdf" target="_blank">OpenOCD Manual</a><br/> | |||||
</td> | |||||
</tr> | |||||
<tr><td colspan="3" style="background-color:#d8d7d7;height:15px;"></td></tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"></td> | |||||
<td style="background-color:#999999;width:225px; height:1px;"></td> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"></td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr><td colspan="3" style="background-color:#d8d7d7;height:15px;"></td></tr> | |||||
<tr style="height:100%;"> | |||||
<td class="textgray" colspan="3" style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;"> | |||||
<xsl:choose> | |||||
<xsl:when test="(pagetext/right_column)"> | |||||
<xsl:value-of disable-output-escaping="yes" select="pagetext/right_column"/> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3" style="height:30px;background-image:url('menu_cuts/right_bottom.png');"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
</xsl:template> | |||||
</xsl:stylesheet> |
@@ -1,132 +0,0 @@ | |||||
a:link | |||||
{ | |||||
font-size: 12px; | |||||
color : #024d67; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a:visited | |||||
{ | |||||
font-size: 12px; | |||||
color : #024d67; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a:active | |||||
{ | |||||
font-size: 12px; | |||||
color : #024d67; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a:hover | |||||
{ | |||||
font-size: 12px; | |||||
color : #555555; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a.openocd:link | |||||
{ | |||||
font-size: 12px; | |||||
color : #555555; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a.openocd:visited | |||||
{ | |||||
font-size: 12px; | |||||
color : #555555; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a.openocd:active | |||||
{ | |||||
font-size: 12px; | |||||
color : #555555; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
a.openocd:hover | |||||
{ | |||||
font-size: 12px; | |||||
color : #024d67; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
} | |||||
body | |||||
{ | |||||
background-color : green; | |||||
background-color : #176e8c; | |||||
font-family : Arial; | |||||
font-size: 12px; | |||||
line-height: 15px; | |||||
color : #024d67; | |||||
} | |||||
h1 | |||||
{ | |||||
padding: 0px; | |||||
font-size: 18px; | |||||
font-weight:bold; | |||||
text-decoration : none; | |||||
margin-bottom: 8px; | |||||
} | |||||
td | |||||
{ | |||||
padding: 0px; | |||||
font-size: 12px; | |||||
vertical-align:top; | |||||
} | |||||
.textlight | |||||
{ | |||||
color: #cccccc; | |||||
padding: 0px; | |||||
font-size: 12px; | |||||
vertical-align:top; | |||||
} | |||||
.fontbigger | |||||
{ | |||||
font-size:14px; | |||||
} | |||||
.textgray | |||||
{ | |||||
color: #555555; | |||||
} | |||||
.formtext | |||||
{ | |||||
padding-top: 4px; | |||||
font-size: 14px; | |||||
padding-right:10px; | |||||
} | |||||
input | |||||
{ | |||||
font-size: 14px; | |||||
} | |||||
.buttonspacelarge | |||||
{ | |||||
width:20px; | |||||
} | |||||
.buttonspacesmall | |||||
{ | |||||
width:8px; | |||||
} |
@@ -1,355 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="openocd.tcl" style="font-weight: bold;">Run Command</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="guiupload.tcl" style="">Upload File</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl" style="font-weight: bold;">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Run Command</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_command [formfetch form_command] | |||||
set form_edittext "" | |||||
if {[string length $form_command]>0} { | |||||
set form_edittext [capture_catch {eval $form_command}] | |||||
} | |||||
append buffer {<form action="openocd.tcl" method="post">} "\n" | |||||
append buffer {Command<br>} | |||||
append buffer {<textarea style="overflow:auto;" rows="5" cols="65" name="form_command" wrap="off">} | |||||
append buffer [to_textarea $form_command] | |||||
append buffer {</textarea><br>} | |||||
append buffer {<input type="submit" value="Run" name="form_action" ><br>} | |||||
append buffer {<textarea style="overflow:auto;" rows="21" cols="65" name="form_edittext" readonly=1 wrap="off">} | |||||
append buffer [to_textarea $form_edittext] | |||||
append buffer {</textarea><br>} | |||||
append buffer {</form>} "\n" | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="openocd.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Run tcl statement(s). Add "ocd_" prefix to OpenOCD commands otherwise | |||||
there will be no output, e.g. "reset init" use "ocd_reset init". | |||||
<p/> | |||||
<p><a href="/ram/log">Click here to download log</a>.</p> | |||||
<p>To download log you can also use commands like "wget http://} | |||||
append buffer [ip] | |||||
append buffer {/ram/log", or | |||||
point your web browser to said address.</p> | |||||
<p> | |||||
You can also execute tcl commands using curl from your developer PC: | |||||
</p> | |||||
<code> | |||||
curl --form form_command=ocd_version } | |||||
append buffer [ip] | |||||
append buffer {runtcl.tcl | |||||
</code> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,429 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>Zylin ZY1000 JTAG debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
<img src="menu_cuts/logo_top.png" style="border:0px;"/> | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="index.tcl" style="">Target Status</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="preconfig.tcl" style="font-weight: bold;">Select Target Config</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="editconfigs.tcl" style="">Edit Configurations</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="reload.tcl" style="">Reload Config Scripts</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl" style="font-weight: bold;">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Select Preconfigured Target</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_target [formfetch form_target] | |||||
set form_action [formfetch form_action] | |||||
append buffer {<form enctype="multipart/form-data" action="preconfig.tcl" method="post">} | |||||
if {[string compare $form_action "Select and reload"]==0} { | |||||
capture_catch "trunc /config/settings/openocd.cfg" | |||||
capture_catch "append_file /config/settings/openocd.cfg script target/$form_target" | |||||
reboot | |||||
} | |||||
set form_target [load_target] | |||||
set files [ls /rom/target] | |||||
set files [lunion $files [ls /config/settings/target]] | |||||
set files [lsort $files] | |||||
if {[string compare $form_action "Select and reload"]!=0} { | |||||
append buffer { | |||||
<table><tr> | |||||
<td style="padding-top:1px;"> | |||||
<select name="form_target"> | |||||
} | |||||
set foundTarget 0 | |||||
foreach i $files { | |||||
if {[string match *.cfg $i]} { | |||||
append buffer { | |||||
<option | |||||
} | |||||
if {[string compare $form_target $i]==0} { | |||||
set foundTarget 1 | |||||
append buffer {selected="selected"} | |||||
} | |||||
append buffer { | |||||
value="} | |||||
append buffer $i | |||||
append buffer {">} | |||||
append buffer $i | |||||
append buffer {</option> | |||||
} | |||||
} | |||||
} | |||||
if {$foundTarget==0} { | |||||
append buffer { | |||||
<option selected="selected" value="">Preconfigured target not active</option> | |||||
} | |||||
} | |||||
append buffer { | |||||
</select> | |||||
</td> | |||||
<td class="buttonspacesmall"> </td> | |||||
<td> | |||||
<input type="submit" name="form_action" value="Select and reload"> | |||||
| |||||
<a href="editconfigs.tcl?form_action=Load&form_selected=} | |||||
append buffer "target/$form_target" | |||||
append buffer {">Edit target configuration</a> | |||||
</td> | |||||
</tr></table> | |||||
} | |||||
} else { | |||||
append buffer "Reloading setting(ca. 30 seconds)..." | |||||
} | |||||
append buffer { | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="preconfig.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/ZY1000_Quick_Start_Guide.pdf">Quick Start Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000_contact.html">Contact Zylin AS</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>ZY1000 comes with complete configurations for various targets.</p> | |||||
<p>These predefined configurations include reset init scripts and flash configuration.</p> | |||||
<p><b>Select and reload</b> - Select configuration and reboot ZY1000 unit.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td/> | |||||
<td> | |||||
<img border="0" src="menu_cuts/logo_bottom.png"/> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,392 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flashinfo.tcl" style="">Info</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="erase.tcl" style="">Erase</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flash.tcl" style="">Program / Verify</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="production.tcl" style="font-weight: bold;">Production</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl" style="font-weight: bold;">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Production</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_action [formfetch form_action] | |||||
set form_serialnumber [formfetch form_serialnumber] | |||||
append buffer [production_info] | |||||
append buffer { | |||||
<form enctype="multipart/form-data" action="production.tcl" method="post"> | |||||
<code style="white-space: nowrap;"> | |||||
} | |||||
if {[string compare $form_action "Upload firmware"]==0} { | |||||
set wrotedata [catch {writeform form_filecontent $upload_filename} result] | |||||
append buffer [encode $result] | |||||
if {$wrotedata==0} { | |||||
append buffer "<br>Running production procedure<p>" | |||||
append buffer "<br>Reset and init: <br>" | |||||
append console [encode [capture_catch {catch "production $upload_filename $form_serialnumber"}]] | |||||
} | |||||
} | |||||
if {[string compare $form_action "Test"]==0} { | |||||
append buffer "<br>Running production test. Output from first 10 seconds printed below. <p>" | |||||
append console [encode [capture_catch {catch production_test}]] | |||||
} | |||||
if {[string compare $form_action "Power on"]==0} { | |||||
append console [encode [capture_catch "power on"]] | |||||
} | |||||
if {[string compare $form_action "Power off"]==0} { | |||||
append console [encode [capture_catch "power off"]] | |||||
} | |||||
append buffer { | |||||
</code> | |||||
} | |||||
append buffer {<p class="formtext">Firmware file(raw binary) <input type="file" name="form_filecontent"><p>} | |||||
append buffer {<p class="formtext">Serial number <input type="text" name="form_serialnumber"><p>} | |||||
append buffer { | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<table><tr> | |||||
<td><input type="submit" name="form_action" value="Upload firmware" ></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Test"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Power on"></td> | |||||
<td class="buttonspacesmall"> </td><td><input type="submit" name="form_action" value="Power off"> | |||||
</tr></table> | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="production.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
The target script can implement the "production", "production_info" and "production_test" tcl proc's. These procedures | |||||
are used on this page. There are default implementations that do nothing. | |||||
<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> | |||||
<p><b>Test</b> - Power up target, run 10 second target test. Output is provided via the DCC output channel. </p> | |||||
<p><b>Power on</b> - Power on target.</p> | |||||
<p><b>Power off</b> - Power off target.</p> | |||||
<p><b>Serial number</b> - A target script can use this string in the production procedure. Type "help production" for more info.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,24 +0,0 @@ | |||||
work in progress... stay tuned.... | |||||
1. To build .tcl pages. This will convert menu.xml and menu.xsl into | |||||
lots of .html pages w/embedded tcl, which are then inverted into | |||||
tcl with embedded html. | |||||
sh build.sh | |||||
xalan.jar can be gotten from apache.org. | |||||
2. libmicrohttpd is a bit tricky to build under Cygwin: | |||||
https://gnunet.org/mantis/view.php?id=1440 | |||||
3. To test: | |||||
../openocd/configure --enable-httpd --enable-dummy --enable-ioutil | |||||
make | |||||
make install | |||||
openocd -f httpd/httpd.tcl -c "interface dummy" -f target/at91eb40a.cfg | |||||
4. Point browser to: http://localhost:8888 |
@@ -1,322 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="index.tcl" style="">Target Status</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl" style="font-weight: bold;">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Reload Config Scripts</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Reload"]==0} { | |||||
append buffer "Reloading Config Scripts...<p>" | |||||
reboot | |||||
} | |||||
append buffer { | |||||
<form enctype="multipart/form-data" action="reload.tcl" method="post"> | |||||
<input type="submit" name="form_action" value="Reload"> | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="reload.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Restart ZY1000 to reload selected target config script. | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,382 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flashinfo.tcl" style="">Info</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="erase.tcl" style="">Erase</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="flash.tcl" style="">Program / Verify</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="production.tcl" style="">Production</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl" style="font-weight: bold;">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Run program</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_address [formfetch form_address] | |||||
set form_action [formfetch form_action] | |||||
if {[string compare $form_action "Run from address"]==0} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append console [encode [capture_catch "wait_halt"]] | |||||
append console [encode [capture_catch "resume $form_address"]] | |||||
} | |||||
if {[string compare $form_action "Halt"]==0} { | |||||
append console [encode [capture_catch "halt"]] | |||||
append console [encode [capture_catch "wait_halt"]] | |||||
} | |||||
if {[string compare $form_action "Reset and run"]==0} { | |||||
append console [encode [capture_catch "reset run"]] | |||||
} | |||||
if {[string compare $form_action "Reset and init"]==0} { | |||||
append console [encode [capture_catch "reset init"]] | |||||
} | |||||
append console [encode [capture_catch poll]] | |||||
append buffer { | |||||
<form action="run.tcl" method="post"> | |||||
<table> | |||||
<tr><td class="formtext" style="padding-right:10px;">Address</td><td><input type="text" name="form_address" value="} | |||||
append buffer $form_address | |||||
append buffer {"></td></tr> | |||||
</td></tr> | |||||
</table> | |||||
<table> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
<tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr> | |||||
<tr><td style="height:15px;width:535px;"> </td></tr> | |||||
</table> | |||||
<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> | |||||
</form> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="run.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
<p>Reset and run - reset CPU and let it run.</p> | |||||
<p>Halt - halt CPU.</p> | |||||
<p>Run from address - halt CPU and resume from address. Default is resume from current address.</p> | |||||
<p>Reset and init - reset CPU and run init script.</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,431 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>Zylin ZY1000 JTAG debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="/ram/cgi/zylweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
<img src="/rom/menu_cuts/logo_top.png" style="border:0px;"/> | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('/rom/menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture zy1000_version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('/rom/menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="zy1000.tcl" style="">Set IP Address</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('/rom/menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="upgrade.tcl" style="">ZY1000 Firmware</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('/rom/menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="editfile.tcl" style="">Edit File</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('/rom/menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="support.tcl" style="font-weight: bold;">Support Request</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('/rom/menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="log.tcl#tail" style="">View Tail of Log</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('/rom/menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('/rom/menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('/rom/menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('/rom/menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('/rom/menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('/rom/menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('/rom/menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('/rom/menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/zy1000.tcl" style="font-weight: bold;">Setup ZY1000</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('/rom/menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Submit Support Request</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
Before contacting Zylin, please submit a support request with relevant information. | |||||
} | |||||
set form_config [load_config "target/[load_target]"] | |||||
set support_id [string range [rand] 0 7] | |||||
set form_log "" | |||||
append form_log "Version: [capture "zy1000_version zy1000"]" | |||||
append form_log "OpenOCD version: [capture "zy1000_version openocd"]" | |||||
append form_log "Version date: [capture "zy1000_version date"]" | |||||
append form_log [log] | |||||
append buffer { | |||||
<form action="supportrequest.tcl" method="POST" target="_blank"> | |||||
<input TYPE="hidden" NAME="id" VALUE="} | |||||
append buffer $support_id | |||||
append buffer {"> | |||||
<input TYPE="hidden" NAME="success" VALUE="http://www.zylin.com/zy1000_support.html"> | |||||
<input size="50" name="subject" type="hidden" value="ZY1000 support request"> | |||||
<table cellspacing="5"> | |||||
<tr><td>Support ID</td><td>} | |||||
append buffer $support_id | |||||
append buffer {</td></tr> | |||||
<tr><td>Contact person</td><td><input size="50" name="name" type="text"></td></tr> | |||||
<tr><td>Phone</td><td><input size="50" name="phone" type="text"></td></tr> | |||||
<tr><td>email</td><td><input size="50" name="email" type="text"></td></tr> | |||||
<tr><td>MAC address</td><td><input size="50" name="serial" type="text" value="} | |||||
append buffer [mac] | |||||
append buffer {"></td></tr> | |||||
</td></tr> | |||||
</table> | |||||
<p> | |||||
Summary: | |||||
<p> | |||||
<input name="summary" size="50"> | |||||
<p> | |||||
Description: | |||||
<p> | |||||
<textarea style="overflow:auto;font-size:11px;" name="description" cols="50" rows="4" type="textarea" wrap="off"></textarea> | |||||
<p> | |||||
Log:<p> | |||||
<textarea style="overflow:auto;font-size:11px;" name="log" cols="50" rows="5" type="textarea" wrap="off">} | |||||
append buffer $form_log | |||||
append buffer {</textarea> | |||||
<p> | |||||
Config:<p> | |||||
<textarea style="overflow:auto;font-size:11px;" name="config" cols="50" rows="5" type="textarea" wrap="off">} | |||||
append buffer $form_config | |||||
append buffer {</textarea> | |||||
<p> | |||||
</form> | |||||
<p> | |||||
<input value="Creates support request" type="submit"/></td></tr> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
append buffer {td style="background-image:url('/rom/menu_cuts/h_tab_free.png');width:110px;height:29px;background-repeat: no-repeat;background-position:top left;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="/ram/cgi/support.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('/rom/menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('/rom/menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('/rom/menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/ZY1000_Quick_Start_Guide.pdf">Quick Start Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000_contact.html">Contact Zylin AS</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Before contacting Zylin with questions, please fill in and submit this form | |||||
and allow us time to review the information and answer by email if possible. | |||||
<p/> | |||||
Note that you can see precisely what information is submitted to Zylin in the | |||||
form: the log and your config files. | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('/rom/menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td/> | |||||
<td> | |||||
<img border="0" src="/rom/menu_cuts/logo_bottom.png"/> | |||||
</td> | |||||
<td style="padding-top:10px;padding-left:10px;margin-top:10px;" class="textlight"> | |||||
Zylin AS, Auglendsdalen 78, N-4017 Stavanger, Norway - www.zylin.com | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,560 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Target config quick start guide</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
A target needs an openocd.cfg file. This config file sets up | |||||
the CPU, flash and reset init script. Either OpenOCD ships with an | |||||
openocd.cfg file for your target or you need to take an existing | |||||
config file and modify it for your needs. | |||||
<p> | |||||
The reset init script is crucial. It will set up e.g. MMU, chip | |||||
select registers, etc. after a reset. The init.cfg (reset init script) | |||||
is embedded into the openocd.cfg file in the sampls OpenOCD provides. | |||||
<p> | |||||
Writing an openocd.cfg from scratch is a non-trivial exercise, but | |||||
fortunally it only has to be done once for a target and afterwards it | |||||
rarely if ever needs to be changed. | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="targets.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Quick start guide on how to configure a target. | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Target config quick start guide</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
A target needs an openocd.cfg file. This config file sets up | |||||
the CPU, flash and reset init script. Either OpenOCD ships with an | |||||
openocd.cfg file for your target or you need to take an existing | |||||
config file and modify it for your needs. | |||||
<p> | |||||
The reset init script is crucial. It will set up e.g. MMU, chip | |||||
select registers, etc. after a reset. The init.cfg (reset init script) | |||||
is embedded into the openocd.cfg file in the sampls OpenOCD provides. | |||||
<p> | |||||
Writing an openocd.cfg from scratch is a non-trivial exercise, but | |||||
fortunally it only has to be done once for a target and afterwards it | |||||
rarely if ever needs to be changed. | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="targets.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Quick start guide on how to configure a target. | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,364 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>OpenOCD debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
OpenOCD | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="index.tcl" style="">Target Status</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="index.tcl" style="font-weight: bold;">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>UART forwarding</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_baudrate [formfetch form_baudrate] | |||||
if {[string length $form_baudrate]==0} { | |||||
set form_baudrate [ocd_uart] | |||||
set form_baudrate [string range $form_baudrate 0 [expr [string length $form_baudrate]-2]] | |||||
} | |||||
set form_action [formfetch form_action] | |||||
append buffer { | |||||
<form action="terminal.tcl" method="post"> | |||||
Target baudrate: | |||||
<select name="form_baudrate"> | |||||
} | |||||
foreach i {9600 19200 38400 57600 115200} { | |||||
append buffer { | |||||
<option } | |||||
if {[string compare $form_baudrate $i]==0} { append buffer {selected="selected"} } | |||||
append buffer { | |||||
value ="} | |||||
append buffer $i | |||||
append buffer {">} | |||||
append buffer $i | |||||
append buffer {</option> | |||||
} | |||||
} | |||||
append buffer { | |||||
</select> | |||||
<p> | |||||
<input type="submit" name="form_action" value="Set baudrate" > | |||||
</form> | |||||
} | |||||
if {[string compare $form_action "Set baudrate"]==0} { | |||||
append console [encode [ocd_uart $form_baudrate]] | |||||
} | |||||
append buffer { | |||||
<h2>Simple UART</h2> | |||||
This terminal window is purely for illustrative purposes. Use telnet or a terminal program | |||||
to talk to the target over TCP/IP for anything but trivial case of reading/writing a few | |||||
lines of texts in simple tests. | |||||
<p> | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="terminal.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://openocd.berlios.de/doc/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Serial port data to target is forwarded(both directions) in the simple terminal window | |||||
to the left. Alternatively you can <b>telnet } | |||||
append buffer [ip] | |||||
append buffer { 5555</b> | |||||
or connect via TCP/IP from e.g. HyperTerminal. | |||||
<p> | |||||
Type "help uart" in telnet for information on how to set uart speed for target. Normally | |||||
the uart speed is set from the target configuration script by adding an "uart N", where | |||||
N is the baudrate. | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,418 +0,0 @@ | |||||
# converted to .tcl by html2tcl.tcl | |||||
set buffer "" | |||||
append buffer { | |||||
<html xmlns="http://www.w3.org/TR/REC-html40"> | |||||
<head> | |||||
<title>Zylin ZY1000 JTAG debugger</title> | |||||
<meta charset="utf-8" content="text/html" http-equiv="Content-Type"/> | |||||
<link type="text/css" rel="stylesheet" href="menuweb.css"/> | |||||
</head> | |||||
} | |||||
set console "" | |||||
set upload_filename /ram/upload | |||||
append buffer { | |||||
<body style="margin:0px;"> | |||||
<div style="width:974px;height:85px;"> | |||||
<div style="float:left;position:relative;left:32px;width:478px;"> | |||||
<a href="/"> | |||||
<img src="menu_cuts/logo_top.png" style="border:0px;"/> | |||||
</a> | |||||
</div> | |||||
<div style="float:left;position:relative;height:26px; width:278px;left:122px;background-image:url('menu_cuts/top_right.png');"> | |||||
<div style="position:relative;left:15px;top:4px;" class="textlight"> | |||||
} | |||||
append buffer [capture version] | |||||
append buffer { | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:33px;"> | |||||
<div style="width:20px;height:510px;"> | |||||
| |||||
</div> | |||||
</td> | |||||
<td style="vertical-align:top;height:100%;width:140px;padding:0px;"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;width:140px;"> | |||||
<tr style="height:59px;"> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="zy1000.tcl" style="">Set IP Address</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="upgrade.tcl" style="font-weight: bold;">ZY1000 Firmware</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="editfile.tcl" style="">Edit File</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="support.tcl" style="">Support Request</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:38px;background-image:url('menu_cuts/v_tab.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;left:10px;top:10px;font-weight:bold;"> | |||||
<a href="log.tcl#tail" style="">View Tail of Log</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:35px;background-image:url('menu_cuts/v_1.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;background-image:url('menu_cuts/v_2_tile.png')"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="width:140px;height:140px;background-image:url('menu_cuts/v_3.png')"/> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="vertical-align:top;padding:0px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/index.tcl">Config Target</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/flashinfo.tcl">Flash</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/browsemem.tcl">Memory</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/openocd.tcl">OpenOCD</a> | |||||
</div> | |||||
</td> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab1_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;font-weight:bold;text-align:center;width:100px;"> | |||||
<a href="/ram/cgi/zy1000.tcl" style="font-weight: bold;">Setup ZY1000</a> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;width:535px;background-image:url('menu_cuts/center_top.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#ffffff;text-indent:30px;height:40px;" colspan="6"> | |||||
<H1>Upgrade ZY1000 Firmware</H1> | |||||
</td> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="background-color:#ffffff;padding-left:30px;padding-right:30px;width=535px;height:100%;" colspan="6"> | |||||
} | |||||
set form_action [formfetch form_action]; | |||||
set form_filecontent [formfetch form_filecontent]; | |||||
append buffer {<form enctype="multipart/form-data" action="upgrade.tcl" method="post">} | |||||
if {[string compare $form_action "Upload"]==0} { | |||||
if [string match ZylinPhiFirmware* $form_filecontent]==1 { | |||||
set form_filename /config/firmware.phi | |||||
puts "Writing firmware to $form_filename" | |||||
set fp [aio.open $form_filename w]; | |||||
$fp puts -nonewline $form_filecontent | |||||
$fp close | |||||
puts "Done writing firmware to $form_filename" | |||||
append buffer "<br><div style='font-size:14px;'>Upgraded Zylin JTAG, rebooting (wait ca. 30 seconds)...</div><br>" | |||||
reboot | |||||
} else { | |||||
append buffer "<br>Not a valid Zylin JTAG firmware file.<br>" | |||||
} | |||||
} elseif {[string compare $form_action "Restore factory settings"]==0} { | |||||
proc rmdir { dir } { | |||||
set entries {} | |||||
catch {set entries [ls $dir]} err | |||||
foreach { entry } $entries { | |||||
rmdir $dir/$entry | |||||
rm $dir/$entry | |||||
} | |||||
} | |||||
rmdir /config/settings | |||||
reboot | |||||
append buffer "Restoring factory settings (wait ca. 30 seconds)...<br>" | |||||
} else { | |||||
append buffer {<div style="font-size:14px;">Upgrade Zylin JTAG firmware + reboot. </div><p>} | |||||
append buffer {<input type="file" name="form_filecontent"> <br>} | |||||
append buffer {<table><tr><td style="height:15px;width:535px;"> </td></tr><tr><td style="height:1px;width:535px;background-color:#a2c5d1;"></td></tr><tr><td style="height:15px;width:535px;"> </td></tr></table>} | |||||
append buffer {<input type="submit" name="form_action" value="Upload" ><br> } | |||||
append buffer {<input type="submit" name="form_action" value="Restore factory settings" ><br> } | |||||
append buffer {</form> } | |||||
} | |||||
append buffer { | |||||
</td> | |||||
</tr> | |||||
} | |||||
set toggle_details [formfetch toggle_details] | |||||
if {[string length $toggle_details]==0} { | |||||
set toggle_details 0 | |||||
} | |||||
set show_details [load_var show_details] | |||||
if {[string length $show_details]==0} { | |||||
set show_details 0 | |||||
} | |||||
if {$toggle_details==1} { | |||||
set show_details [expr 1-$show_details] | |||||
save_var show_details $show_details | |||||
} | |||||
if {[string length $console]!=0} { | |||||
append buffer { | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:red;" colspan="6"> | |||||
<table style="padding:0px;border-collapse:collapse;background-color:#ffffff;width:100%" class="textgray"> | |||||
<td style="width:25px;"> </td> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer < | |||||
append buffer {td style="background-color:#dddddd;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;"} | |||||
append buffer > | |||||
} else { | |||||
append buffer < | |||||
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;"} | |||||
append buffer > | |||||
} | |||||
append buffer { | |||||
<a class="openocd" href="/ram/cgi/upgrade.tcl?toggle_details=1"> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer "Hide details" | |||||
append buffer <br/> | |||||
} else { | |||||
append buffer {<div style="position:relative;top:7px;text-align:center;">} | |||||
append buffer "Show details" | |||||
append buffer {</div>} | |||||
} | |||||
append buffer { | |||||
</a> | |||||
} | |||||
if {$show_details==1} { | |||||
append buffer $console | |||||
} | |||||
append buffer {</td>} | |||||
if {$show_details!=1} { | |||||
append buffer {<td> </td>} | |||||
} | |||||
append buffer { | |||||
<td style="width:25px;"> </td> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
} | |||||
} | |||||
append buffer { | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/center_bottom.png');background-repeat: no-repeat;background-position:top right;" colspan="6"> | |||||
<div style="width:500px;background-color:#ffffff;height:100%;"> | |||||
| |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td style="width:6px;"/> | |||||
<td style="width:245px;height:100%"> | |||||
<table style="padding:0px;border-collapse:collapse;height:100%;"> | |||||
<tr> | |||||
<td style="width:103px;height:29px;background-image:url('menu_cuts/h_tab2_selected.png');background-repeat: no-repeat;"> | |||||
<div style="position:relative;top:7px;;font-weight:bold;text-align:center;width:100px;" class="textgray"> | |||||
Documentation | |||||
</div> | |||||
</td> | |||||
<td width="40px"> | |||||
| |||||
</td> | |||||
<td/> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:10px;width:245px;background-image:url('menu_cuts/right_top_small.png');" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;width:245px;padding-left:10px;padding-buttom:10px;line-height:17px;" colspan="3"> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/ZY1000_Quick_Start_Guide.pdf">Quick Start Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000/openocd.pdf">OpenOCD Manual</a> | |||||
<br/> | |||||
<a target="_blank" href="http://www.zylin.com/zy1000_contact.html">Contact Zylin AS</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr> | |||||
<td colspan="3"> | |||||
<table style="padding:0px;border-collapse:collapse;"> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
<td style="background-color:#999999;width:225px; height:1px;"/> | |||||
<td style="background-color:#d8d7d7;width:10px;height:1px"/> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="background-color:#d8d7d7;height:15px;" colspan="3"/> | |||||
</tr> | |||||
<tr style="height:100%;"> | |||||
<td style="height:100%;background-color:#d8d7d7;padding-left:10px;padding-right:10px;" colspan="3" class="textgray"> | |||||
Upload new firmware file to ZY1000, verify that it is a valid ZY1000 firmware | |||||
file, and upgrade flash. | |||||
<p/> | |||||
Restore factory settings restores all factory settings except the TCP/IP settings. | |||||
<p/> | |||||
The current version of the firmware is visible at the top of the web page. | |||||
<p/> | |||||
ZY1000 firmware can also be upgraded using serial port YModem upload. | |||||
<p/> | |||||
Check for new firmware at <a target="_blank" href="http://www.zylin.com/zy1000.html">http://www.zylin.com/zy1000.html<a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style="height:30px;background-image:url('menu_cuts/right_bottom.png');" colspan="3"> | |||||
| |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td/> | |||||
<td> | |||||
<img border="0" src="menu_cuts/logo_bottom.png"/> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</body> | |||||
</html> | |||||
} | |||||
start_chunked "html" | |||||
write_chunked $buffer | |||||
end_chunked | |||||
@@ -1,33 +0,0 @@ | |||||
/*************************************************************************** | |||||
* Copyright (C) 2009 Zachary T Welch <zw@superlucidity.net> * | |||||
* * | |||||
* This program is free software; you can redistribute it and/or modify * | |||||
* it under the terms of the GNU General Public License as published by * | |||||
* the Free Software Foundation; either version 2 of the License, or * | |||||
* (at your option) any later version. * | |||||
* * | |||||
* This program is distributed in the hope that it will be useful, * | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||||
* GNU General Public License for more details. * | |||||
* * | |||||
* You should have received a copy of the GNU General Public License * | |||||
* along with this program; if not, write to the * | |||||
* Free Software Foundation, Inc., * | |||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | |||||
***************************************************************************/ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include <config.h> | |||||
#endif | |||||
#include "httpd.h" | |||||
#include <helper/log.h> | |||||
int httpd_start(struct command_context *cmd_ctx) | |||||
{ | |||||
LOG_DEBUG("libocdserver was built without HTTPD support"); | |||||
return ERROR_OK; | |||||
} | |||||
void httpd_stop(void) | |||||
{ | |||||
} |
@@ -89,11 +89,11 @@ int connection_write(struct connection *connection, const void *data, int len); | |||||
int connection_read(struct connection *connection, void *data, int len); | int connection_read(struct connection *connection, void *data, int len); | ||||
/** | /** | ||||
* Used by server_loop(), defined in server_stubs.c, httpd.c, or ecosboard.c | |||||
* Used by server_loop(), defined in server_stubs.c or ecosboard.c | |||||
*/ | */ | ||||
void openocd_sleep_prelude(void); | void openocd_sleep_prelude(void); | ||||
/** | /** | ||||
* Used by server_loop(), defined in server_stubs.c, httpd.c, or ecosboard.c | |||||
* Used by server_loop(), defined in server_stubs.c or ecosboard.c | |||||
*/ | */ | ||||
void openocd_sleep_postlude(void); | void openocd_sleep_postlude(void); | ||||