]> git.sur5r.net Git - openocd/commitdiff
print out an error if srst_pulls_trst is not specified for
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 19 May 2008 18:58:47 +0000 (18:58 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 19 May 2008 18:58:47 +0000 (18:58 +0000)
e.g. at91fr40008. Could possibly show bogus false positives in log without any other side effects.

git-svn-id: svn://svn.berlios.de/openocd/trunk@666 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/target/target.c

index 7ab7a7c69addf7c3e0d681a9ebd83867c5a4a232..d1e807284c355380b1aa43d511549f16a478f41d 100644 (file)
@@ -225,6 +225,16 @@ int target_init_handler(struct target_s *target, enum target_event event, void *
        
        if ((event == TARGET_EVENT_HALTED) && (target->reset_script))
        {
+               if ((jtag_reset_config & RESET_SRST_PULLS_TRST)==0)
+               {
+                       reg_t *reg = register_get_by_name(target->reg_cache, "pc", 1);
+                       u32 t=*((u32 *)reg->value);
+                       if (t!=0)
+                       {
+                               LOG_ERROR("PC was not 0. Does this target does target need srst_pulls_trst?");
+                       }
+               }
+
                target_unregister_event_callback(target_init_handler, priv);
 
                script = open_file_from_path(target->reset_script, "r");
@@ -394,18 +404,19 @@ int target_process_reset(struct command_context_s *cmd_ctx)
                target = target->next;
        }
        
+       if ((retval = jtag_execute_queue()) != ERROR_OK)
+       {
+               LOG_WARNING("JTAG communication failed while deasserting reset.");
+               retval = ERROR_OK;
+       }
+
        if (jtag_reset_config & RESET_SRST_PULLS_TRST)
        {
                /* If TRST was asserted we need to set up registers again */
                if ((retval = target_examine(cmd_ctx)) != ERROR_OK)
                        return retval;
-       }
+       }               
        
-       if ((retval = jtag_execute_queue()) != ERROR_OK)
-       {
-               LOG_WARNING("JTAG communication failed while deasserting reset.");
-               retval = ERROR_OK;
-       }
        
        LOG_DEBUG("Waiting for halted stated as approperiate");