From bc25d4fa5eab27326c607f90f9f5f5393b3e632e Mon Sep 17 00:00:00 2001 From: oharboe Date: Mon, 13 Oct 2008 10:30:33 +0000 Subject: 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 --- src/helper/startup.tcl | 80 +++++++++++++++++++++---------------------- src/target/target.c | 10 ++++-- src/target/target/lpc2148.cfg | 2 +- 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 -- cgit v1.2.3