/***************************************************************************
* Copyright (C) 2008 digenius technology GmbH. *
- *
+ * *
* Copyright (C) 2008 Oyvind Harboe oyvind.harboe@zylin.com *
* *
* This program is free software; you can redistribute it and/or modify *
ARM11_HANDLER(run_algorithm),
ARM11_HANDLER(register_commands),
- ARM11_HANDLER(target_command),
+ ARM11_HANDLER(target_create),
ARM11_HANDLER(init_target),
ARM11_HANDLER(examine),
ARM11_HANDLER(quit),
arm11_common_t * arm11 = target->arch_info;
- LOG_DEBUG("target->state: %s", target_state_strings[target->state]);
+ LOG_DEBUG("target->state: %s",
+ Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
if (target->state == TARGET_UNKNOWN)
{
arm11_common_t * arm11 = target->arch_info;
- LOG_DEBUG("target->state: %s", target_state_strings[target->state]);
+ LOG_DEBUG("target->state: %s",
+ Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
+
if (target->state != TARGET_HALTED)
{
{
FNC_INFO;
- LOG_DEBUG("target->state: %s", target_state_strings[target->state]);
+ LOG_DEBUG("target->state: %s",
+ Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
if (target->state != TARGET_HALTED)
{
FNC_INFO;
#if 0
- LOG_DEBUG("target->state: %s", target_state_strings[target->state]);
+ LOG_DEBUG("target->state: %s",
+ Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
+
/* deassert reset lines */
jtag_add_reset(0, 0);
return ERROR_OK;
}
-int arm11_target_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct target_s *target)
+int arm11_target_create(struct target_s *target, Jim_Interp *interp)
{
FNC_INFO;
- if (argc < 4)
- {
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- int chain_pos = strtoul(args[3], NULL, 0);
-
NEW(arm11_common_t, arm11, 1);
arm11->target = target;
/* prepare JTAG information for the new target */
- arm11->jtag_info.chain_pos = chain_pos;
+ arm11->jtag_info.chain_pos = target->chain_position;
arm11->jtag_info.scann_size = 5;
arm_jtag_setup_connection(&arm11->jtag_info);
- jtag_device_t *device = jtag_get_device(chain_pos);
+ jtag_device_t *device = jtag_get_device(target->chain_position);
if (device->ir_length != 5)
{
int arm11_examine(struct target_s *target)
{
FNC_INFO;
+ int retval;
arm11_common_t * arm11 = target->arch_info;
arm11_add_dr_scan_vc(asizeof(chain0_fields), chain0_fields, TAP_RTI);
- jtag_execute_queue();
+ if ((retval=jtag_execute_queue())!=ERROR_OK)
+ return retval;
switch (arm11->device_id & 0x0FFFF000)
arm11_check_init(arm11, NULL);
+ target->type->examined = 1;
+
return ERROR_OK;
}
size_t jtag_target = strtoul(arg, NULL, 0);
{target_t * t;
- for (t = targets; t; t = t->next)
+ for (t = all_targets; t; t = t->next)
{
if (t->type != &arm11_target)
continue;