Цитата(Ivan_Kov @ Dec 23 2008, 00:06)

Может быть посмотрите, как ведет себя драйвер Ethernet?
Запросто, вот:
Окружение: плата - LPC2478-OEM board from EmbeddedArtists с uClinux 2.6.21 и u-boot 1.1.6, комп - Windows XP со встроенной сетевой платой 100BaseTX
Проверка №1: ethernet провод подключен к плате, uClinux загружается успешно, отключаю ethernet провод от платы и с компьютера посылаю пинги, через 5 секунд вставляю ethernet провод в плату:
Код
C:\Documents and Settings\Администратор>ping 192.168.1.102 -t
Обмен пакетами с 192.168.1.102 по 32 байт:
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Заданный узел недоступен.
Ответ от 192.168.1.102: число байт=32 время=2мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Статистика Ping для 192.168.1.102:
Пакетов: отправлено = 14, получено = 6, потеряно = 8 (57% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 1мсек, Максимальное = 2 мсек, Среднее = 1 мсек
Control-C
Как хорошо видно, загруженная система на плате нормально обрабатывает обрыв/восстановление сетевого соединения.
Проверка №2: uClinux загружается без ethernet провода, затем после загрузки он подключается вручную и после этого посылаются пинги с компа.
Код
C:\Documents and Settings\Администратор>ping 192.168.1.102 -t
Обмен пакетами с 192.168.1.102 по 32 байт:
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Ответ от 192.168.1.102: число байт=32 время=1мс TTL=64
Статистика Ping для 192.168.1.102:
Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 1мсек, Максимальное = 1 мсек, Среднее = 1 мсек
Control-C
Сразу после загрузки uClinux выдает в консоль "eth0: Link down", но после подключения к плате кабеля пинги с компа проходят сразу, т.е. интерфейс быстро "просыпается".
Если нитересны какие-то другие проверки ethernet, напишите, попробую по возможности.
Цитата(Ivan_Kov @ Dec 23 2008, 00:06)

Решается очень просто: перед загрузкой ОС конфигурите пины RX,TX (можно только RX) как порты ввода-вывода. А перед открытием устройства - снова делаете их RX и TX
Вот тут попрошу по-подробнее. Уже то, что кто-то нашел решение не может не радовать, а то на всех форумах что я "перерыл" только упоминание об этом давнем глюке и ни одного патча. (Может ошибаюсь?) Вы пишите, что нужно сконфигурировать пины ПЕРЕД загрузкой ОС, но где это делать? Я так подозреваю, что в u-boot. Больше ведь негде, никакой другой код кроме u-boot на плате не исполняется (кроме внутреннего flash загрузчика, конечно, но он не в счет).
Я понял так: в u-boot нужно пропатчить так, чтобы во время его инициализации пины RX/TX были настроены как I/O, затем в uClinux (в драйвере UART или в пользовательской программе?) нужно перед открытием UART1 снова "привязать" RX/TX к UART'y. Это правильно?
Интересно чем вызван такой баг? Он присутствует только в связке u-boot + uClinux или существует объективно и независимо от исполняемого кода? Если только в uClinux, то странно, что трудно найти патч. Многие же сталкиваются.
Спасибо за помощь!
---
dmitry