From 370a15d032cc0c87e26c4c03c5e375decc692285 Mon Sep 17 00:00:00 2001 From: stefanrueger Date: Wed, 31 Jan 2024 14:49:46 +1300 Subject: [PATCH] Reduce default delay between avrdude test runs - From 4 s to 0.75 s - Do not delay at all for -c dryrun/dryboot - Do not delay before first avrdude call in a series --- tools/test-avrdude | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/tools/test-avrdude b/tools/test-avrdude index b8a963ed..b63432da 100755 --- a/tools/test-avrdude +++ b/tools/test-avrdude @@ -8,7 +8,7 @@ tfiles=$(dirname "$0")/test_files tfiles=$(printf "%q" "$tfiles") # Quote directory string in case there are spaces etc avrdude_conf='' # Configuration for every run, eg, '-C path_to_avrdude_conf' -delay=4 # Some programmers need a delay between AVRDUDE calls +delay=0.75 # Some programmers need a delay between AVRDUDE calls avrdude_bin=avrdude # Executable list_only=0 # Normal run declare -a pgm_and_target=() # Array with test option strings, eg, "-c dryrun -p m328p" @@ -104,7 +104,7 @@ outfile=$(mktemp "$tmp/$progname.out.XXXXXX") trap "rm -f $status $logfile $outfile" EXIT TIMEFORMAT=%R # time built-in only returns elapsed wall-clock time -elapsed=0 # Global variable holding time of last execute command in seconds +elapsed=-1 # Global variable holding time of last execute command in seconds command=(sleep 0.1) # Array with AVRDUDE command # Execute args as command, set $elapsed and return exit value of command; don't call in a subshell @@ -113,7 +113,7 @@ execute () { echo "\$ ${command[@]}" | tr -s " " return 0; fi - sleep "$delay" + [[ $programmer != -cdry* && $elapsed -ne -1 ]] && sleep "$delay" # These shenanigans keep stdout, stderr and the exit code of the command { read elapsed < <({ time { eval "$@"; echo $? >"$status"; } 2>&4 4>&-; } 4>&2 2>&1 >&3 3>&-); } 3>&1 return $(cat "$status") @@ -131,7 +131,7 @@ result () { echo ❌ "$(printf '%7.3f s' $elapsed): $specify (failed command below)" echo "\$ ${command[@]}" | tr -s " " FAIL=true - sleep 4 # Let the hw settle down before the next test + [[ $programmer != -cdry* ]] && sleep 4 # Let the hw settle down before next test fi [[ $verbose -eq 1 ]] && { touch $logfile $outfile; cat $logfile $outfile; } else @@ -151,6 +151,10 @@ nofusetest=(-pattiny11/ -pt11/ -pattiny12/ -pt12/ -pattiny15/ -pt15/ -pat89s51/ -plgt8f328p/ -plgt8f328p/) for (( p=0; p<$arraylength; p++ )); do + # Isolate programmer and part (assumes -c prog or -cprog but not sth more tricky such as -qc prog) + programmer=$(echo ${pgm_and_target[$p]} | sed 's/ *\([^-]\)/\1/g' | tr \ \\n | grep ^-c | tr A-Z a-z) + part=$(echo ${pgm_and_target[$p]} | sed 's/ *\([^-]\)/\1/g' | tr \ \\n | grep ^-p | tr A-Z a-z) + if [[ $list_only -eq 1 ]]; then [[ p -ne 0 ]] && echo echo "# ${pgm_and_target[$p]}" @@ -158,7 +162,7 @@ for (( p=0; p<$arraylength; p++ )); do else echo "Prepare \"${pgm_and_target[$p]}\" and press 'enter' or 'space' to continue. Press any other key to skip" read -n1 -s -r -p $'' key - sleep 0.25 + [[ $programmer != -cdry* ]] && sleep 0.15 # Debounce key when not using dryrun/dryboot fi if [ "$key" == '' ]; then @@ -179,19 +183,13 @@ for (( p=0; p<$arraylength; p++ )); do # Is the to be tested programmer for a bootloader? is_bootloader=0 - # Isolate programmer (assumes either -c prog or -cprog but not sth more tricky such as -qc prog) - programmer=$(echo ${pgm_and_target[$p]} | sed 's/ *\([^-]\)/\1/g' | tr \ \\n | grep ^-c) if [ -n "$programmer" ]; then ($avrdude_bin $avrdude_conf "$programmer"/At 2>/dev/null | grep -q prog_modes.PM_SPM) && is_bootloader=1 fi # Should we test fuses? fusetest=1 - # Isolate part (assumes either -p part or -ppart) - part=$(echo ${pgm_and_target[$p]} | sed 's/ *\([^-]\)/\1/g' | tr \ \\n | grep ^-p | tr A-Z a-z) - if [ -n "$part" ]; then - [[ "${nofusetest[@]}" =~ "$part/" ]] && fusetest=0 - fi + [[ -n "$part" && "${nofusetest[@]}" =~ "$part/" ]] && fusetest=0 # Should EEPROM test be carried out? check_eeprom=1