<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2873" name=GENERATOR></HEAD>
<BODY>
<DIV>Hi all,<BR>&nbsp;&nbsp;&nbsp; my u-boot-1.1.1 hangs while booting, as 
follow is the message got from the 
serial:<BR>-----------------------------------------------------------------------------------<BR>U-Boot 
code: 33F80000 -&gt; 33FA19F8&nbsp; BSS: -&gt; 33FA5B8C<BR>IRQ Stack: 
33fc6b88<BR>FIQ Stack: 33fc7b88<BR>RAM Configuration:<BR>Bank #0: 30000000 64 
MB<BR>Flash:&nbsp; 1 MB<BR>NAND:64 MB<BR>Video Format : 
PAL<BR>In:&nbsp;&nbsp;&nbsp; serial<BR>Out:&nbsp;&nbsp; 
serial<BR>Err:&nbsp;&nbsp; 
serial<BR>------------------------------------------------</DIV>
<DIV>after some&nbsp;tests by&nbsp;tracing the sequences of the funtions, I 
found that the u-boot hangs while&nbsp;comming&nbsp; to this&nbsp;funtion:</DIV>
<DIV>device_register (&amp;dev),which is a subfuntion&nbsp; of drv_system_init 
(); -------in u-boot-1.1.1/common/devices.c</DIV>
<DIV>&nbsp;</DIV>
<DIV>and I look into device_register(&amp;dev):</DIV>
<DIV>int device_register (device_t * dev)<BR>{<BR>&nbsp;ListInsertItem (devlist, 
dev, LIST_END);<BR>&nbsp;return 0;<BR>}</DIV>
<DIV>as follow are two invoid funtions copy from the devices.c.</DIV>
<DIV>int ListInsertItem (list_t list, void *ptrToItem, int 
itemPosition)<BR>{<BR>&nbsp;return ListInsertItems (list, ptrToItem, 
itemPosition, 1);<BR>}</DIV>
<DIV>int ListInsertItems (list_t list, void *ptrToItems, int 
firstItemPosition,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int 
numItemsToInsert)<BR>{<BR>&nbsp;int numItems = (*list)-&gt;numItems;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if (firstItemPosition == numItems + 
1)<BR>&nbsp;&nbsp;firstItemPosition = LIST_END;<BR>&nbsp;else if 
(firstItemPosition &gt; numItems)<BR>&nbsp;&nbsp;return 0;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if ((*list)-&gt;numItems &gt;= (*list)-&gt;listSize) 
{<BR>&nbsp;&nbsp;if (!ExpandListSpace (list, 
-numItemsToInsert))<BR>&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if (firstItemPosition == LIST_START) {<BR>&nbsp;&nbsp;if (numItems == 
0) {<BR>&nbsp;&nbsp;&nbsp;/* special case for empty list 
*/<BR>&nbsp;&nbsp;&nbsp;firstItemPosition = LIST_END;<BR>&nbsp;&nbsp;} else 
{<BR>&nbsp;&nbsp;&nbsp;firstItemPosition = 1;<BR>&nbsp;&nbsp;}<BR>&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if (firstItemPosition == LIST_END) {&nbsp;/* add at the end of the 
list */<BR>&nbsp;&nbsp;if (ptrToItems)<BR>&nbsp;&nbsp;&nbsp;memcpy (ITEMPTR 
(list, numItems), 
ptrToItems,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*list)-&gt;itemSize * 
numItemsToInsert);<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;memset (ITEMPTR 
(list, numItems), 0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*list)-&gt;itemSize * 
numItemsToInsert);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;(*list)-&gt;numItems += numItemsToInsert;<BR>&nbsp;} else 
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* move part of list up to make room for new item 
*/<BR>&nbsp;&nbsp;memmove (ITEMPTR (list, firstItemPosition - 1 + 
numItemsToInsert),<BR>&nbsp;&nbsp;&nbsp; ITEMPTR (list, firstItemPosition - 
1),<BR>&nbsp;&nbsp;&nbsp; (numItems + 1 - firstItemPosition) * 
(*list)-&gt;itemSize);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;if (ptrToItems)<BR>&nbsp;&nbsp;&nbsp;memmove (ITEMPTR (list, 
firstItemPosition - 1), ptrToItems,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(*list)-&gt;itemSize * 
numItemsToInsert);<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;memset (ITEMPTR 
(list, firstItemPosition - 1), 
0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*list)-&gt;itemSize * 
numItemsToInsert);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;(*list)-&gt;numItems += numItemsToInsert;<BR>&nbsp;}</DIV>
<DIV>&nbsp;return 1;<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>I am so dizzy about what's going on there. the u-boot has been using for 
months....so I don't think it's the problem of the u-boot.maybe it's about the 
problem of the hardware, to cause the&nbsp;u-boot hangs???</DIV>
<DIV>&nbsp;</DIV>
<DIV>any help is appreciated.thank you.</DIV>
<DIV>&nbsp;</DIV>
<DIV>tony.&nbsp;</DIV></BODY></HTML>