Перейти к содержанию
    

Долгий старт phy DP83848H. Как ускорить?

В устройстве используется DP83848H. Сигнал RESET (общий для всего устройства) заведён на вход RESET DP83848H. Общий RESET формируется как при включении питания так и при подключении отладчика (линия RESET SWD). Таким образом: при каждом старте отладочной сессии, происходит сброс DP83848H и перезапуск Auto-Negotiation. После этого, в течение примерно ~6сек, не работает отправка ETHERNET-пакетов наружу. Т.е. - приём пакетов начинает работать практически сразу же, как только закончится инициализация DP83848H (момент завершения Auto-Negotiation считаем завершением инициализации), а вот пакеты отправляемые MAC-ом МК наружу начинают реально поступать внешним устройствам только через 6 секунд после завершения инициализации.

Почему такая большая задержка и чем она вызвана? Ведь входящие пакеты MAC начинает принимать практически сразу же после завершения Auto-Negotiation. Но что не так с передаваемыми пакетами?

Дело именно в чипе физики: Если сделать программный рестарт (реинит MAC + реинит DP83848H (со сбросом через BMCR.15)), то картина такая же как при старте после аппаратного RESET. Но если же в этом программном рестарте убрать сброс DP83848H, то всё (приём+передача) начинает работать сразу же.

 

Если это нельзя никак ускорить, то хотя-бы: Как узнать, что передаваемые пакеты начали вылезать наружу? В устройстве работает процесс детекта дублирования IP-адреса (при помощи ARP-запросов). Для его нормальной работы нужна гарантия, что отправляемые им пакеты реально появляются на линии, а не умирают в чипе физики.

Пробовал сканировать все регистры чипа физики: ожидал обнаружить какие-то биты, изменяющиеся через ~6сек после завершения Auto-Negotiation. Но никакие регистры не меняются - похоже по ним невозможно обнаружить момент начала работы передачи.

Может есть другие способы? Конфигурация внешней сети в общем случае - неизвестна, поэтому отправлять пакеты какому-то определённому адресату наружу с ожиданием гарантированного ответа от него - не получится.

Прошерстил весь мануал DP83848H - не нашёл ничего, от чего может происходить такая задержка. Соответственно и по мануалу похоже нельзя определить максимальное время задержки.

 

Есть идеи?

Схему подключения DP83848H изменять нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужто никому не интересна эта тема? Или никто не сталкивался?

 

Вобщем по вопросу - пока отбой, дело было не в бобине похоже в роутере (Mikrotik). Это он в течение ~6 секунд после завершения auto-negotiation почему-то прибивает пакеты от новоподключенного девайса. Если смотреть статистику Mikrotik-а, то по ней видно, что он начинает принимать пакеты с интерфейса сразу же после auto-negotiation. Но почему-то не транслирует их на другие порты bridge. И только через 6 секунд начинает транслировать. Как будто в течение этого времени изучает траффик от нового девайса и решает "стоит ли ему доверять или прибить нафиг"? :wink:

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

Буду ковырять Mikrotik, может удастся его вразумить.... :punish:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня обычно (среди такого рода проблем) бывает лишь так, что сам auto-negotiation выполняется долго: до 30-40 секунд. Т.е. втыкаешь первый раз - ну пару секунд и поехали, втыкаешь другой, третий - быстро "подхватывает". А раз на 5-10 затык на какое-то время, PHY тупит-тупит, да и, в конце концов, согласуется. Не знаю, почему так - кабели вроде нормальные. Замечал и на своих девайсах, и на чужих.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, Arlleex сказал:

У меня обычно (среди такого рода проблем) бывает лишь так, что сам auto-negotiation выполняется долго: до 30-40 секунд. Т.е. втыкаешь первый раз - ну пару секунд и поехали, втыкаешь другой, третий - быстро "подхватывает". А раз на 5-10 затык на какое-то время, PHY тупит-тупит, да и, в конце концов, согласуется. Не знаю, почему так - кабели вроде нормальные. Замечал и на своих девайсах, и на чужих.

Это какой-то непорядок. Имхо. В доке на DP83848 сказано:

Parallel detection and Auto-Negotiation take approximately 2-3 seconds to complete. In addition, Auto-Negotiation with next page should take approximately 2-3 seconds to complete, depending on the number of next pages sent.

"Next page" я не использую. И у меня сама Auto-Negotiation занимает всегда ~2сек (часто даже чуть меньше 2 сек). А таких долгих времён не наблюдал вроде никогда. Хотя за день, при отладке, несколько десятков раз перезапускать приходится. И сразу после запуска нужно коннектиться к плате приложением (отсюда и возник изначальный вопрос).

Может у Вас тоже роутер чудит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 минут назад, jcxz сказал:

Может у Вас тоже роутер чудит?

Разве что, коммутатор стоит между компом и железкой. Тогда разбираться не стал, а сейчас надобности особо нет. Просто вспомнилось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...