реклама на сайте
подробности

 
 
> Ethernet + LPC1758, Последовательность инициализации PHY
gladov
сообщение May 20 2011, 08:02
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



На просторах сети нарыл пример исходников LPC17xx + KSZхххх + uIP. Там такая последовательность инициализации PHY в случае Auto-negotiation:

1) Поиск устройства PHY перебором адресов
2) Reset
3) Auto-negotiation setup
4) Запуск Auto-neg и ожидание линка. Если линка нет, выход с ошибкой.
5) Вычитываем из PHY параметры связи (speed, duplex), прописываем их в MAC
6) Прописываем подобранные параметры обратно в PHY жестко, отключив auto-neg.

Во-первых меня сильно смущает последний шаг: для чего нужно отключать AN? Ведь тогда без перезагрузки уже не получится, например, переключить устройство в другой порт Ethernet. Так как я раньше с Ethernet не работал, возникает вопрос: есть ли в данном действии скрытый смысл? Может быть действительно для стабильной работы нельзя держать autoneg постоянно включенным?

Во-вторых, по-моему неправильно в инициализации ожидать линка. Имхо надо либо настроить прерывание LinkUP от PHY, либо оставить все как есть и из-вне поллингом проверять состояние линка, правильно?

Вообще, подскажите, кто как организовывает взаимодействие EMAC <-> PHY, какие есть подводные камни с инициализацией, что еще полезно обрабатывать из типовых PHY-прерываний кроме Link up/down?
В приложении вышеупомянутый пример работы с PHY, однако я понимаю, что пример никогда нельзя рассматривать как готовое решение - на него можно лишь опираться иногда, поэтому просьба одна: рассказать как нужно делать, а не просто покритиковать пример sm.gif
Прикрепленные файлы
Прикрепленный файл  lpc_eth.zip ( 5.21 килобайт ) Кол-во скачиваний: 40
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение May 20 2011, 08:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(gladov @ May 20 2011, 12:02) *
1) Поиск устройства PHY перебором адресов
2) Reset
3) Auto-negotiation setup
4) Запуск Auto-neg и ожидание линка. Если линка нет, выход с ошибкой.
5) Вычитываем из PHY параметры связи (speed, duplex), прописываем их в MAC
6) Прописываем подобранные параметры обратно в PHY жестко, отключив auto-neg.

Ужас какой.
У меня система MCF52258+KSZ8041. Я думаю, МК по большому счёту может быть любой, в этом Fast Ethernet Controller связывается с PHY через MII.
Для инициализации PHY в программе не делаю ничего (то есть вообще ничего). Работает сам. Кое-какие резисторы-подтяжки для конфигурации PHY на плате есть. Так что вычёркивайте ваши пункты 1-6.
Если бы не нужно было детектировать состояние линка, то опрос регистров PHY вообще не делал бы. А так периодически читаю один регистр.
Go to the top of the page
 
+Quote Post
gladov
сообщение May 20 2011, 09:52
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Цитата(scifi @ May 20 2011, 12:40) *
Ужас какой.
У меня система MCF52258+KSZ8041. Я думаю, МК по большому счёту может быть любой, в этом Fast Ethernet Controller связывается с PHY через MII.
Для инициализации PHY в программе не делаю ничего (то есть вообще ничего). Работает сам. Кое-какие резисторы-подтяжки для конфигурации PHY на плате есть. Так что вычёркивайте ваши пункты 1-6.
Если бы не нужно было детектировать состояние линка, то опрос регистров PHY вообще не делал бы. А так периодически читаю один регистр.


Ясно, что ужас. Пример кривой. А минимальную настройку я бы все таки сделал, хотя бы чтобы была возможность переопределить значения по-умолчанию. Я правильно понимаю, что у вас из PHY ничего кроме состояния линка не вычитывается? А когда линк поднялся надо перенастраивать EMAC в LPC на возможно новые параметры связи (скорость, дуплекс)? Или EMAC сам умеет по RMII договариваться с PHY? Или ему (EMACу) вообще пофиг какой линк воткнут в PHY?

Цитата(iosifk @ May 20 2011, 13:44) *
Запрещать автонегоциацию имеет смысл только при работе на оптику. При работе на медь лучше ее оставить. Если Ваше устройство свои данные передает в сеть, то ждать или не ждать линк - это все равно. Без линка ничего и никуда передать не получится...


В примере после поднятия линка перенастраивается EMAC в LPC на оперделенную во время auteneg конфигурацию. Это необходимо или это кривость примера?
Go to the top of the page
 
+Quote Post
scifi
сообщение May 20 2011, 10:00
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(gladov @ May 20 2011, 13:45) *
А минимальную настройку я бы все таки сделал, хотя бы чтобы была возможность переопределить значения по-умолчанию.

Если значения по умолчанию не устраивают - то конечно. Просто у меня значения по умолчанию заданы резисторами-подтяжками, и менять их нет смысла.

Цитата(gladov @ May 20 2011, 13:45) *
Я правильно понимаю, что у вас из PHY ничего кроме состояния линка не вычитывается?

Да. Кроме того, легко могу представить себе применение, в котором и это не нужно будет.

Цитата(gladov @ May 20 2011, 13:45) *
А когда линк поднялся надо перенастраивать EMAC в LPC на возможно новые параметры связи (скорость, дуплекс)?

Я ничего не настраивал. Всё работало. Скорость в режиме MII задаётся микросхемой PHY (собственно, она выдаёт TXCLK и RXCLK 2.5 MHz или 25 MHz), так что это не нужно настраивать в EMAC. Посмотрел про дуплекс: да, он в МК настраивается, как оказалось. Возможно, нужно, чтобы режим дуплекса у PHY и EMAC совпадал. А возможно, что это не так уж и важно - не знаю.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016