<!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> my u-boot-1.1.1 hangs while booting, as
follow is the message got from the
serial:<BR>-----------------------------------------------------------------------------------<BR>U-Boot
code: 33F80000 -> 33FA19F8 BSS: -> 33FA5B8C<BR>IRQ Stack:
33fc6b88<BR>FIQ Stack: 33fc7b88<BR>RAM Configuration:<BR>Bank #0: 30000000 64
MB<BR>Flash: 1 MB<BR>NAND:64 MB<BR>Video Format :
PAL<BR>In: serial<BR>Out:
serial<BR>Err:
serial<BR>------------------------------------------------</DIV>
<DIV>after some tests by tracing the sequences of the funtions, I
found that the u-boot hangs while comming to this funtion:</DIV>
<DIV>device_register (&dev),which is a subfuntion of drv_system_init
(); -------in u-boot-1.1.1/common/devices.c</DIV>
<DIV> </DIV>
<DIV>and I look into device_register(&dev):</DIV>
<DIV>int device_register (device_t * dev)<BR>{<BR> ListInsertItem (devlist,
dev, LIST_END);<BR> 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> return ListInsertItems (list, ptrToItem,
itemPosition, 1);<BR>}</DIV>
<DIV>int ListInsertItems (list_t list, void *ptrToItems, int
firstItemPosition,<BR> int
numItemsToInsert)<BR>{<BR> int numItems = (*list)->numItems;</DIV>
<DIV> </DIV>
<DIV> if (firstItemPosition == numItems +
1)<BR> firstItemPosition = LIST_END;<BR> else if
(firstItemPosition > numItems)<BR> return 0;</DIV>
<DIV> </DIV>
<DIV> if ((*list)->numItems >= (*list)->listSize)
{<BR> if (!ExpandListSpace (list,
-numItemsToInsert))<BR> return 0;<BR> }</DIV>
<DIV> </DIV>
<DIV> if (firstItemPosition == LIST_START) {<BR> if (numItems ==
0) {<BR> /* special case for empty list
*/<BR> firstItemPosition = LIST_END;<BR> } else
{<BR> firstItemPosition = 1;<BR> }<BR> }</DIV>
<DIV> </DIV>
<DIV> if (firstItemPosition == LIST_END) { /* add at the end of the
list */<BR> if (ptrToItems)<BR> memcpy (ITEMPTR
(list, numItems),
ptrToItems,<BR> (*list)->itemSize *
numItemsToInsert);<BR> else<BR> memset (ITEMPTR
(list, numItems), 0,<BR> (*list)->itemSize *
numItemsToInsert);</DIV>
<DIV> </DIV>
<DIV> (*list)->numItems += numItemsToInsert;<BR> } else
{ /* move part of list up to make room for new item
*/<BR> memmove (ITEMPTR (list, firstItemPosition - 1 +
numItemsToInsert),<BR> ITEMPTR (list, firstItemPosition -
1),<BR> (numItems + 1 - firstItemPosition) *
(*list)->itemSize);</DIV>
<DIV> </DIV>
<DIV> if (ptrToItems)<BR> memmove (ITEMPTR (list,
firstItemPosition - 1), ptrToItems,<BR>
(*list)->itemSize *
numItemsToInsert);<BR> else<BR> memset (ITEMPTR
(list, firstItemPosition - 1),
0,<BR> (*list)->itemSize *
numItemsToInsert);</DIV>
<DIV> </DIV>
<DIV> (*list)->numItems += numItemsToInsert;<BR> }</DIV>
<DIV> return 1;<BR>}</DIV>
<DIV> </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 u-boot hangs???</DIV>
<DIV> </DIV>
<DIV>any help is appreciated.thank you.</DIV>
<DIV> </DIV>
<DIV>tony. </DIV></BODY></HTML>