summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-10-13 10:30:33 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-10-13 10:30:33 +0000
commitbc25d4fa5eab27326c607f90f9f5f5393b3e632e (patch)
tree3f41e91b249dddc56ef7777236e01ce61ce825a9
parent0a3b6213bbb8b9b3edaec944610eec48d213a81e (diff)
downloadopenocd+libswd-bc25d4fa5eab27326c607f90f9f5f5393b3e632e.tar.gz
openocd+libswd-bc25d4fa5eab27326c607f90f9f5f5393b3e632e.tar.bz2
openocd+libswd-bc25d4fa5eab27326c607f90f9f5f5393b3e632e.tar.xz
openocd+libswd-bc25d4fa5eab27326c607f90f9f5f5393b3e632e.zip
Fixed gaffes in reset script handling + improved error
messages a bit. The file and line # of the syntax error in a reset script is now printed. git-svn-id: svn://svn.berlios.de/openocd/trunk@1042 b42882b7-edfa-0310-969c-e2dbd0fdcd60
-rw-r--r--src/helper/startup.tcl80
-rw-r--r--src/target/target.c10
-rw-r--r--src/target/target/lpc2148.cfg2
3 files changed, 48 insertions, 44 deletions
diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl
index e3d750e0..a8006702 100644
--- a/src/helper/startup.tcl
+++ b/src/helper/startup.tcl
@@ -212,11 +212,11 @@ proc ocd_process_reset { MODE } {
}
foreach t [ target names ] {
- # For compatiblity with 'old scripts'
- $t invoke-event old-pre_reset
-
- # New event script.
- $t invoke-event reset-start
+ # For compatiblity with 'old scripts'
+ $t invoke-event old-pre_reset
+
+ # New event script.
+ $t invoke-event reset-start
}
# Init the tap controller.
@@ -224,60 +224,60 @@ proc ocd_process_reset { MODE } {
# Examine all targets.
foreach t [ target names ] {
- $t arp_examine
+ $t arp_examine
}
# Let the C code know we are asserting reset.
foreach t [ target names ] {
- $t invoke-event reset-assert-pre
- # C code needs to know if we expect to 'halt'
- $t arp_reset assert $halt
- $t invoke-event reset-assert-post
+ $t invoke-event reset-assert-pre
+ # C code needs to know if we expect to 'halt'
+ $t arp_reset assert $halt
+ $t invoke-event reset-assert-post
}
# Now de-assert reset.
foreach t [ target names ] {
- $t invoke-event reset-deassert-pre
- # Again, de-assert code needs to know..
- $t arp_reset deassert $halt
- $t invoke-event reset-deassert-post
+ $t invoke-event reset-deassert-pre
+ # Again, de-assert code needs to know..
+ $t arp_reset deassert $halt
+ $t invoke-event reset-deassert-post
}
# Pass 1 - Now try to halt.
if { $halt } {
- foreach t [target names] {
-
- # Wait upto 1 second for target to halt. Why 1sec? Cause
- # the JTAG tap reset signal might be hooked to a slow
- # resistor/capacitor circuit - and it might take a while
- # to charge
-
- # Catch, but ignore any errors.
- catch { $t arp_waitstate halted 1000 }
-
- # Did we succeed?
- set s [$t curstate]
-
- if { 0 != [string compare $s "halted" ] } {
- return -error [format "TARGET: %s - Not halted" $t]
- }
- }
+ foreach t [target names] {
+
+ # Wait upto 1 second for target to halt. Why 1sec? Cause
+ # the JTAG tap reset signal might be hooked to a slow
+ # resistor/capacitor circuit - and it might take a while
+ # to charge
+
+ # Catch, but ignore any errors.
+ catch { $t arp_waitstate halted 1000 }
+
+ # Did we succeed?
+ set s [$t curstate]
+
+ if { 0 != [string compare $s "halted" ] } {
+ return -error [format "TARGET: %s - Not halted" $t]
+ }
+ }
}
#Pass 2 - if needed "init"
if { 0 == [string compare init $MODE] } {
- foreach t [target names] {
- set err [catch "$t arp_waitstate halted 5000"]
- # Did it halt?
- if { $err == 0 } {
- $t invoke-event old-post_reset
- $t invoke-event reset-init
- }
- }
+ foreach t [target names] {
+ set err [catch "$t arp_waitstate halted 5000"]
+ # Did it halt?
+ if { $err == 0 } {
+ $t invoke-event old-post_reset
+ $t invoke-event reset-init
+ }
+ }
}
foreach t [ target names ] {
- $t invoke-event reset-end
+ $t invoke-event reset-end
}
}
diff --git a/src/target/target.c b/src/target/target.c
index 0ba25dbb..ca34a4d0 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -436,7 +436,8 @@ static int NEW_target_process_reset(struct command_context_s *cmd_ctx, enum targ
sprintf( buf, "ocd_process_reset %s", n->name );
retval = Jim_Eval( interp, buf );
- if(retval != JIM_ERR){
+ if(retval != JIM_OK) {
+ Jim_PrintErrorMessage(interp);
return ERROR_FAIL;
}
@@ -3112,7 +3113,10 @@ target_handle_event( target_t *target, enum target_event e )
e,
Jim_Nvp_value2name_simple( nvp_target_event, e )->name,
Jim_GetString( teap->body, NULL ) );
- Jim_EvalObj( interp, teap->body );
+ if (Jim_EvalObj( interp, teap->body )!=JIM_OK)
+ {
+ Jim_PrintErrorMessage(interp);
+ }
}
teap = teap->next;
}
@@ -3215,7 +3219,7 @@ target_configure( Jim_GetOptInfo *goi,
}
if( goi->isconfigure ){
- if( goi->argc == 0 ){
+ if( goi->argc != 1 ){
Jim_WrongNumArgs( goi->interp, goi->argc, goi->argv, "-event ?event-name? ?EVENT-BODY?");
return JIM_ERR;
}
diff --git a/src/target/target/lpc2148.cfg b/src/target/target/lpc2148.cfg
index 79ec9ecb..11835a72 100644
--- a/src/target/target/lpc2148.cfg
+++ b/src/target/target/lpc2148.cfg
@@ -14,7 +14,7 @@ reset_config trst_and_srst srst_pulls_trst
jtag_device 4 0x1 0xf 0xe
target arm7tdmi little 0 arm7tdmi-s_r4
-[new_target_name] configure -event old-post_reset {} {
+[new_target_name] configure -event old-post_reset {
# Force target into ARM state
soft_reset_halt
#do not remap 0x0000-0x0020 to anything but the flash