summaryrefslogtreecommitdiffstats
path: root/bsps
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-25 16:06:34 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-26 07:17:58 +0200
commit419d1e91a2413a2eb7564b34a781b2f6016dba43 (patch)
tree4ab8e94ec89ff4cbce27efaa54149084b6329f45 /bsps
parentbsps: Move documentation, etc. files to bsps (diff)
downloadrtems-419d1e91a2413a2eb7564b34a781b2f6016dba43.tar.bz2
bsp/mcf5206elite: Do not install runtest script
Provide the runtest script only as a part of the sources. This simplifies the build system. Test support should be included in the RTEMS Tester.
Diffstat (limited to 'bsps')
-rw-r--r--bsps/m68k/mcf5206elite/runtest351
1 files changed, 351 insertions, 0 deletions
diff --git a/bsps/m68k/mcf5206elite/runtest b/bsps/m68k/mcf5206elite/runtest
new file mode 100644
index 0000000000..0e814b2c1b
--- /dev/null
+++ b/bsps/m68k/mcf5206elite/runtest
@@ -0,0 +1,351 @@
+#! /bin/sh -p
+#
+# Run rtems tests on the Motorola MCF5206eLITE Coldfire Evaluation board
+# using gdb configured with P&E Micro Background Debug Mode debugging
+# interface.
+#
+# This program generates a gdb script to run each test, intercept
+# serial port output and put log into output file.
+#
+# Author: Victor V. Vengerov <vvv@oktet.ru>
+# Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
+#
+# Partially based on runtest script for powerpc psim.
+#
+# COPYRIGHT (c) 1989-1999.
+# On-Line Applications Research Corporation (OAR).
+#
+# The license and distribution terms for this file may be
+# found in the file LICENSE in this distribution or at
+# http://www.rtems.org/license/LICENSE.
+#
+
+# progname=`basename $0`
+progname=${0##*/} # fast basename hack for ksh, bash
+
+USAGE=\
+"usage: $progname [ -opts ] test [ test ... ]
+ -s ttydevice -- specify serial device to be used to capture test
+ output
+ -r baud -- set serial port baud rate (19200 by default)
+ -b bdmdevice -- specify BDM device to be used to control the target
+ -g gdbname -- specify name of gdb program to be used
+ -v -- verbose output
+ -d -- don't remove temporary files (for debugging only)
+ -i -- use interrupt driven console I/O when test is running
+ (many tests failed when interrupt driven console
+ input/output is used due undetermenistic tests
+ behaviour)
+ -p -- use termios poll console I/O
+ -l logdir -- specify log directory (default is 'logdir')
+
+ Specify test as 'test' or 'test.exe'.
+ All multiprocessing tests *must* be specified simply as 'mp01', etc.
+"
+
+# export everything
+set -a
+
+# log an error to stderr
+prerr()
+{
+ echo "$*" >&2
+}
+
+fatal() {
+ [ "$1" ] && prerr $*
+ prerr "$USAGE"
+ exit 1
+}
+
+warn() {
+ [ "$1" ] && prerr $*
+}
+
+# run at normal and signalled exit
+test_exit()
+{
+ exit_code=$1
+
+ rm -f ${logfile}.tmp*
+ [ "$gdb_pid" ] && kill -9 $gdb_pid
+ [ "$serial_pid" ] && kill -9 $serial_pid
+
+ exit $exit_code
+}
+
+#
+# process the options
+#
+# defaults for getopt vars
+#
+# max_run_time is defaulted to 5 minutes
+#
+
+verbose=""
+serial_device=/dev/ttyS0
+bdm_device=/dev/bdmcf0
+gdbprog=true
+for i in rtems bdm-rtems bdm bdm-elf bdm-coff ; do
+ if m68k-$i-gdb --version > /dev/null 2>&1 ; then
+ gdbprog=m68k-$i-gdb ;
+ break ;
+ fi
+done
+logdir=log
+max_run_time=$((5 * 60))
+sizeof_ram=$((1 * 1024 * 1024))
+debugging="no"
+baudrate="19200"
+console_mode=0
+
+while getopts vdips:r:b:l: OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ d)
+ debugging="yes";;
+ s)
+ serial_device="$OPTARG";;
+ r)
+ baudrate="$OPTARG";;
+ b)
+ bdm_device="$OPTARG";;
+ l)
+ logdir="$OPTARG";;
+ s)
+ gdbprog="$OPTARG";;
+ p)
+ console_mode=1;;
+ i)
+ console_mode=2;;
+ *)
+ fatal;;
+ esac
+done
+
+let $((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Run the tests
+#
+
+tests="$args"
+if [ ! "$tests" ]
+then
+ set -- `echo *.exe`
+ tests="$*"
+fi
+
+[ -d $logdir ] ||
+ mkdir $logdir || fatal "could not create log directory ($logdir)"
+
+# where the tmp files go
+trap "test_exit" 1 2 3 13 14 15
+
+for tfile in $tests
+do
+
+ tname=`basename $tfile .exe`
+ cpus="1"
+ TEST_TYPE="single"
+
+ case "$tname" in
+ # size is no longer interactive.
+ capture* | monitor* | termios* | fileio* | pppd*)
+ warn "Skipping $tname; it is interactive"
+ continue
+ ;;
+ *-node2*)
+ warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
+ continue
+ ;;
+ *-node1*)
+ warn "Running both nodes associated with $tname"
+ tname=`echo $tname | sed 's/-node.*//'`
+ TEST_TYPE="mp"
+ ;;
+ minimum*|stackchk*|*fatal*|malloctest*)
+ continue
+ ;;
+ esac
+
+ if [ "$TEST_TYPE" = "mp" ] ; then
+ fatal "MP tests not supported for this board"
+ fi
+
+ if [ $TEST_TYPE = "single" ] ; then
+ logfile=$logdir/${tname}
+ infofile=${logfile}.info
+ scriptfile=${logfile}.ss
+ gdblogfile=${logfile}.gdb
+
+ rm -f ${logfile}.tmp*
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ # Set serial port parameters
+ if ! stty -F ${serial_device} raw cs8 -cstopb cread crtscts \
+ ispeed ${baudrate} ospeed ${baudrate} \
+ > /dev/null 2> /dev/null ; then
+ fatal "Serial port couldn't be configured"
+ fi
+
+ # Flush serial port
+ cat ${serial_device} > /dev/null &
+ serial_pid=$!
+ sleep 1s
+ kill ${serial_pid}
+
+ # Capture serial port
+ cat ${serial_device} > $logfile &
+ serial_pid=$!
+
+ cat > "${scriptfile}" <<EOF
+target bdm $bdm_device
+set \$mbar = 0x10000001
+set \$csar0 = \$mbar - 1 + 0x064
+set \$csmr0 = \$mbar - 1 + 0x068
+set \$cscr0 = \$mbar - 1 + 0x06E
+set \$csar1 = \$mbar - 1 + 0x070
+set \$csmr1 = \$mbar - 1 + 0x074
+set \$cscr1 = \$mbar - 1 + 0x07A
+set \$csar2 = \$mbar - 1 + 0x07C
+set \$csmr2 = \$mbar - 1 + 0x080
+set \$cscr2 = \$mbar - 1 + 0x086
+set \$csar3 = \$mbar - 1 + 0x088
+set \$csmr3 = \$mbar - 1 + 0x08C
+set \$cscr3 = \$mbar - 1 + 0x092
+set \$csar4 = \$mbar - 1 + 0x094
+set \$csmr4 = \$mbar - 1 + 0x098
+set \$cscr4 = \$mbar - 1 + 0x09E
+set \$csar5 = \$mbar - 1 + 0x0A0
+set \$csmr5 = \$mbar - 1 + 0x0A4
+set \$cscr5 = \$mbar - 1 + 0x0AA
+set \$csar6 = \$mbar - 1 + 0x0AC
+set \$csmr6 = \$mbar - 1 + 0x0B0
+set \$cscr6 = \$mbar - 1 + 0x0B6
+set \$csar7 = \$mbar - 1 + 0x0B8
+set \$csmr7 = \$mbar - 1 + 0x0BC
+set \$cscr7 = \$mbar - 1 + 0x0C2
+#
+set *((short*) \$csar0) = 0xffe0
+set *((int*) \$csmr0) = 0x000f0000
+set *((short*) \$cscr0) = 0x1da3
+set *((short*) \$csar1) = 0x5000
+set *((int*) \$csmr1) = 0x00000000
+set *((short*) \$cscr1) = 0x3d43
+set *((short*) \$csar2) = 0x3000
+set *((int*) \$csmr2) = 0x000f0000
+set *((short*) \$cscr2) = 0x1903
+set *((short*) \$csar3) = 0x4000
+set *((int*) \$csmr3) = 0x000f0000
+set *((short*) \$cscr3) = 0x0083
+#
+load
+# Many tests not working properly when interrupt driven console I/O is used.
+set console_mode=$console_mode
+set \$pc=start
+set \$sp=0x20001ffc
+#
+break bsp_cleanup
+commands
+shell kill $serial_pid
+quit
+end
+#
+break _stop
+commands
+shell kill $serial_pid
+quit 1
+end
+#
+continue
+quit 2
+EOF
+ ${gdbprog} -x "${scriptfile}" "${tfile}" > "${gdblogfile}" 2>&1 &
+ gdb_pid=$!
+ {
+ time_run=0
+ while [ $time_run -lt $max_run_time ] ; do
+ sleep 10s
+ if kill -0 $gdb_pid 2> /dev/null ; then
+ time_run=$((time_run+10)) ;
+ else
+ exit 0
+ fi
+ done
+ kill -2 $serial_pid 2> /dev/null
+ kill -2 $gdb_pid 2> /dev/null
+ {
+ sleep 5s ;
+ if kill -0 $gdb_pid 2> /dev/null ; then
+ kill -9 $gdb_pid 2> /dev/null ;
+ fi
+ if kill -0 $serial_pid 2> /dev/null ; then
+ kill -9 $serial_pid 2> /dev/null ;
+ fi
+ } &
+ } &
+ wait $gdb_pid
+ gdb_status=$?
+ {
+ if kill -0 $serial_pid 2> /dev/null ; then
+ kill $serial_pid 2> /dev/null ;
+ fi
+ sleep 5s ;
+ if kill -0 $serial_pid 2> /dev/null ; then
+ kill -9 $serial_pid 2> /dev/null ;
+ fi
+ } &
+ if [ $gdb_status -ge 128 ] ; then
+ ran_too_long="yes" ;
+ else
+ ran_too_long="no"
+ fi
+ if [ $gdb_status -ne 0 ] ; then
+ test_failed="yes" ;
+ else
+ test_failed="no"
+ fi
+ gdb_pid=""
+ serial_pid=""
+ fi
+
+ # Create the info files
+ {
+ echo "$date"
+ echo "Test run on: `uname -n`"
+ echo "Host Information:"
+ echo `uname -a`
+ echo
+ echo "Serial port: ${serial_device}"
+ echo "Baud rate: ${baudrate}"
+ echo "BDM port: ${bdm_device}"
+ echo "gdb: `type -path ${gdbprog}`"
+
+ cat ${logfile}
+
+ if [ "$test_failed" = "yes" ] ; then
+ echo -e "\\n\\nTest did not finish normally"
+ if [ "$ran_too_long" = "yes" ] ; then
+ echo "Test killed after $max_run_time seconds"
+ fi
+ fi
+
+ echo
+ date;
+ } > ${infofile}
+ if [ "${debugging}" = "no" ] ; then
+ rm -f ${scriptfile}
+ rm -f ${gdblogfile}
+ fi
+done
+
+echo "Tests completed at " `date`
+test_exit 0