]> git.sur5r.net Git - openocd/blobdiff - src/target/target_type.h
arm7_9_common: use register_commands()
[openocd] / src / target / target_type.h
index 32c58abba28208deb389954041b7884220c15ebc..aa87a74495a2d2fa5eb3a872a3f4c43461bf676a 100644 (file)
 
 struct target;
 
+/**
+ * This holds methods shared between all instances of a given target
+ * type.  For example, all Cortex-M3 targets on a scan chain share
+ * the same method table.
+ */
 struct target_type
 {
        /**
-        * Name of the target.  Do @b not access this field directly, use
-        * target_get_name() instead.
+        * Name of this type of target.  Do @b not access this
+        * field directly, use target_get_name() instead.
         */
        char *name;
 
-       /**
-        * Indicates whether this target has been examined.
-        *
-        * Do @b not access this field directly, use target_was_examined()
-        * target_set_examined(), and target_reset_examined().
-        */
-       int examined;
-
        /* poll current target status */
        int (*poll)(struct target *target);
        /* Invoked only from target_arch_state().
@@ -151,7 +148,7 @@ struct target_type
         */
        int (*run_algorithm)(struct target *target, int num_mem_params, struct mem_param *mem_params, int num_reg_params, struct reg_param *reg_param, uint32_t entry_point, uint32_t exit_point, int timeout_ms, void *arch_info);
 
-       int (*register_commands)(struct command_context_s *cmd_ctx);
+       int (*register_commands)(struct command_context *cmd_ctx);
 
        /* called when target is created */
        int (*target_create)(struct target *target, Jim_Interp *interp);
@@ -165,19 +162,28 @@ struct target_type
        /* returns JIM_OK, or JIM_ERR, or JIM_CONTINUE - if option not understood */
        int (*target_jim_commands)(struct target *target, Jim_GetOptInfo *goi);
 
-       /* invoked after JTAG chain has been examined & validated. During
-        * this stage the target is examined and any additional setup is
-        * performed.
+       /**
+        * This method is used to perform target setup that requires
+        * JTAG access.
+        *
+        * This may be called multiple times.  It is called after the
+        * scan chain is initially validated, or later after the target
+        * is enabled by a JRC.  It may also be called during some
+        * parts of the reset sequence.
         *
-        * invoked every time after the jtag chain has been validated/examined
+        * For one-time initialization tasks, use target_was_examined()
+        * and target_set_examined().  For example, probe the hardware
+        * before setting up chip-specific state, and then set that
+        * flag so you don't do that again.
         */
        int (*examine)(struct target *target);
+
        /* Set up structures for target.
         *
         * It is illegal to talk to the target at this stage as this fn is invoked
         * before the JTAG chain has been examined/verified
         * */
-       int (*init_target)(struct command_context_s *cmd_ctx, struct target *target);
+       int (*init_target)(struct command_context *cmd_ctx, struct target *target);
 
        /* translate from virtual to physical address. Default implementation is successful
         * no-op(i.e. virtual==physical).