Revert "target: remove unused working area 'user' field"
[fw/openocd] / src / target / startup.tcl
index b597b84d15e7ec575e7e05a33ad08f274ab57a65..90f947dfd7e344024f8611735364a854fe85d60a 100644 (file)
@@ -41,7 +41,7 @@ proc ocd_process_reset_inner { MODE } {
                set halt 0;
        }
        if { $halt < 0 } {
-               return -error "Invalid mode: $MODE, must be one of: halt, init, or run";
+               return -code error "Invalid mode: $MODE, must be one of: halt, init, or run";
        }
 
        # Target event handlers *might* change which TAPs are enabled
@@ -64,7 +64,11 @@ proc ocd_process_reset_inner { MODE } {
        # Examine all targets on enabled taps.
        foreach t $targets {
                if {[jtag tapisenabled [$t cget -chain-position]]} {
-                       $t arp_examine
+                       $t invoke-event examine-start
+                       set err [catch "$t arp_examine"]
+                       if { $err == 0 } {
+                               $t invoke-event examine-end
+                       }
                }
        }
 
@@ -119,7 +123,7 @@ proc ocd_process_reset_inner { MODE } {
                        set s [$t curstate]
 
                        if { 0 != [string compare $s "halted" ] } {
-                               return -error [format "TARGET: %s - Not halted" $t]
+                               return -code error [format "TARGET: %s - Not halted" $t]
                        }
                }
        }
@@ -151,3 +155,15 @@ proc armv4_5 params {
        echo "DEPRECATED! use 'arm $params' not 'armv4_5 $params'"
        arm $params
 }
+
+# Target/chain configuration scripts can either execute commands directly
+# or define a procedure which is executed once all configuration
+# scripts have completed.
+#
+# By default(classic) the config scripts will set up the target configuration
+proc init_targets {} {
+}
+
+# Additionally board config scripts can define a procedure init_board that will be executed after init and init_targets
+proc init_board {} {
+}