<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2>Hi,</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>I'm&nbsp;having 
trouble with an unusual problem.&nbsp; I'm working on relatively new hardware, 
so&nbsp;it's possible that there could be a hardware issue 
involved.&nbsp;</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>I have an FPGA on my 
PPC440GX board that gets loaded via JTAG during the kernel boot process (Linux 
2.6.10).&nbsp; It uses the 440GX GPIO lines to send the necessary JTAG commands 
to the FPGA to perform the initial load.&nbsp; This process is USUALLY 
functional, but on some of the boards (which we produce), the GPIO write fails 
with a bus error.&nbsp; On the boards that fail, it only occurs after a cold 
boot, and only if the board has been powered off&nbsp;for a few minutes.&nbsp; A 
quick hard reboot will not generate the problem.&nbsp; When I issue the 
failing&nbsp;write to the GPIO lines, some of the SDRAM gets corrupted.&nbsp; I 
don't appear to be taking any interrupts&nbsp;that might have corrupted the 
RAM.</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>I've checked the TLB 
entries, and it maps correctly to the PPC register area.&nbsp; Additionally, I 
can read and write to other registers using the same TLB mapping WITHOUT any 
error.&nbsp; I can also READ the GPIO lines without an error - the error is only 
on the write.&nbsp;&nbsp; I've checked the SDR0_PFC0 bits to make sure 
everything is set properly (it is).&nbsp; The bus error indicates "PLB Timeout 
Error Status Master 2, Master 2 slave error occurred" (Master 2 is the 
write-only data cache unit (DCU)) and "Write Error Interrupt Master 2, Write 
error detected - master 2 interrupt request is active".&nbsp; I'm not sure why 
there would be any error in the DCU, since the region I'm writing to is cache 
inhibited and guarded.</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>If I issue a soft 
reset of the GPIO subsystem, I can read and write to the GPIO lines 
again.</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>The error does not 
occur on the first write to the GPIO.&nbsp; I go through the failing routine 
several times before it fails.&nbsp; However, when it fails, it consistently 
fails at the same spot, after the same number of passes through the 
code.</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>I'm using RGMII 
ethernet on EMAC2 (Group 4), but the GPIO lines that I'm using are not the 
Trace/GPIO lines (26-31) so I believe that they should work fine (and they 
usually do).&nbsp; Also, the errata mentions that SDR0_PFC0[G11E] has no effect 
- but I'm not using GPIO 11 anyway.</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>Here are some 
relevant register values after the error:</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" size=2>SDR0_PFC0 
:&nbsp;&nbsp;&nbsp;&nbsp; 0x083FFE00</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" 
size=2>POB0_BESR0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00008400</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" 
size=2>POB0_BEARH:&nbsp;&nbsp;&nbsp;&nbsp; 0x00000001</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" 
size=2>POB0_BEARL:&nbsp;&nbsp;&nbsp;&nbsp; 0x40000701</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" 
size=2>GPIO0_OR&nbsp; 
:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x000400C0</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" size=2>GPIO0_TCR 
:&nbsp;&nbsp;&nbsp;&nbsp; 0x00278AE0</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" size=2>GPIO0_ODR 
:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000000</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face="Courier New" 
size=2>GPIO0_IR&nbsp; :&nbsp;&nbsp;&nbsp;&nbsp; 0x00000000</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>I've attached two 
log files, that contain most of the 440 registers, one for before the error and 
one after.&nbsp; In the log files, the bus error has been cleared, so use the 
values shown above.</FONT></SPAN></DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=201052213-21122007><FONT face=Arial size=2>I'm looking for some 
suggestions on what to try to debug/resolve this issue.&nbsp; I'm open to both 
hardware and software based suggestions.&nbsp; Any help would be greatly 
appreciated.</FONT></SPAN></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV align=left><FONT size=2>Chris Wyse</FONT></DIV>
<DIV align=left><FONT size=2>Senior Member of Technical Staff</FONT></DIV>
<DIV align=left><FONT size=2>Embedded Technologies</FONT></DIV>
<DIV align=left><FONT size=2>860-978-0849 cell/office</FONT></DIV>
<DIV align=left><FONT size=2>413-778-9101 fax</FONT></DIV>
<DIV align=left><FONT size=2><A 
href="http://www.windriver.com/">http://www.windriver.com</A></FONT></DIV>
<DIV align=left><FONT size=2></FONT>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>