[U-Boot-Users] u-boot hangs on boot time

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

In message <44BDCFD8.02678D.25262> you wrote:
my u-boot-1.1.1 hangs while booting, as follow is the message got from the serial:
General rule: in case of problems try using current code. U-Boot 1.1.1 is obsolete.
Second: it would have been really nice if you had mentioned whioch board / processor this is.
after some tests by tracing the sequences of the funtions, I found that the u-boot hangs while comming to this funtion: device_register (&dev),which is a subfuntion of drv_system_init (); -------in u-boot-1.1.1/common/devices.c
THis code has been running fine for ages. My guess is memory problems on your hardware.
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???
Did you try it on another board?
--=====003_Dragon177227050737_===== Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: 7bit
STOP posting HTML here!!!
Best regards,
Wolfgang Denk
participants (2)
-
tony
-
Wolfgang Denk