aboutsummaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorFreddie Chopin <freddie.chopin@gmail.com>2012-02-03 20:37:45 +0100
committerPeter Stuge <peter@stuge.se>2012-02-09 18:09:02 +0000
commit4db24acb931304355f59560789c5d92b99fb2962 (patch)
tree31a02af5e4aca34391477c8d4e382c4b992f8b87 /src/target
parent394dcc8e34dd4aa8864cce1d42e29d99d0640740 (diff)
Add init_board procedure executed after init_targets
This adds init_board procedure that behaves exactly the same as init_targets - it can be overriden by "next level" scripts. This procedure is executed after init_targets, allowing common stuff (jtag chain, memory, flash, ...) to be configured in target script (via init_target) and leaving rest (like additional memory, reset configuration, reset-init handlers, ...) to be done in init_board. This makes init_targets scheme more complete and easier to use - current board scripts will not need new init_targets, because everything can be "packed" in init_boards. Moreover it solves the problem of variables being set in init_targets (executed after init), which were not accessible by "linear" scripts (parsed before init). All that has to be done is to enclose all code in board config file in init_board procedure. Change-Id: I0736b1ff9873a687966407d62b58ccf29a8e597b Signed-off-by: Freddie Chopin <freddie.chopin@gmail.com> Reviewed-on: http://openocd.zylin.com/427 Reviewed-by: Chris Morgan <chmorgan@gmail.com> Tested-by: jenkins Reviewed-by: Peter Stuge <peter@stuge.se>
Diffstat (limited to 'src/target')
-rw-r--r--src/target/startup.tcl4
-rw-r--r--src/target/target.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/target/startup.tcl b/src/target/startup.tcl
index 425e1ecf..02cefb09 100644
--- a/src/target/startup.tcl
+++ b/src/target/startup.tcl
@@ -159,3 +159,7 @@ proc armv4_5 params {
# 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 {} {
+}
diff --git a/src/target/target.c b/src/target/target.c
index 5b2117df..f8326ea7 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -1033,6 +1033,10 @@ COMMAND_HANDLER(handle_target_init_command)
if (ERROR_OK != retval)
return retval;
+ retval = command_run_line(CMD_CTX, "init_board");
+ if (ERROR_OK != retval)
+ return retval;
+
LOG_DEBUG("Initializing targets...");
return target_init(CMD_CTX);
}