- some more flash cleanup of checking halted state
- moved output handler into options.c
- very slightly tweaked server.c to make it a bit more compatible with eCos
- retired arch_state. Not quite sure how I managed to leave that out last time.
git-svn-id: svn://svn.berlios.de/openocd/trunk@338
b42882b7-edfa-0310-969c-
e2dbd0fdcd60
- command_print(cmd_ctx, "usage: at91sam7 gpnvm <num> <bit> <set|clear>");\r
- return ERROR_OK;\r
+ return ERROR_COMMAND_SYNTAX_ERROR;
}\r
\r
/* Configure the flash controller timing */\r
}\r
\r
/* Configure the flash controller timing */\r
int i;\r
working_area_t *download_area;\r
\r
int i;\r
working_area_t *download_area;\r
\r
- if (bank->target->state != TARGET_HALTED)\r
- {\r
- return ERROR_TARGET_NOT_HALTED;\r
- }\r
- \r
/* allocate a working area */\r
if (target_alloc_working_area(target, lpc2000_info->cmd51_max_buffer, &download_area) != ERROR_OK)\r
{\r
/* allocate a working area */\r
if (target_alloc_working_area(target, lpc2000_info->cmd51_max_buffer, &download_area) != ERROR_OK)\r
{\r
- command_print(cmd_ctx, "usage: lpc2000 part_id <num>");\r
- return ERROR_OK;\r
+ return ERROR_COMMAND_SYNTAX_ERROR;
}\r
\r
bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));\r
}\r
\r
bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));\r
static size_t num_script_dirs;\r
static char** script_search_dirs;\r
\r
static size_t num_script_dirs;\r
static char** script_search_dirs;\r
\r
-int configuration_output_handler(struct command_context_s *context, char* line)\r
-{\r
- INFO(line);\r
- \r
- return ERROR_OK;\r
-}\r
\r
void add_script_search_dir (const char *dir)\r
{\r
\r
void add_script_search_dir (const char *dir)\r
{\r
+\r
+int configuration_output_handler(struct command_context_s *context, char* line)\r
+{\r
+ INFO(line);\r
+\r
+ return ERROR_OK;\r
+}\r
+\r
+\r
int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[])\r
{\r
int c;\r
int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[])\r
{\r
int c;\r
- command_print(cmd_ctx, "usage: endstate <tap_state>");
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
{
int trst = -1;
int srst = -1;
{
int trst = -1;
int srst = -1;
- char *usage = "usage: jtag_reset <trst> <srst>";
int retval;
if (argc < 1)
{
int retval;
if (argc < 1)
{
- command_print(cmd_ctx, usage);
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
+\r
- command_print(cmd_ctx, usage);
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
- command_print(cmd_ctx, usage);
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
}
if ((retval = jtag_add_reset(trst, srst)) != ERROR_OK)
}
if ((retval = jtag_add_reset(trst, srst)) != ERROR_OK)
- command_print(cmd_ctx, "usage: runtest <num_cycles>");
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
}
jtag_add_runtest(strtol(args[0], NULL, 0), -1);
}
jtag_add_runtest(strtol(args[0], NULL, 0), -1);
if ((argc < 2) || (argc % 2))
{
if ((argc < 2) || (argc % 2))
{
- command_print(cmd_ctx, "usage: irscan <device> <instr> [dev2] [instr2] ...");
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
}
fields = malloc(sizeof(scan_field_t) * argc / 2);
}
fields = malloc(sizeof(scan_field_t) * argc / 2);
if ((argc < 2) || (argc % 2))
{
if ((argc < 2) || (argc % 2))
{
- command_print(cmd_ctx, "usage: drscan <device> <var> [dev2] [var2]");
- return ERROR_OK;
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
}
for (i = 0; i < argc; i+=2)
}
for (i = 0; i < argc; i+=2)
int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
- if (argc == 0)
- {
- command_print(cmd_ctx, "verify Capture-IR is %s", (jtag_verify_capture_ir) ? "enabled": "disabled");
- return ERROR_OK;
- }
-
- if (strcmp(args[0], "enable") == 0)
- jtag_verify_capture_ir = 1;
- }
- else if (strcmp(args[0], "disable") == 0)
- {
- jtag_verify_capture_ir = 0;
- }
+ if (strcmp(args[0], "enable") == 0)
+ {
+ jtag_verify_capture_ir = 1;
+ }
+ else if (strcmp(args[0], "disable") == 0)
+ {
+ jtag_verify_capture_ir = 0;
+ } else\r
+ {\r
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
+ }
+ } else if (argc != 0)\r
+ {\r
+ return ERROR_COMMAND_SYNTAX_ERROR;\r
+ }\r
+ \r
+ command_print(cmd_ctx, "verify Capture-IR is %s", (jtag_verify_capture_ir) ? "enabled": "disabled");\r
FD_SET(fileno(stdin), &read_fds);
#endif
FD_SET(fileno(stdin), &read_fds);
#endif
- if ((retval = select(fd_max + 1, &read_fds, NULL, NULL, &tv)) == -1)
+ retval = select(fd_max + 1, &read_fds, NULL, NULL, &tv);
+
+ if (retval == -1)
#else
if (errno == EINTR)
#else
if (errno == EINTR)
else
{
ERROR("error during select: %s", strerror(errno));
else
{
ERROR("error during select: %s", strerror(errno));
/* do regular tasks after at most 100ms */
tv.tv_sec = 0;
tv.tv_usec = 10000;
/* do regular tasks after at most 100ms */
tv.tv_sec = 0;
tv.tv_usec = 10000;
+ FD_ZERO(&read_fds); /* eCos leaves read_fds unchanged in this case! */\r
}
for (service = services; service; service = service->next)
}
for (service = services; service; service = service->next)
&& (FD_ISSET(service->fd, &read_fds)))
{
if (service->max_connections > 0)
&& (FD_ISSET(service->fd, &read_fds)))
{
if (service->max_connections > 0)
add_connection(service, command_context);
add_connection(service, command_context);
else
{
struct sockaddr_in sin;
else
{
struct sockaddr_in sin;
switch (event)
{
case TARGET_EVENT_HALTED:
switch (event)
{
case TARGET_EVENT_HALTED:
- command_print(cmd_ctx, "Target %i halted", get_num_by_target(target));
target_arch_state(target);
if (!t_con->suppress_prompt)
telnet_prompt(connection);
break;
case TARGET_EVENT_RESUMED:
target_arch_state(target);
if (!t_con->suppress_prompt)
telnet_prompt(connection);
break;
case TARGET_EVENT_RESUMED:
- command_print(cmd_ctx, "Target %i resumed", get_num_by_target(target));
if (!t_con->suppress_prompt)
telnet_prompt(connection);
break;
if (!t_con->suppress_prompt)
telnet_prompt(connection);
break;
int cli_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv);
int cli_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv);
-int handle_arch_state_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int handle_target_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int handle_daemon_startup_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int handle_target_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int handle_daemon_startup_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
register_command(cmd_ctx, NULL, "run_and_halt_time", handle_run_and_halt_time_command, COMMAND_CONFIG, NULL);
register_command(cmd_ctx, NULL, "working_area", handle_working_area_command, COMMAND_ANY, "working_area <target#> <address> <size> <'backup'|'nobackup'> [virtual address]");
register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "virt2phys <virtual address>");
register_command(cmd_ctx, NULL, "run_and_halt_time", handle_run_and_halt_time_command, COMMAND_CONFIG, NULL);
register_command(cmd_ctx, NULL, "working_area", handle_working_area_command, COMMAND_ANY, "working_area <target#> <address> <size> <'backup'|'nobackup'> [virtual address]");
register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "virt2phys <virtual address>");
- register_command(cmd_ctx, NULL, "arch_state", handle_arch_state_command, COMMAND_ANY, "prints CPU state information");
if (argc == 0)
{
target->type->poll(target);
if (argc == 0)
{
target->type->poll(target);
- command_print(cmd_ctx, "target state: %s", target_state_strings[target->state]);
- if (target->state == TARGET_HALTED)
- {
target_arch_state(target);
target_arch_state(target);
gettimeofday(&timeout, NULL);
timeval_add_time(&timeout, 0, ms * 1000);
gettimeofday(&timeout, NULL);
timeval_add_time(&timeout, 0, ms * 1000);
- command_print(cmd_ctx, "waiting for target %s...", target_state_strings[state]);
target_t *target = get_current_target(cmd_ctx);
for (;;)
target_t *target = get_current_target(cmd_ctx);
for (;;)
target_call_timer_callbacks();
if (target->state == state)
{
target_call_timer_callbacks();
if (target->state == state)
{
- command_print(cmd_ctx, "target %s", target_state_strings[state]);
+ command_print(cmd_ctx, "waiting for target %s...", target_state_strings[state]);
gettimeofday(&now, NULL);
if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec) && (now.tv_usec >= timeout.tv_usec)))
gettimeofday(&now, NULL);
if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec) && (now.tv_usec >= timeout.tv_usec)))
int retval;
target_t *target = get_current_target(cmd_ctx);
int retval;
target_t *target = get_current_target(cmd_ctx);
if (argc == 0)
retval = target->type->resume(target, 1, 0, 1, 0); /* current pc, addr = 0, handle breakpoints, not debugging */
else if (argc == 1)
retval = target->type->resume(target, 0, strtoul(args[0], NULL, 0), 1, 0); /* addr = args[0], handle breakpoints, not debugging */
else
{
if (argc == 0)
retval = target->type->resume(target, 1, 0, 1, 0); /* current pc, addr = 0, handle breakpoints, not debugging */
else if (argc == 1)
retval = target->type->resume(target, 0, strtoul(args[0], NULL, 0), 1, 0); /* addr = args[0], handle breakpoints, not debugging */
else
{
- command_print(cmd_ctx, "usage: resume [address]");
- return ERROR_OK;
- }
-
- if (retval != ERROR_OK)
- {
- switch (retval)
- {
- case ERROR_TARGET_NOT_HALTED:
- command_print(cmd_ctx, "target not halted");
- break;
- default:
- command_print(cmd_ctx, "unknown error... shutting down");
- exit(-1);
- }
+ return ERROR_COMMAND_SYNTAX_ERROR;
}
target_process_events(cmd_ctx);
}
target_process_events(cmd_ctx);
+ target_arch_state(target);
+
+ return retval;
}
int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
}
int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-int handle_arch_state_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc)
-{
- int retval;
- if (argc!=0)
- return ERROR_COMMAND_SYNTAX_ERROR;
-
- target_t *target = get_target_by_num(cmd_ctx->current_target);
- retval=target_arch_state(target);
- return retval;
-}
Linking to existing account procedure
If you already have an account and want to add another login method
you
MUST first sign in with your existing account and
then change URL to read
https://review.openocd.org/login/?link
to get to this page again but this time it'll work for linking. Thank you.
SSH host keys fingerprints
1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=.. |
|+o.. . |
|*.o . . |
|+B . . . |
|Bo. = o S |
|Oo.+ + = |
|oB=.* = . o |
| =+=.+ + E |
|. .=o . o |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)