The following diagnostic utilities (located in ${CHEOPS_BASE}/local/src/diag/) are of general use in determining why a Cheops isn't running. By category :
This program tests the Cheops P2 module memory. It will test the region described by the command line arguments, reporting to the user any errors found. This program can be run for one to four billion passes, with infinite loop selected by specifying zero passes. It sequentially tests all of the memory regions specified on the command line on every pass.
Usage:
memtest [ -specific < quad_num> < size_bytes> ] # test region of mem. [ -bank < bank_num> [< bank_num> ]] # test P2 bank [ -type (byte|short|long|quad) ] # word size to use [ -passes < number_of_tests> ] [ -errors < maximum_number_before_exiting> ] [ -debug ] # turn on debugging messages
The < size> of a region is specified in bytes, using hexadecimal notation.
A local P2 memory bank may be specified using the -b option, in
which case memtest will malloc as much memory in that bank as
it can, and test it. Allowable P2 banks are eight banks of
VRAM numbered 0 through 7 and one bank of SRAM numbered 8.
This program tests the Cheops P2 memory global bus port.
It does this by performing bit pattern and address test
in one of two ways:
This program assumes that the local bus port of the memory has
been tested and works perfectly (see memtest).
Usage: This is THE definitive Cheops Flood Controller test program.
Unlike fdb, FloodTest is intended to exhaustively test the
functionality of the P2 flood controllers. If a problem is detected,
fdb may then be used to actually probe around in the circuit.
Usage: FloodTest operates in two different modes, selected either by the
-quals or the -random argument. If in random mode, the parameters of the
transfer being tested are selected at random from the set of possible
(not necessarily probable !) parameters.
If in quals mode (short for qualification), the tests done are
defined in suites (where a typical suite consists of a set of 4 to 10
different parameters.) The pre-defined suites (see the source code
for easy directions on how to add more) are :
The defaults are optimal, in that they test all the flood channels
available of a processor module, using the "real" qualification suite.
cshow is invaluable in determining the health of both the
P2 Nile Bus interface, the backplane Nile Bus, and the O1 Nile Bus
interface.
This program takes a file, loads it into the local memory,
then transfers it over the nile bus. The image must currently
have a size of 1024 (hor) x 512 (ver).
Alternatively, the image to be transferred can be a synthesized
test pattern (selected either with the -p argument or by default.)
Usage: The -pattern option determines the data pattern used for the
transfer, and can greatly influence which errors are detected.
Here are the pattern numbers :
This program tests the Color Space Converters on a Cheops P2 processor
module using JUST the resources available on a P2. The memory and
flood controllers MUST be working for this program to stand a chance
of succeeding.
Usage: This is THE definitive Cheops P2 T-Engine test program.
Unlike tdb, TengTest intended to exhaustively
test the functionality of the P2 Transpose Engines.
If a problem is detected, tdb may then be used to
actually probe around in the circuit.
Usage: In a similar manner to floodtest, the tests are done in
suites (where a typical suite consists of several passes with different
parameters.) The pre-defined suites (see the source code for easy
directions on how to add more) are :
This fundamentally unsupported program tests the DCT stream processor.
Usage: Where < dev_num> should be 0, 2, or 4, depending on the daughter
card slot containing the stream processor being tested.
There are several remap utilities in
${CHEOPS_BASE}/local/src/diag/remap/
which need to have their usage described here.
There are several programs that comprise the mojo tests located in
${CHEOPS_BASE}/local/src/diag/mojotest/
- one for each configuration mode currently supported. Unfortunately,
they all use Norman, precluding their use in REAL low level debugging.
There is also a top level script that runs all of the tests
to determine if a Mojo stream processor is healthy.
The stream_proc_slot argument refers to which P2 stream
processor daughtercard slot ([0,2]) the Mojo being tested is located in.
Usage: This motion estimator test program writes one frame of
data in memory, copy it into another frame memory which
is shifted from (-8, -8) to (7, 7).
Usage: Program to test the filter card stream processors, looking for
blatant errors. It should be able to detect register R/W errors and
localize errors to within a chip on the card. The stream_proc_slot
argument refers to which P2 stream processor daughtercard slot ([0,2])
the filter card being tested is located in.
Usage: This is a quick hack that tests the flood controller interrupts.
There are no command line arguments.
This programs tests the dma library calls and the P2 local processor's
(80960CA) DMA controller. There are no command line arguments.
This program tests the operation
of a Cheops P2 Module Flood Controller.
But's that not all. It slices, dices, and fills
memory with any number of useful data patterns
for your probing pleasure. It checks to see if a
transfer started, or ended. It walks the dog and
signs UROP timecards. And all for free !
The main use of this diagnostic is for debugging with a Logic
Analyzer or an oscilloscope. Actually testing overall health of the
flood controllers is best done with floodtest.
Usage: This program tests the operation of a Cheops P2 module Transpose
Engine. See tengtest a better
tester. At this time, the management is dismayed to announce that
the many arguments to tdb must be fixed at compile time.
This is a very low level program used for oscilloscope debugging
of P2 (and global bus) timing intricacies.
This very useful tiny program is used to reconfigure the bus controller
on a P2 local processor (80960CA). It is useful for debugging things
that don't warrant adding them to the boot config of Magic7 yet.
Unfortunately, you have to recompile it for your specific task (too many
options for a reasonable command line interface !)
Diagnostics for debugging SCSI do exist (in
${CHEOPS_BASE}/local/src/diag/scsi/), but they aren't that great.
To quickly determine if you have a SCSI problem, try the
scsi_diag command (no command line arguments.) It is a shell
script that uses chload, chread, and diff
to test for data and handshaking problems. Make sure that the memory
that it uses for the test (usually bank 4-7) is installed and working.
The built-in debugging in the Magic7 kernel SCSI driver is generally
more than verbose enough for most problems. Start up a
ramlog using the Magic7 debug console, and
then run scsi_diag, for starters.
glbtest
glbtest [< card_number> [< bank_number> [< size_in_kilolongs> ]]]
floodtest
floodtest [ -quals (real|zoom|mult|color) | -random ]
[ -flood < channel> [ < channel> ] ... ]
[ -errors < maximum_number_before_exiting> ]
[ -ok (0|1|2) ] # preferred ok channel
[ -addr ] # print address of error
[ -verbose ] # indicate successful transfers
[ -debug ] # turn on flood lib debugging
(All options names may be shortened to one letter.)
cshow
cshow [< filename> ]
[-p < pattern number> ] # generate pattern (see below)
[-b < nile_bank> ] # Nile bank of P2 to use
[-c < output_module> ] # output module to use
[-d < x_size> < y_size> ] # size of transfer
cspace
cspace [ -chan < channel> [ < channel> ] ] # 0, 1 or 2
[ -errors < maximum_number_before_exiting> ]
[ -passes < number_of_test_passes> ]
[ -oscope ] # loop infinitely, don't error check
[ -bypass ] # bypass the cspace conv.
[ -debug ] # turn on library debugging
tengtest
tengtest [ -quals < quals_name> ] # see below
[ -teng < unit_no> [ < unit_no> ]] # [0,2]
[ -src < source_bank_number> ] # [2,7]
[ -dst < destination_bank_number> ] # [2,7]
[ -verbose ] # indicate successful transfers
[ -passes < number_of_passes> ]
[ -errors < maximum_number_before_exiting> ]
[ -debug ] # print intimate details of transfer
[ -addr ] # print memory address of error
[ -ok (0|1|2) ] # preferred ok channel
dct
dct < dev_num>
remap
mojotest
mojotest < stream_proc_slot>
motest
motest [ -x < xdim> ]
[ -y < ydim> ]
[ -mx < xvec> ]
[ -my < yvec> ]
[ -mode ]
[ -V ]
filttest
filttest < stream_proc_slot>
[-data < data> ]
[-coeff < coeff> ]
[-loop ][ -v ]
floodinttest
dmatest
fdb
fdb [ -test (ones|zeroes|toggle|datapath|align|random|ok) ]
[ -ok < ok_channel> ]
[ -src < channel> ] ]
[ -dst < channel> [ < channel> ] ]
[ -src_offset < byte_offset> ]
[ -src_size < x_num_samples> < y_num_lines> ]
[ -src_stride < stride_in_samples> ]
[ -src_zoom < x_zoom> < y_zoom> ]
[ -dst_offset < byte_offset> ]
[ -dst_size < x_num_samples> < y_num_lines> ]
[ -dst_stride < stride_in_samples> ]
[ -dst_zoom < x_zoom> < y_zoom> ]
[ -repeat < repeat_times> ]
[ -debug < debug_level> ]
[ -errors < max_errors> ]
tdb
scope
busconfig
scsi
Return to Software Index
Return to Cheops Homepage
cheops-web@media.mit.edu
This is a "fix it yourself" page,
located at ${CHEOPS_BASE}/WWW/software/diag.html