📄 trouble.htm
字号:
<title>PMON - Troubleshooting</title> <h1 align=center>Troubleshooting</h1>This page contains some hints and tips about solving problems thatyou might encounter when using PMON. Note that many of thesesolutions apply as much to IMON as they do PMON.<p><!--INDEX "Interrupt problems" --></dl><h2>I can't get my Interrupts to work</h2><dl><dd>The first thing to check is whether your peripheral's interrupts arereaching the CPU. You can do this very simply from the PMON command line.<p>This example is for the 2681 DUART that LSI uses on most of its evalboards. The values shown here are for the BDMR4101 eval board.<p><pre>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.</pre><p><!--INDEX "Download problems" --></dl><h2>2-port Download Hangs</h2><dl><dd> 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 <a href="tools/rdfrec.htm">rdfrec -n</a> (or <a href="tools/rdsrec.htm">rdsrec -n</a>) to check the addresses that appear in the download record file.<p> If you are suspicious about your cables, try using PMON's <a href="c_tr.htm">tr</a> command to check out the connection. For example,<p><pre> 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</pre><p></dl><h2>Single-port Download Hangs</h2><dl><dd> This is usually caused by either,<p> <dl><dd> <ul> <li> A download record that contains a reference to an unimplemented address. <li> The host transmitting the data too fast for the target. <li> Because you are trying to download FastFormat records. <a href="frec.htm">FastFormat</a> records can only be downloaded in 2-port mode. </ul></dl><p></dl><h2>Errors Reported from Download</h2><dl><dd> This is usually caused by the host sending the characters too fast for the target system. <p> 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 <em>must</em> use a download protocol. See the User's Manual for a discussion of how to configure the download protocol.<p> 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.<p><!--INDEX "MAC address" "Ethernet address" "Ethernet download problems" --><!--INDEX etheraddr --></dl><h2>Errors Reported from Ethernet Download</h2><dl><dd> 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.<p> 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. <a href="dlether.htm">See also</a>.<p><!--INDEX "symbol space" --></dl><h2>I get the message "out of symbol space" during download</h2><dl><dd> 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 <a href="tools/pmcc.htm">pmcc's</a> <samp>-T</samp> option, and set the heaptop using PMON's <a href="c_set.htm">set</a> command.<p> For example, to increase your heapspace by 64K bytes, perform the following steps.<p> <pre> pmcc -T 80030000 -o test1 test1.c PMON> set heaptop 80030000 PMON> load</pre><p><!--INDEX "generating S-records" --></dl><h2>How do I generate S-records when using the GNU toolset?</h2><dl><dd> Normally the <a href="tools/pmcc.htm">pmcc</a> 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...<p> <pre>objcopy -O srec [infile] [outfile]</pre><!--INDEX "ATMizer-1 DMA problems" --></dl><h2>The ATMizer (64360) Doesn't DMA Correctly</h2><dl><dd> 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 <b>word</b> instructions. The only exceptions are PRU timers 0-7 which must be accessed using load and store half-word instructions.<p><!--INDEX "registers trashed" --></dl><h2>PMON Overwrites the Contents of Registers a0 and a1</h2><dl><dd> PMON always sets the value of a0 and a1 when you issue the <a href="c_g.htm">g</a> 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 <a href="c_c.htm">c</a> command must be used to continue execution after a breakpoint.<p></dl><h2>PMON Overwrites the Contents of Registers k0 and k1</h2><dl><dd> 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 <a href="pmonlim.htm">PMON Limitations</a> and <a href="icelim.htm">IMON Limitations</a>.<p><!--INDEX "environment space" --></dl><h2>Win95/NT complains about "out of environment space"</h2><dl><dd> 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:<p><pre> SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /p</pre> Where C:\DOS is the directory that contains COMMAND.COM and other Win95/NT utilities.<p><!--INDEX "too many parameters" --></dl><h2>Win95/NT complains about "too many parameters"</h2><dl><dd> 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,<p><pre> path "%path%";c:\lsipkg\tools</pre><!--INDEX "make dies" --></dl><h2>PMON Build on Win95/NT Dies</h2><dl><dd> <ul> <li>Make sure that you are typing <samp>nmake</samp>. You <em>must</em> use the Microsoft make utility.<p> <li>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 <samp>LIB</samp> and <samp>INCLUDE</samp> have been set). Check your installation by compiling a simple C program using the <samp>cl</samp> command. <p> </ul><!--INDEX Tasking "illegal operation" "PMON build fails" --></dl><h2>Can't open new Win95 apps after Tasking build</h2><dl><dd>There appears to be some conflict between Microsoft's nmake and Tasking'scompiler. As a result, a PMON build might either stop with some strangeerror at some arbitrary point, or if it completes, you might not be ableto open some Win95 applications afterwards (eg. MS-DOS Prompt window).<p>If it stops with a strange error, you can usually continue by simplyreissuing the nmake command again. Unfortunately the only way aroundthe 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-bitapps, rather than these 16-bit apps with DOS extenders.<p></dl><h2>Can I use PMON with the dbx Supplied by Sun?</h2><dl><dd> No. The dbx supplied by Sun understands the Sparc architecture. You must use a dbx that is targeted to the MIPS architecture.<p></dl><h2>I am Having Problems Downloading S-records to other Equipment</h2><dl><dd> By default, the <a href="tools/pmcc.htm">pmcc</a> command includes non-standard S4 records that contain global symbol information. Use the <samp>-syms</samp> option with the <samp>pmcc</samp> command to supress S4 records.<p></dl><h2>After I Type 'g' Cntrl-C Doesn't Return Control to the Prompt</h2><dl><dd> 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.<p><!--INDEX "second run different" --></dl><h2>Why does my program only work correctly the first time?</h2><dl><dd> 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!<p><!--INDEX "porting PMON" --></dl><h2>How do I port PMON to my own board?</h2><dl><dd> For more information on porting PMON to a new board, read the description in the <a href="portpmon.htm"> PMON User's Manual</a>.<p><!--INDEX "PMON interrupts" --></dl><h2>Does PMON run with interrupts disabled?</h2><dl><dd> 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).<p><!--INDEX ioctl GETINTR SETINTR --></dl><h2>What do the ioctl calls with GETINTR and SETINTR do?</h2><dl><dd> 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.<p><!--INDEX "client ram size" --></dl><h2>Why does Install ask for the client ram size?</h2><dl><dd> 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.<p><!--INDEX "target not responding" --></dl><h2>What to do if you get "Target not responding" messages</h2><dl><dd> 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'.<p></dl>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -