- Added support for MVME2604 board.
- New build script for: bld2 for new vxWorks version Tornado 2.0.2 - monitor memory inspection tool
This commit is contained in:
@ -164,10 +164,14 @@
|
||||
#include "bootLib.h"
|
||||
#include "ioLib.h"
|
||||
|
||||
#ifdef MV2600
|
||||
#include "../config/mv2604/config.h"
|
||||
#else
|
||||
#if (CPU == PPC603)
|
||||
#include "../config/mv1603/config.h"
|
||||
#elif (CPU == PPC604)
|
||||
#include "../config/mv1603/config.h"
|
||||
#include "../config/mv1604/config.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -58,11 +58,15 @@
|
||||
#include "usrLib.h"
|
||||
#include "ioLib.h"
|
||||
|
||||
#ifdef MV2600
|
||||
#include "../config/mv2604/config.h"
|
||||
#else
|
||||
#if (CPU == PPC603)
|
||||
#include "../config/mv1603/config.h"
|
||||
#elif (CPU == PPC604)
|
||||
#include "../config/mv1604/config.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
@ -1219,7 +1219,23 @@
|
||||
|
||||
SinqHM_Dsbl_Mask = 0; /* Start up with DAQ enabled */
|
||||
|
||||
Lwl_fifo = (uint *) 0x80810080; /* Set up address of Fibre Optic */
|
||||
/*
|
||||
set up address of fibre optic. This is very board specific!
|
||||
The last 3 bytes of this address are set in the programmable logic
|
||||
of the mezzanine card. The first byte is the offset of the PCI memory
|
||||
space in the processor memory map. Together the address must result
|
||||
in a valid address lying in the region reserved for PCI I/O. The
|
||||
program on the mezzanine card may need updating in order to ensure just
|
||||
that.
|
||||
|
||||
Mark Koennecke, February 2002
|
||||
*/
|
||||
#ifdef MV2600
|
||||
Lwl_fifo = (uint *) 0x80008080;
|
||||
#else
|
||||
Lwl_fifo = (uint *) 0x80810080; /* for MVME1603 boards */
|
||||
#endif
|
||||
|
||||
Lwl_csr = &Lwl_dummy_csr; /* Set up address of dummy CSR */
|
||||
/*============================================================================
|
||||
** Define our signal mask first and define an action routine to catch
|
||||
@ -1241,6 +1257,9 @@
|
||||
** flush out any data in the fibre-optic FIFO.
|
||||
*/
|
||||
*Lwl_csr = 0x0001; /* This will (maybe) initialise the fibre-optic FIFO. */
|
||||
printf("vxWorks thinks it still has %d bytes of memory\n",memFindMax());
|
||||
|
||||
printf("Flushing lwl.....\n");
|
||||
lwl_Fifo_Flush (); /* Flush the fibre-optic FIFO. */
|
||||
|
||||
/*============================================================================
|
||||
|
@ -170,7 +170,7 @@
|
||||
}
|
||||
|
||||
if (Sem_Server == NULL) {
|
||||
Sem_Server = semBCreate (SEM_Q_FIFO, SEM_FULL);
|
||||
Sem_Server = semBCreate (SEM_Q_FIFO,SEM_FULL);
|
||||
}
|
||||
/*
|
||||
** Debug hint - set Use_sem_tmo to zero to disable semaphore time-outs
|
||||
|
@ -80,7 +80,8 @@
|
||||
#===
|
||||
echo " Copying bld (previous version is bld.save) ..."
|
||||
mv bld bld.save
|
||||
rcp -p "${src}bld." ./bld
|
||||
rcp -p "${src}bld" ./bld
|
||||
rcp -p "${src}bld2" ./bld2
|
||||
exit
|
||||
#-----------------------------------------------------------------------------
|
||||
startup:
|
||||
|
432
sinqhm/bld2
Executable file
432
sinqhm/bld2
Executable file
@ -0,0 +1,432 @@
|
||||
#! /bin/csh
|
||||
# pss123:~sinqhm/wind/SinqHM/<instr>/bld V01G
|
||||
#
|
||||
# Script to compile and link the SinqHM_srv programs for vxWorks
|
||||
#
|
||||
# rcp -p "lnsa04:sinqhm/bld" ~/wind/SinqHM/bld
|
||||
#
|
||||
# This version is for the Tornado 2.0.2 version and the MVME2604 board
|
||||
# as used at AMOR and SANS
|
||||
#
|
||||
# Mark Koennecke, February 2002
|
||||
|
||||
## printf 'Arg 0 = "%s"\n' $0
|
||||
## printf 'Arg 1 = "%s"\n' $1
|
||||
## printf 'Arg 2 = "%s"\n' $2
|
||||
## printf 'Arg 3 = "%s"\n' $3
|
||||
#----------------------------------------------------------------------------
|
||||
set proc = "$0"
|
||||
if (`expr match "$proc" "\/"` != 1) set proc = "./$0"
|
||||
cd $proc:h # Build in bld's directory!
|
||||
#------------------------------------------------------------------------------
|
||||
# Uncomment the following command to disable remote-copy operations
|
||||
#
|
||||
## alias rcp 'echo " Warning -- remote copy disabled"; echo \!\!:* > /dev/null'
|
||||
#------------------------------------------------------------------------------
|
||||
if ("`whoami`" == "maden") then
|
||||
set src = "maden@lnsa06:sinqhm/"
|
||||
else if ("`whoami`" == "sinqhm") then
|
||||
set src = "koenneck@lnsa17:src/sics/sinqhm/"
|
||||
else
|
||||
echo Sorry, you are not recognised by this script.
|
||||
exit
|
||||
endif
|
||||
#------------------------------------------------------------------------------
|
||||
# alias ccvx 'ccppc -O0 -mcpu=603 -I${WIND_BASE}/target/h ' \
|
||||
# '-fno-builtin -fno-for-scope ' \
|
||||
# '-nostdinc -DCPU=PPC603 -D_GNU_TOOL -gdwarf -c -Wimplicit'
|
||||
alias ccvx 'ccppc ' \
|
||||
'-B/home/pss123/aco/sinqhm/wind2/2.0.2/host/sun4-solaris2/lib/gcc-lib/' \
|
||||
' -mstrict-align -fdollars-in-identifiers -O2 -fvolatile -fno-builtin' \
|
||||
' -fno-for-scope -Wall -I/h -I. '\
|
||||
' -I/home/pss123/aco/sinqhm/wind2/2.0.2/target/config/all ' \
|
||||
' -I/home/pss123/aco/sinqhm/wind2/2.0.2/target/h '\
|
||||
' -I/home/pss123/aco/sinqhm/wind2/2.0.2/target/src/config '\
|
||||
' -I/home/pss123/aco/sinqhm/wind2/2.0.2/target/src/drv -DCPU=PPC604 '\
|
||||
' -DMV2600 -DSINQHM_SPAWN=1 -c '
|
||||
|
||||
|
||||
#
|
||||
|
||||
set Insts = (dev dmc sans focus hrpt trics poldi amor)
|
||||
|
||||
if (("$1" == "") || \
|
||||
("$1" == "?") || \
|
||||
("$1" == "h") || \
|
||||
("$1" == "he") || \
|
||||
("$1" == "hel") || \
|
||||
("$1" == "help")) goto show_help
|
||||
|
||||
printf "\n"
|
||||
printf "Working directory is %s\n" "$cwd"
|
||||
printf 'Source is "%s"\n' "$src"
|
||||
printf "\n"
|
||||
|
||||
if ("$1" == "bld") goto bld
|
||||
if ("$1" == "startup") goto startup
|
||||
if ("$1" == "basic") goto basic
|
||||
|
||||
foreach inst ($Insts)
|
||||
if ("$1" == "$inst") goto $inst
|
||||
end
|
||||
printf '\aI do not know how to build "%s"\!\n' $1
|
||||
goto show_help
|
||||
#===========================================================================
|
||||
show_help_0:
|
||||
printf '\n\007You must specify what you want to build\!\n\n'
|
||||
show_help:
|
||||
#=========
|
||||
echo "Usage:"
|
||||
echo " bld bld - copy over new version of bld script."
|
||||
echo " bld startup - copy over new version of startup script."
|
||||
echo " bld basic - build basic system."
|
||||
echo " bld <inst> all - build all modules for instrument <inst>."
|
||||
echo " bld <inst> SinqHM_srv [<module>] - build SinqHM_srv module"
|
||||
echo " bld <inst> lwl_server - build lwl_server module"
|
||||
echo " bld <inst> SinqHM_bootParamsConfig - build auto-config module"
|
||||
echo " bld <inst> SinqHM_bootUtil - build boot-utility module"
|
||||
echo " bld focus FOCUS_srv [<module>] - build FOCUS_srv module"
|
||||
echo " bld <inst> auto - build auto-spawn system"
|
||||
echo " "
|
||||
echo "Valid instruments are:"
|
||||
echo " $Insts"
|
||||
echo " "
|
||||
exit
|
||||
#-----------------------------------------------------------------------------
|
||||
bld:
|
||||
#===
|
||||
echo " Copying bld (previous version is bld.save) ..."
|
||||
mv bld bld.save
|
||||
rcp -p "${src}bld" ./bld
|
||||
rcp -p "${src}bld2" ./bld2
|
||||
rcp -p "${src}tornado2" ./tornado2
|
||||
exit
|
||||
#-----------------------------------------------------------------------------
|
||||
startup:
|
||||
#=======
|
||||
echo " Copying startup ..."
|
||||
rcp -p "${src}startup.template" ./startup
|
||||
exit
|
||||
#-----------------------------------------------------------------------------
|
||||
basic:
|
||||
#=====
|
||||
set dflt = "$cwd"
|
||||
cd $WIND_BASE/target/config/mv2604
|
||||
echo " "
|
||||
echo "Default directory changed to:"
|
||||
echo " $cwd"
|
||||
printf "Building vxWorks_basic system image ...\n\n"
|
||||
touch config.h # Force a complete re-compilation
|
||||
|
||||
make ADDED_CFLAGS=" -DSINQHM_SPAWN=0" \
|
||||
ADDED_MODULES=""
|
||||
|
||||
mv vxWorks vxWorks_basic
|
||||
mv vxWorks.sym vxWorks.sym_basic
|
||||
cp -p vxWorks_basic $dflt/vxWorks_basic
|
||||
cp -p vxWorks.sym_basic $dflt/vxWorks.sym
|
||||
cd $dflt
|
||||
echo " Done. Result is $dflt/vxWorks_basic"
|
||||
exit
|
||||
#=============================================================================
|
||||
# Now follow labels for all the valid instruments.
|
||||
dev:
|
||||
#----
|
||||
set instr = Devel
|
||||
set defn = '-DINST="Devel" -DDevel'
|
||||
set direc = Devel/NEW
|
||||
goto comn
|
||||
dmc:
|
||||
#---
|
||||
set instr = DMC
|
||||
set defn = '-DINST="DMC" -DDMC'
|
||||
set direc = DMC/NEW
|
||||
goto comn
|
||||
sans:
|
||||
#----
|
||||
set instr = SANS
|
||||
set defn = '-DINST="SANS" -DSANS'
|
||||
set direc = SANS/NEW
|
||||
goto comn
|
||||
focus:
|
||||
#-----
|
||||
set instr = FOCUS
|
||||
set defn = '-DINST="FOCUS" -DFOCUS'
|
||||
set direc = FOCUS/NEW
|
||||
goto comn
|
||||
hrpt:
|
||||
#----
|
||||
set instr = HRPT
|
||||
set defn = '-DINST="HRPT" -DHRPT'
|
||||
set direc = HRPT/NEW
|
||||
goto comn
|
||||
trics:
|
||||
#-----
|
||||
set instr = TriCS
|
||||
set defn = '-DINST="TRICS" -DTRICS'
|
||||
set direc = TRICS
|
||||
goto comn
|
||||
poldi:
|
||||
#-----
|
||||
set instr = POLDI
|
||||
set defn = '-DINST="POLDI" -DPOLDI'
|
||||
set direc = POLDI/NEW
|
||||
goto comn
|
||||
amor:
|
||||
#----
|
||||
set instr = AMOR
|
||||
set defn = '-DINST="AMOR" -DAMOR'
|
||||
set direc = AMOR/NEW
|
||||
goto comn
|
||||
comn:
|
||||
#----
|
||||
echo The selected instrument is ${instr}.
|
||||
|
||||
if ("$2" == "") goto show_help_0
|
||||
|
||||
cd $direc
|
||||
printf "Working directory changed to %s\n" "$cwd"
|
||||
if ("$2" == "SinqHM_srv") goto SinqHM_srv
|
||||
if ("$2" == "lwl_server") goto lwl_server
|
||||
if ("$2" == "SinqHM_bootParamsConfig") goto SinqHM_bootParamsConfig
|
||||
if ("$2" == "SinqHM_bootUtil") goto SinqHM_bootUtil
|
||||
if (("$instr" == "FOCUS") && ("$2" == "FOCUS_srv")) goto FOCUS_srv
|
||||
if ("$2" == "auto") goto auto
|
||||
if ("$2" != "all") then
|
||||
printf '\007I do not know how to build "%s" for %s\!\n' "$2" $instr
|
||||
printf 'Type "bld help" for help\!\n'
|
||||
exit
|
||||
endif
|
||||
#--------------------------------------------------------------
|
||||
SinqHM_srv:
|
||||
#==========
|
||||
set Mods = (SinqHM_gbl.h \
|
||||
SinqHM_def.h \
|
||||
vmio10_def.h \
|
||||
SinqHM_srv_main.c \
|
||||
SinqHM_srv_routines.c \
|
||||
SinqHM_srv_filler.c \
|
||||
SinqHM_srv_server.c)
|
||||
|
||||
if (("$3" == "") || ("$3" == "all")) goto SinqHM_srv_all
|
||||
|
||||
foreach module ($Mods)
|
||||
if ("$3" == "$module") goto SinqHM_srv_cpy
|
||||
end
|
||||
|
||||
if (("$3" != "?") && \
|
||||
("$3" != "h") && \
|
||||
("$3" != "he") && \
|
||||
("$3" != "hel") && \
|
||||
("$3" != "help")) then
|
||||
printf '"%s" is not a recognised module of SinqHM_srv\!\n\n' "$3"
|
||||
endif
|
||||
|
||||
printf 'To build SinqHM_srv, use the command:\n'
|
||||
printf '\n'
|
||||
printf ' bld <instr> SinqHM_srv [module]\n'
|
||||
printf '\n'
|
||||
printf 'Valid instruments are:\n'
|
||||
printf '\n'
|
||||
printf ' %s\n' "$Insts"
|
||||
printf '\n'
|
||||
printf 'Valid modules are:\n'
|
||||
printf '\n'
|
||||
foreach module ($Mods)
|
||||
printf ' %s\n' "$module"
|
||||
end
|
||||
printf '\n'
|
||||
exit
|
||||
#----------------------------------------------------------------------------
|
||||
SinqHM_srv_cpy:
|
||||
#--------------
|
||||
echo " Copying $3 ..."
|
||||
rcp -p "${src}$3" ./$3
|
||||
|
||||
if ("$3" == "SinqHM_gbl.h") goto SinqHM_srv_compile_all
|
||||
if ("$3" == "SinqHM_def.h") goto SinqHM_srv_compile_all
|
||||
if ("$3" == "vmio10_def.h") goto SinqHM_srv_compile_all
|
||||
|
||||
echo " Compiling $3 ..."
|
||||
ccvx $defn $3
|
||||
goto SinqHM_srv_link
|
||||
|
||||
SinqHM_srv_all:
|
||||
#--------------
|
||||
echo " "
|
||||
echo "Building SinqHM_srv ..."
|
||||
echo " Copying header files ..."
|
||||
rcp -p "${src}SinqHM_gbl.h" ./SinqHM_gbl.h
|
||||
rcp -p "${src}SinqHM_def.h" ./SinqHM_def.h
|
||||
rcp -p "${src}vmio10_def.h" ./vmio10_def.h
|
||||
echo " Copying source files ..."
|
||||
rcp -p "${src}SinqHM_srv_main.c" ./SinqHM_srv_main.c
|
||||
rcp -p "${src}SinqHM_srv_routines.c" ./SinqHM_srv_routines.c
|
||||
rcp -p "${src}SinqHM_srv_filler.c" ./SinqHM_srv_filler.c
|
||||
rcp -p "${src}SinqHM_srv_server.c" ./SinqHM_srv_server.c
|
||||
|
||||
SinqHM_srv_compile_all:
|
||||
#----------------------
|
||||
echo " Compiling SinqHM_srv_main.c ..."
|
||||
ccvx $defn SinqHM_srv_main.c
|
||||
echo " Compiling SinqHM_srv_routines.c ..."
|
||||
ccvx $defn SinqHM_srv_routines.c
|
||||
echo " Compiling SinqHM_srv_filler.c ..."
|
||||
ccvx $defn SinqHM_srv_filler.c
|
||||
echo " Compiling SinqHM_srv_server.c ..."
|
||||
ccvx $defn SinqHM_srv_server.c
|
||||
|
||||
SinqHM_srv_link:
|
||||
#---------------
|
||||
echo " Linking ..."
|
||||
ldppc -o SinqHM_srv.o -r \
|
||||
SinqHM_srv_main.o SinqHM_srv_routines.o \
|
||||
SinqHM_srv_filler.o SinqHM_srv_server.o
|
||||
echo " Done. Result is $cwd/SinqHM_srv.o"
|
||||
if ("$2" != "all") exit
|
||||
#---------------------------------------------------------------------------
|
||||
lwl_server:
|
||||
#==========
|
||||
echo " "
|
||||
echo "Building lwl_server ..."
|
||||
echo " Copying header files ..."
|
||||
rcp -p "${src}vmio10_def.h" ./vmio10_def.h
|
||||
echo " Copying source files ..."
|
||||
rcp -p "${src}lwl_server.c" ./lwl_server.c
|
||||
echo " Compiling lwl_server.c ..."
|
||||
ccvx $defn lwl_server.c
|
||||
echo " Done. Result is $cwd/lwl_server.o"
|
||||
if ("$2" != "all") exit
|
||||
#---------------------------------------------------------------------------
|
||||
SinqHM_bootParamsConfig:
|
||||
#=======================
|
||||
echo " "
|
||||
echo "Building SinqHM_bootParamsConfig ..."
|
||||
echo " Copying header files ..."
|
||||
rcp -p "${src}SinqHM_def.h" ./SinqHM_def.h
|
||||
echo " Copying source files ..."
|
||||
rcp -p "${src}SinqHM_bootParamsConfig.c" \
|
||||
./SinqHM_bootParamsConfig.c
|
||||
echo " Compiling SinqHM_bootParamsConfig.c ..."
|
||||
ccvx $defn -I${WIND_BASE}/target/config/all \
|
||||
SinqHM_bootParamsConfig.c
|
||||
echo " Done. Result is $cwd/SinqHM_bootParamsConfig.o"
|
||||
if ("$2" != "all") exit
|
||||
#---------------------------------------------------------------------------
|
||||
SinqHM_bootUtil:
|
||||
#===============
|
||||
echo " "
|
||||
echo "Building SinqHM_bootUtil ..."
|
||||
echo " Copying header file ..."
|
||||
rcp -p "${src}SinqHM_def.h" ./SinqHM_def.h
|
||||
echo " Copying source file ..."
|
||||
rcp -p "${src}SinqHM_bootUtil.c" \
|
||||
./SinqHM_bootUtil.c
|
||||
echo " Compiling SinqHM_bootUtil.c ..."
|
||||
ccvx $defn -I${WIND_BASE}/target/config/all SinqHM_bootUtil.c
|
||||
echo " Done. Result is $cwd/SinqHM_bootUtil.o"
|
||||
if ("$2" != "all") exit
|
||||
#---------------------------------------------------------------------------
|
||||
FOCUS_srv:
|
||||
#==========
|
||||
if ($instr != "FOCUS") goto FOCUS_srv_skp
|
||||
set Mods = ( FOCUS_gbl.h \
|
||||
SinqHM_def.h \
|
||||
FOCUS_srv_main.c )
|
||||
|
||||
if (("$3" == "") || ("$3" == "all")) goto FOCUS_srv_all
|
||||
|
||||
foreach module ( $Mods )
|
||||
if ("$3" == "$module") goto FOCUS_srv_cpy
|
||||
end
|
||||
|
||||
if (("$3" != "?") && \
|
||||
("$3" != "h") && \
|
||||
("$3" != "he") && \
|
||||
("$3" != "hel") && \
|
||||
("$3" != "help")) then
|
||||
printf '"%s" is not a recognised module of FOCUS_srv\!\n\n' "$3"
|
||||
endif
|
||||
|
||||
printf 'To build FOCUS_srv, use the command:\n'
|
||||
printf '\n'
|
||||
printf ' bld <instr> FOCUS_srv [module]\n'
|
||||
printf '\n'
|
||||
printf 'Valid instruments are:\n'
|
||||
printf '\n'
|
||||
printf ' %s\n' "focus"
|
||||
printf '\n'
|
||||
printf 'Valid modules are:\n'
|
||||
printf '\n'
|
||||
foreach module ($Mods)
|
||||
printf ' %s\n' "$module"
|
||||
end
|
||||
printf '\n'
|
||||
exit
|
||||
#----------------------------------------------------------------------------
|
||||
FOCUS_srv_cpy:
|
||||
#--------------
|
||||
echo " Copying $3 ..."
|
||||
rcp -p "${src}$3" ./$3
|
||||
|
||||
if ("$3" == "FOCUS_gbl.h") goto FOCUS_srv_compile_all
|
||||
if ("$3" == "SinqHM_def.h") goto FOCUS_srv_compile_all
|
||||
|
||||
echo " Compiling $3 ..."
|
||||
ccvx $defn $3
|
||||
goto FOCUS_srv_link
|
||||
|
||||
FOCUS_srv_all:
|
||||
#--------------
|
||||
echo " "
|
||||
echo "Building FOCUS_srv ..."
|
||||
echo " Copying header files ..."
|
||||
rcp -p "${src}FOCUS_gbl.h" ./FOCUS_gbl.h
|
||||
rcp -p "${src}SinqHM_def.h" ./SinqHM_def.h
|
||||
echo " Copying source files ..."
|
||||
rcp -p "${src}FOCUS_srv_main.c" ./FOCUS_srv_main.c
|
||||
|
||||
FOCUS_srv_compile_all:
|
||||
#----------------------
|
||||
echo " Compiling FOCUS_srv_main.c ..."
|
||||
ccvx $defn FOCUS_srv_main.c
|
||||
|
||||
FOCUS_srv_link:
|
||||
#---------------
|
||||
echo " Linking ..."
|
||||
ldppc -o FOCUS_srv.o -r \
|
||||
FOCUS_srv_main.o
|
||||
echo " Done. Result is $cwd/FOCUS_srv.o"
|
||||
FOCUS_srv_skp:
|
||||
#-------------
|
||||
if ("$2" != "all") exit
|
||||
#---------------------------------------------------------------------------
|
||||
auto:
|
||||
#====
|
||||
set dflt = "$cwd"
|
||||
cd $WIND_BASE/target/config/mv2604
|
||||
echo " "
|
||||
echo "Default directory changed to:"
|
||||
echo " $cwd"
|
||||
printf "\n\n==================================================\n"
|
||||
printf \
|
||||
"\n\nBuilding vxWorks_auto system image for $instr Instrument ...\n\n"
|
||||
touch config.h # Force a complete re-compilation
|
||||
|
||||
set mods = ( $dflt/SinqHM_srv.o \
|
||||
$dflt/lwl_server.o \
|
||||
$dflt/SinqHM_bootParamsConfig.o \
|
||||
$dflt/SinqHM_bootUtil.o )
|
||||
if ($instr == FOCUS) set mods = ( $mods $dflt/FOCUS_srv.o )
|
||||
|
||||
make ADDED_CFLAGS=" -DSINQHM_SPAWN=1" \
|
||||
ADDED_MODULES="$mods"
|
||||
|
||||
mv vxWorks vxWorks_auto
|
||||
mv vxWorks.sym vxWorks.sym_auto
|
||||
cp -p vxWorks_auto $dflt/vxWorks_auto
|
||||
cp -p vxWorks.sym_auto $dflt/vxWorks.sym
|
||||
cd $dflt
|
||||
echo " Done. Result is $dflt/vxWorks_auto"
|
||||
exit
|
||||
#------------------------------------------------------------------ End of bld
|
@ -360,7 +360,7 @@
|
||||
printf ("\nCycle %5d", i+1);
|
||||
for (j = 0; j < nrec; j++) {
|
||||
status = send (Cnct_skt, p_recs[j], (*p_recs[j])+1, 0);
|
||||
sleep(2);
|
||||
/* sleep(2); */
|
||||
}
|
||||
}
|
||||
printf ("\nDone.\n");
|
||||
|
@ -479,3 +479,7 @@
|
||||
return OK;
|
||||
}
|
||||
/*========================================= End of LWL_SERVER.C ========*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
354
sinqhm/monitor.c
Normal file
354
sinqhm/monitor.c
Normal file
@ -0,0 +1,354 @@
|
||||
/*****************************************************************************
|
||||
* File: monitor.c
|
||||
* Purpose: to allow a user to easily edit memory using 1,2
|
||||
* or 4 byte
|
||||
* words.
|
||||
* Author: Scott Johnson
|
||||
* Host Sys: VxWorks
|
||||
* Started: 01/20/90
|
||||
* Updates: 02/13/90 added my own display routine
|
||||
* 03/29/90 added history
|
||||
* 08/22/90 fixed repeat command (return key)
|
||||
* 11/13/90 bus errors are trapped
|
||||
* Mark Koennecke
|
||||
* 04/02/2002 for Tornado 2.0.2
|
||||
*****************************************************************************/
|
||||
/* tabstop = 4 */
|
||||
|
||||
#include "vxWorks.h"
|
||||
#include "strLib.h"
|
||||
#include "stdioLib.h"
|
||||
|
||||
int data_type = 2; /* 1 = byte 2 = word 4 = long */
|
||||
|
||||
static void help(void);
|
||||
static int process_command(char *command);
|
||||
|
||||
int monitor (int a1, int a2, int a3, int a4, int a5, int a6, int a7,
|
||||
int a8, int a9, int suspend)
|
||||
{
|
||||
|
||||
char command [80];
|
||||
char input [80];
|
||||
char *from_read;
|
||||
|
||||
printf ("VxWorks history added 03/29/90\n");
|
||||
printf ("Bus Error trapping added 11/13/90\n\n");
|
||||
do
|
||||
{
|
||||
switch (data_type)
|
||||
{
|
||||
case 1 : printf ("byte>"); break;
|
||||
case 2 : printf ("word>"); break;
|
||||
case 4 : printf ("long>"); break;
|
||||
}
|
||||
|
||||
if ((from_read = fgets(input,79,stdin)) != EOF)
|
||||
{
|
||||
if ( strlen(input) == 0 && (strlen(command) != 0))
|
||||
{
|
||||
printf ("%s\n", command);
|
||||
process_command (command);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("%s\n", input);
|
||||
process_command (input);
|
||||
strcpy (command, input);
|
||||
}
|
||||
}
|
||||
|
||||
} while ((input [0] != 'q') && (from_read != EOF));
|
||||
fflush (stdin);
|
||||
fflush (stdout);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int process_command (command)
|
||||
char *command;
|
||||
{
|
||||
|
||||
unsigned long longInt, longVal;
|
||||
unsigned short shortInt;
|
||||
unsigned char byte;
|
||||
unsigned char *ptr;
|
||||
unsigned char *address, *size;
|
||||
unsigned int start, end, value;
|
||||
int scanned;
|
||||
char ch;
|
||||
|
||||
switch (command [0])
|
||||
{
|
||||
case 'q' : /* user wants to quit so do nothing */
|
||||
case '#' : /* comment character */
|
||||
break;
|
||||
case 'f' : /* block fill */
|
||||
scanned=sscanf(command,"%c %x %x %x",&ch,&address,&size,&longInt);
|
||||
if (scanned != 4)
|
||||
printf ("usage : f address size value\n");
|
||||
else
|
||||
{
|
||||
for (ptr = address ;(int)ptr < ((int)size + (int)address);
|
||||
ptr+=data_type)
|
||||
{
|
||||
switch (data_type)
|
||||
{
|
||||
case 1 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &byte) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
*((unsigned char *) ptr) = byte;
|
||||
break;
|
||||
case 2 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &shortInt) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
*((unsigned short *) ptr) = shortInt;
|
||||
break;
|
||||
case 4 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &longInt) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
*((unsigned long *) ptr) = longInt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 's' : /* scan range */
|
||||
scanned=sscanf(command,"%c %x %x %x",&ch,&start,&end,&value);
|
||||
if (scanned != 4)
|
||||
printf ("usage : s start end value\n");
|
||||
else
|
||||
{
|
||||
/**
|
||||
scanning does not work: some memory locations lock up!!!!
|
||||
*/
|
||||
printf("Scanning from %x %x for %x\n", start, end, value);
|
||||
for (ptr = start ;(unsigned int)ptr < end;
|
||||
ptr+=data_type)
|
||||
{
|
||||
switch (data_type)
|
||||
{
|
||||
case 1 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &byte) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
}
|
||||
else {
|
||||
if((unsigned char)*ptr == value){
|
||||
printf("Value found at %08x\n",ptr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &shortInt) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
}
|
||||
else
|
||||
{
|
||||
if((unsigned short)*ptr == value){
|
||||
printf("Value found at %08x\n",ptr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &longInt) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
}
|
||||
else
|
||||
{
|
||||
if((unsigned int)*ptr == value){
|
||||
printf("Value found at %08x\n",ptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Finished scanning....\n");
|
||||
break;
|
||||
case 'l' :
|
||||
data_type = 4;
|
||||
break;
|
||||
case 'b' :
|
||||
data_type = 1;
|
||||
break;
|
||||
case 'w' :
|
||||
if (command [1] == 'o')
|
||||
data_type = 2;
|
||||
else
|
||||
{
|
||||
scanned=sscanf(command,"%c %x %x",&ch,&ptr,&longInt);
|
||||
if (scanned != 3)
|
||||
printf ("usage : w address value\n");
|
||||
else
|
||||
{
|
||||
switch (data_type)
|
||||
{
|
||||
case 1 :
|
||||
byte = (unsigned char) longInt;
|
||||
if (vxMemProbe (ptr, WRITE, data_type, &byte) != OK)
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
else
|
||||
printf("%06X : %02X\n",(unsigned) ptr, byte);
|
||||
break;
|
||||
case 2 :
|
||||
shortInt = (unsigned short) longInt;
|
||||
if (vxMemProbe (ptr, WRITE, data_type, &shortInt) != OK)
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
else
|
||||
printf ("%06X : %04X\n", (unsigned) ptr, shortInt);
|
||||
break;
|
||||
case 4 :
|
||||
if (vxMemProbe (ptr, WRITE, data_type, &longInt) != OK)
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
else
|
||||
printf ("%06X : %08X\n", (unsigned) ptr, longInt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'r' :
|
||||
scanned = sscanf (command,"%c %x", &ch,&ptr);
|
||||
if (scanned != 2)
|
||||
printf ("usage : r address\n");
|
||||
else
|
||||
{
|
||||
switch (data_type)
|
||||
{
|
||||
case 1 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &byte) != OK)
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
else
|
||||
printf ("%06x : %02x\n",(unsigned) ptr, byte);
|
||||
break;
|
||||
case 2 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &shortInt) != OK)
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
else
|
||||
printf ("%06x : %04x\n",(unsigned) ptr, shortInt);
|
||||
break;
|
||||
case 4 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &longInt) != OK)
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
else
|
||||
printf ("%06X : %08X\n", (unsigned) ptr, longInt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'd' : /* use VxWorks display routine */
|
||||
scanned = sscanf (command,"%c %x", &ch,&ptr);
|
||||
if (scanned != 2)
|
||||
printf ("usage : d address\n");
|
||||
else
|
||||
{
|
||||
int x,y;
|
||||
for (y=0;y<16;y++)
|
||||
{
|
||||
printf ("%06X-", (unsigned int) ptr);
|
||||
for (x=0;x<16/data_type;x++, ptr += data_type)
|
||||
{
|
||||
switch (data_type)
|
||||
{
|
||||
case 1 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &byte) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
printf (" %02x", byte);
|
||||
break;
|
||||
case 2 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &shortInt) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
printf (" %04x", shortInt);
|
||||
break;
|
||||
case 4 :
|
||||
if (vxMemProbe (ptr, READ, data_type, &longInt) != OK)
|
||||
{
|
||||
printf ("Bus error: address = %06x, data size = %d\n",
|
||||
(unsigned int) ptr, data_type);
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
printf (" %08x", longInt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
printf ("\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'h' :
|
||||
help ();
|
||||
break;
|
||||
default :
|
||||
printf ("Unrecognized command. Use h for help.\n");
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void help ()
|
||||
{
|
||||
|
||||
printf ("===================================================\n");
|
||||
printf ("= Monitor =\n");
|
||||
printf ("= By Scott Johnson =\n");
|
||||
printf ("===================================================\n");
|
||||
printf ("Commands:\n");
|
||||
printf ("[r]ead address..................reads given address\n");
|
||||
printf ("[w]rite address value...........writes value to address\n");
|
||||
printf ("[b]yte..........................read/write 8 bits\n");
|
||||
printf ("[wo]rd..........................read/write 16 bits\n");
|
||||
printf ("[l]ong..........................read/write 32 bits\n");
|
||||
printf ("[d]isplay address...............show memory at address\n");
|
||||
printf ("[f]ill address size value.......fill a block with value\n");
|
||||
printf
|
||||
("[s]scan start end value.........scan range between start end for value\n");
|
||||
printf ("[q]uit..........................quit\n");
|
||||
printf ("\n");
|
||||
printf ("Features:\n");
|
||||
printf ("1) Hit return to do a command again.\n");
|
||||
printf ("2) VxWorks history is supported\n");
|
||||
printf ("3) Redirect a script file while in the shell to easily\n");
|
||||
printf (" setup multiple locations.\n");
|
||||
printf (" Ex: -> monitor < script_file \n");
|
||||
printf ("\n");
|
||||
printf ("Remember to end script files with a 'q'\n");
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user