You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

232 lines
9.1 KiB

PMON - Troubleshooting
Troubleshooting
This page contains some hints and tips about solving problems that
you might encounter when using PMON. Note that many of these
solutions apply as much to IMON as they do PMON.
I can't get my Interrupts to work
The first thing to check is whether your peripheral's interrupts are
reaching the CPU. You can do this very simply from the PMON command line.
This example is for the 2681 DUART that LSI uses on most of its eval
boards. The values shown here are for the BDMR4101 eval board.
PMON fill . .+100 0 -- fill memory with nops.
PMON m be000017 ff -- enable the 2681's interrupt mask.
PMON m be000017 -- check the 2681's Interrupt status register.
be000017 09 . -- looks good. TXA, TXB, and Timer ints are asserted.
PMON t -- single step. This causes PMON to reread
-- the CAUSE register.
PMON r cause -- read the CAUSE value.
C0_CAUSE: BD CE IP SW EXCODE
0 0 000001 00 Bp -- Good. Int0 is asserted.
2-port Download Hangs
This is usually caused by a download record that contains a
reference to an unimplemented address. Check the .map file for
strange addresses. You can also use rdfrec -n (or rdsrec -n) to check the addresses
that appear in the download record file.
If you are suspicious about your cables, try using PMON's
tr command to check out the connection. For
example,
PMON tr
% edown < file.rec
-- one line of data should appear in the PMON console window
press cntrl-F in the console window
-- another line of data should appear in the PMON console window
press cntrl-K in the console window to return to the PMON prompt
Single-port Download Hangs
This is usually caused by either,
� A download record that contains a reference to an
unimplemented address.
� The host transmitting the data too fast for the target.
� Because you are trying to download FastFormat records.
FastFormat records can only be
downloaded in 2-port mode.
Errors Reported from Download
This is usually caused by the host sending the characters
too fast for the target system.
If this is an ATMizer system. The problem is most likely caused
by a lack of download protocol. When downloading to an
ATMizerR/T platform, you must use a download
protocol. See the User's Manual for a discussion of
how to configure the download protocol.
If you experience this problem when using other processors
in LSI's MIPS family, the problem is most likely caused
by the caches not being enabled.
Errors Reported from Ethernet Download
If you see 'protocol not supported' messages, it is
likely that you have a duplicate IP or hardware address on
your network. Each piece of equipment that is connected to
your network must have a unique Ethernet hardware (MAC) address.
PMON always uses the same value (currently aa:bb:cc:0:0:0),
however if you have more than one PMON-based board on your
network, you will need to choose different values for each
board.
You can either change the value at the PMON prompt using the
'set etheraddr' command, or you can edit the file
include/defines.h and build a new PROM. See also.
I get the message "out of symbol space" during download
PMON uses the heap to store the downloaded symbols. If you
have a large number of symbols (or the symbols are very long),
you will run out of heapspace. To correct this, compile your
progrom with pmcc's
-T option, and set the heaptop using PMON's set command.
For example, to increase your heapspace by 64K bytes,
perform the following steps.
pmcc -T 80030000 -o test1 test1.c
PMON set heaptop 80030000
PMON load
How do I generate S-records when using the GNU toolset?
Normally the pmcc command will
take care of generating those for you. However, if you are
calling the GNU tools directly, you will need to use the
utility objcopy. Try...
objcopy -O srec [infile] [outfile]
The ATMizer (64360) Doesn't DMA Correctly
This is usually caused by incorrectly using load or
store half-word instructions to access the ATMizer's
special registers (CREDIT etc). All these registers
must be accessed using load and store word instructions.
The only exceptions are PRU timers 0-7 which must be
accessed using load and store half-word instructions.
PMON Overwrites the Contents of Registers a0 and a1
PMON always sets the value of a0 and a1 when you
issue the g command. This is to permit command
line arguments to be passed to the downloaded
program. This is why the 'g' command must be
be used once only after a program has been downloaded.
The c command must be used to continue
execution after a breakpoint.
PMON Overwrites the Contents of Registers k0 and k1
When single stepping, PMON requires the use
of the k0 register (and k1 on some processors). This
is unavoidable. But it does mean that you cannot
single-step through a piece of code that uses
these registers. See also PMON Limitations
and IMON Limitations.
Win95/NT complains about "out of environment space"
If Win95/NT complains about "out of
environment space" when typing the SETENV command, you probably
need to add the following line to your CONFIG.SYS file:
SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /p
Where C:\DOS is the directory that contains COMMAND.COM and
other Win95/NT utilities.
Win95/NT complains about "too many parameters"
If Win95/NT complains about "too many args"
when typing the SETENV command, you probably
need to add double quotes around the %path% variable. For example,
path "%path%";c:\lsipkg\tools
PMON Build on Win95/NT Dies
� Make sure that you are typing nmake. You
must use the Microsoft make utility.
� If the build dies while attempting to compile the first
program in the tools directory. The problem is most likely to
be that the Microsoft Visual C++ package has been incorrectly
(or incompletely) installed (make sure that the environment
variables LIB and INCLUDE have been
set). Check your installation by compiling a simple C program
using the cl command.
Can't open new Win95 apps after Tasking build
There appears to be some conflict between Microsoft's nmake and Tasking's
compiler. As a result, a PMON build might either stop with some strange
error at some arbitrary point, or if it completes, you might not be able
to open some Win95 applications afterwards (eg. MS-DOS Prompt window).
If it stops with a strange error, you can usually continue by simply
reissuing the nmake command again. Unfortunately the only way around
the problem of not being able to open new apps, is to reboot your system.
These problems should go away when Tasking starts shipping real 32-bit
apps, rather than these 16-bit apps with DOS extenders.
Can I use PMON with the dbx Supplied by Sun?
No. The dbx supplied by Sun understands the Sparc architecture.
You must use a dbx that is targeted to the MIPS architecture.
I am Having Problems Downloading S-records to other Equipment
By default, the pmcc command
includes non-standard S4 records that contain global symbol
information. Use the -syms option with the
pmcc command to supress S4 records.
After I Type 'g' Cntrl-C Doesn't Return Control to the Prompt
Because PMON's I/O is not interrupt driven, it is unable
to 'see' the cntrl-C unless your program is performing I/O
via PMON. This limitation should not occur if you are using
SerialICE.
Why does my program only work correctly the first time?
When you download a program, the .data section (initialized
global data) gets initialized from the file on your host. Thus,
the first time you run it, it gets these correctly initialized
values. However, if you re-execute the program without
re-downloading it, the .data section does not get
reinitialized. Thus, the second time you run your program, it
gets the data values left behind after the first time that it
was executed. Depending on how you have written your program,
that my cause your program to behave incorrectly, or even crash!
How do I port PMON to my own board?
For more information on porting PMON to a new board,
read the description in the
PMON User's Manual.
Does PMON run with interrupts disabled?
Normally PMON runs with interrupts disabled. But some
processors have stuff like bus-error detection that needs
interrupts enabled. On those processors interrupts will be
enabled. However, if a downloaded client program enables
interrupts, PMON will disable interrupts when a breakpoint is
hit, but restore them when you continue (or single-step).
What do the ioctl calls with GETINTR and SETINTR do?
The SETINTR ioctl call is used to install the address of
the code that handles the ^C event. The address passed must
be the address of a jmp_buf that was previously set by
setjmp(). GETINTR returns the current value.
Why does Install ask for the client ram size?
PMON needs to know how much RAM you have in order to be able
to set the stack pointer to the top of memory. It sets the
client sp to Client_PC+client_memory_size-24.
What to do if you get "Target not responding" messages
When using SerialICE, it is possible for the SerialICE Controller and the
SerialICE Kernel to get out-of-step. To correct this situation press
RESET on the target and then type 'sync'.