jcxz 183 13 ноября, 2021 Опубликовано 13 ноября, 2021 · Жалоба В устройстве используется 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 изменять нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 183 16 ноября, 2021 Опубликовано 16 ноября, 2021 · Жалоба Неужто никому не интересна эта тема? Или никто не сталкивался? Вобщем по вопросу - пока отбой, дело было не в бобине похоже в роутере (Mikrotik). Это он в течение ~6 секунд после завершения auto-negotiation почему-то прибивает пакеты от новоподключенного девайса. Если смотреть статистику Mikrotik-а, то по ней видно, что он начинает принимать пакеты с интерфейса сразу же после auto-negotiation. Но почему-то не транслирует их на другие порты bridge. И только через 6 секунд начинает транслировать. Как будто в течение этого времени изучает траффик от нового девайса и решает "стоит ли ему доверять или прибить нафиг"? Если воткнуть девайс напрямую в комп - пакеты начинают приходить сразу же после auto-negotiation. Без задержек. Буду ковырять Mikrotik, может удастся его вразумить.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 16 ноября, 2021 Опубликовано 16 ноября, 2021 · Жалоба У меня обычно (среди такого рода проблем) бывает лишь так, что сам auto-negotiation выполняется долго: до 30-40 секунд. Т.е. втыкаешь первый раз - ну пару секунд и поехали, втыкаешь другой, третий - быстро "подхватывает". А раз на 5-10 затык на какое-то время, PHY тупит-тупит, да и, в конце концов, согласуется. Не знаю, почему так - кабели вроде нормальные. Замечал и на своих девайсах, и на чужих. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 183 16 ноября, 2021 Опубликовано 16 ноября, 2021 · Жалоба 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 сек). А таких долгих времён не наблюдал вроде никогда. Хотя за день, при отладке, несколько десятков раз перезапускать приходится. И сразу после запуска нужно коннектиться к плате приложением (отсюда и возник изначальный вопрос). Может у Вас тоже роутер чудит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 16 ноября, 2021 Опубликовано 16 ноября, 2021 · Жалоба 35 минут назад, jcxz сказал: Может у Вас тоже роутер чудит? Разве что, коммутатор стоит между компом и железкой. Тогда разбираться не стал, а сейчас надобности особо нет. Просто вспомнилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться