2000-12-19 Joel Sherrill <joel@OARcorp.com>

* Makefile.am: Added tools subdirectory and removed commented out line.
	* configure.in: Added tools subdirectory.
	* tools: New subdirectory.
	* tools/.cvsignore, tools/Makefile.am, tools/configure.in,
	tools/runtest: New files -- based on powerpc/psim.
	* clock/clockdrv.c: Guessed new value for clock tick.  Need to
	add fast idle support.
	* include/bsp.h: tm27 support initiated.
	* start/start.S: Fixed frame/endframe problems on _sys_exit.
	* startup/bspstart.c: Increased Workspace size to 4 MBYTES!
	* linkcmds: Increased Workspace size to 4 MBYTES!
	* Most tests appear to run correctly!
This commit is contained in:
Joel Sherrill
2000-12-19 16:53:13 +00:00
parent 6879633672
commit 2ba9d3bdcc
13 changed files with 351 additions and 20 deletions

View File

@@ -1,3 +1,15 @@
2000-12-19 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Added tools subdirectory and removed commented out line.
* configure.in: Added tools subdirectory.
* tools: New subdirectory.
* tools/.cvsignore, tools/Makefile.am, tools/configure.in,
tools/runtest: New files -- based on powerpc/psim.
* clock/clockdrv.c: Guessed new value for clock tick. Need to
add fast idle support.
* include/bsp.h: tm27 support initiated.
* Most tests appear to run correctly!
2000-12-13 Joel Sherrill <joel@OARcorp.com>
* README: Updated. We are now vectoring a clock tick ISR handler.

View File

@@ -7,8 +7,7 @@ ACLOCAL_AMFLAGS = -I ../../../../../../aclocal
# wrapup is the one that actually builds and installs the library
# from the individual .rel files built in other directories
#SUBDIRS = include start startup clock console timer wrapup
SUBDIRS = include start startup clock console wrapup
SUBDIRS = include start startup clock console timer wrapup tools
include $(top_srcdir)/../../bsp.am

View File

@@ -15,7 +15,7 @@
#define Clock_driver_support_at_tick()
/* XXX */
#define CLICKS 10000
#define CLICKS 5000
#define Clock_driver_support_install_isr( _new, _old ) \
do { \
unsigned32 _clicks = CLICKS; \

View File

@@ -19,6 +19,8 @@ RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
RTEMS_CHECK_BSP_CACHE(RTEMS_BSP)
RTEMS_CANONICAL_HOST
RTEMS_CONFIG_BUILD_SUBDIRS(tools)
RTEMS_PROJECT_ROOT
# Explicitly list all Makefiles here
@@ -29,4 +31,7 @@ console/Makefile
include/Makefile
start/Makefile
startup/Makefile
timer/Makefile
wrapup/Makefile)
RTEMS_OUTPUT_BUILD_SUBDIRS(RTEMS_BUILD_SUBDIRS)

View File

@@ -21,9 +21,6 @@
/* external prototypes for monitor interface routines */
void outbyte( char );
char inbyte( void );
#define READ_UINT8( _register_, _value_ ) \
((_value_) = *((volatile unsigned char *)(_register_)))

View File

@@ -46,9 +46,10 @@ extern "C" {
#define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler )
#define Install_tm27_vector( handler ) \
(void) set_vector( handler, TX3904_IRQ_SOFTWARE_1, 1 ); \
#define Cause_tm27_intr()
#define Cause_tm27_intr() \
#define Clear_tm27_intr()

View File

@@ -22,6 +22,7 @@
.set nomips16
#endif
#include <asm.h>
#include "regs.S"
/*
@@ -206,16 +207,15 @@ init:
.end init
/*
* _exit -- Exit from the application. Normally we cause a user trap
* to return to the ROM monitor for another run. NOTE: This is
* the only other routine we provide in the crt0.o object, since
* it may be tied to the "_start" routine. It also allows
* executables that contain a complete world to be linked with
* just the crt0.o object.
* Exit from the application. Normally we cause a user trap
* to return to the ROM monitor for another run. NOTE: This is
* the only other routine we provide in the crt0.o object, since
* it may be tied to the "_start" routine. It also allows
* executables that contain a complete world to be linked with
* just the crt0.o object.
*/
.globl _sys_exit
.ent _sys_exit
_sys_exit:
FRAME(_sys_exit,sp,0,ra)
7:
#ifdef GCRT0
jal _mcleanup
@@ -226,6 +226,6 @@ _sys_exit:
nop
b 7b # but loop back just in-case
nop
.end _exit
ENDFRAME(_sys_exit)
/* EOF crt0.S */

View File

@@ -86,7 +86,8 @@ void bsp_start( void )
Cpu_table.postdriver_hook = bsp_postdriver_hook;
Cpu_table.interrupt_stack_size = 4096;
if ( BSP_Configuration.work_space_size >(512*1024) )
/* HACK -- tied to value linkcmds */
if ( BSP_Configuration.work_space_size >(4096*1024) )
_sys_exit( 1 );
BSP_Configuration.work_space_start = (void *) &WorkspaceBase;

View File

@@ -110,7 +110,8 @@ SECTIONS
_stack_init = .;
_clear_end = .;
WorkspaceBase = .;
. += 512K; /* reserve some memory for workspace */
/* HACK -- tied to value bspstart */
. += 4096K; /* reserve some memory for workspace */
HeapBase = .;
. += HeapSize; /* reserve some memory for heap */
}

View File

@@ -0,0 +1,13 @@
Makefile
Makefile.in
aclocal.m4
config.cache
config.guess
config.log
config.status
config.sub
configure
depcomp
install-sh
missing
mkinstalldirs

View File

@@ -0,0 +1,22 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I ../../../../../../../aclocal
noinst_SCRIPTS = runtest
TMPINSTALL_FILES += $(PROJECT_ROOT)/jmr3904/tests \
$(PROJECT_ROOT)/jmr3904/tests/runtest
$(PROJECT_ROOT)/jmr3904/tests:
$(mkinstalldirs) $@
$(PROJECT_ROOT)/jmr3904/tests/runtest: runtest
$(INSTALL_SCRIPT) $< $@
## HACK: install to build-tree
all-local: $(TMPINSTALL_FILES)
include $(top_srcdir)/../../../../../../../automake/host.am

View File

@@ -0,0 +1,19 @@
dnl Process this file with autoconf to produce a configure script.
dnl
dnl $Id$
AC_INIT(runtest)
RTEMS_TOP(../../../../../../..)
AC_CONFIG_AUX_DIR(../../../../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE(rtems-c-src-lib-libbsp-mips-jmr3904-tools,$RTEMS_VERSION,no)
AM_MAINTAINER_MODE
RTEMS_PROJECT_ROOT
RTEMS_TOOLPATHS
# Explicitly list all Makefiles here
AC_OUTPUT(
Makefile)

View File

@@ -0,0 +1,261 @@
#!/bin/sh -p
#
# Run rtems tests on the powerpc simulator
# This program generates a simulator script to run each test
# Typically the test is then run, although it can be generated
# and left as a file using -s
#
# COPYRIGHT (c) 1989-1999.
# On-Line Applications Research Corporation (OAR).
#
# The license and distribution terms for this file may be
# found in found in the file LICENSE in this distribution or at
# http://www.OARcorp.com/rtems/license.html.
#
# $Id$
#
# progname=`basename $0`
progname=${0##*/} # fast basename hack for ksh, bash
USAGE=\
"usage: $progname [ -opts ] test [ test ... ]
-o options -- specify options to be passed to simulator
-v -- verbose
-d -- generate device tree file (as 'test'.device) and exit
-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 $*
}
# print args, 1 per line
ml_echo()
{
for l
do
echo "$l"
done
}
# run at normal and signalled exit
test_exit()
{
exit_code=$1
rm -f ${logfile}.tmp*
[ "$sim_pid" ] && kill -9 $sim_pid
exit $exit_code
}
#
# process the options
#
# defaults for getopt vars
#
# max_run_time is defaulted to 5 minutes
#
verbose=""
extra_options=""
device_and_exit=""
stdio_setup="yes"
run_to_completion="yes"
logdir=log
update_on_tick="no"
max_run_time=$((5 * 60))
using_print_buffer="yes"
simulator=mipstx39-rtems-run
while getopts vdl:o:s: OPT
do
case "$OPT" in
v)
verbose="yes";;
d)
device_and_exit="yes"
run_to_completion="no"
stdio_setup="no";;
l)
logdir="$OPTARG";;
o)
extra_options="$OPTARG";;
s)
simulator="$OPTARG";;
*)
fatal;;
esac
done
let $((shiftcount = $OPTIND - 1))
shift $shiftcount
args=$*
#
# Check some parameters
#
# JRS CHANGE
# if [ ! -x ${simulator} ] ; then
# fatal "${simulator} is not executable"
# fi;
#
# 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.
monitor*| termios*)
if [ $run_to_completion = "yes" ]
then
warn "Skipping $tname; it is interactive"
continue
fi
;;
*-node2*)
warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
continue;;
*-node1*)
warn "Running both nodes associated with $tname"
variant=`echo $tname | sed 's/.*-node[12]//' | sed 's/\.exe//'`
tname=`echo $tname | sed 's/-node.*//'`
TEST_TYPE="mp"
;;
minimum*|stackchk*|spfatal*|termio*)
continue
;;
esac
if [ $TEST_TYPE = "mp" ]
then
cpus="1 2"
logfile1=$logdir/${tname}_1${variant}
logfile2=$logdir/${tname}_2${variant}
infofile1=$logfile1.info
infofile2=$logfile2.info
rm -f ${logfile1} ${logfile2}
date=`date`
echo "Starting $tname at $date"
${simulator} --board=jmr3904 ${tname}-node1${variant}.exe | \
sed -e 's/
//' -e '/^$/d' > ${logfile1} &
${simulator} --board=jmr3904 ${tname}-node2${variant}.exe | \
sed -e 's/
//' -e '/^$/d' > ${logfile2} &
wait
fi
if [ $TEST_TYPE = "single" ]
then
logfile=$logdir/${tname}_1
infofile=$logfile.info
rm -f ${logfile}.tmp*
date=`date`
echo "Starting $tname at $date"
# Generate a device file to get the work done.
# The device file must do the following:
#
# arrange for more memory (2 Mb)
if [ "$device_and_exit" = "yes" ]
then
fatal "Cannot currently generate device files"
fi
# Spin off the simulator in the background
# -c sets an instruction limit
# XXX need to make sure it won't run forever...
${simulator} --board=jmr3904 $tfile | \
sed -e 's/
//' -e '/^$/d' > ${logfile}
fi
# Create the info files
for cpu in $cpus
do
{
echo "$date"
echo "Test run on: `uname -n`"
echo "Host Information:"
echo `uname -a`
echo
#sed -e 's/
//' < ${logdir}/${tname}_${cpu}
cat ${logdir}/${tname}_${cpu}
if [ "$ran_too_long" = "yes" ]
then
echo "Test did NOT finish normally; killed after $max_run_time seconds"
fi
echo
date;
} > ${logdir}/${tname}_${cpu}.info
done
if [ "$cpus" = "1" ]
then
mv ${infofile} $logdir/${tname}.info
mv ${logfile} $logdir/${tname}
fi
done
echo "Tests completed at " `date`
test_exit 0