⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trouble.htm

📁 mips架构的bootloader,99左右的版本 但源代码现在没人更新了
💻 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 &lt 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 + -