svedach 0 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба Добрый день. Столкнулся с проблемой: 88E1512 на 100МБит стартует всегда в half-duplex, при этом регистр №4 (Copper Auto-Negotiation Advertisement Register) выставлен в 0x141, т.е. микруха не должна поддерживать 100МБит half-duplex. При этом свич, в который воткнута сеть показывает half-duplex (ожидаемо), и позволяет переключить сеть в full-duplex и 88E1512 соединяется и функционирует нормально (что не ожидаемо)... Периодически проверял регистр "Copper Auto-Negotiation Advertisement Register", записанное значение сохраняется, т.е. 0x141. По ощущениям скорости передачи данных half-duplex реально есть, при переключении свича в full-duplex скорость обмена ощутимо возрастает. Может кто сталкивался? Может еще какие регистры надо записать или еще что сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
10ff 0 8 августа, 2019 Опубликовано 8 августа, 2019 · Жалоба 19 hours ago, svedach said: Добрый день. Столкнулся с проблемой: 88E1512 на 100МБит стартует всегда в half-duplex, при этом регистр №4 (Copper Auto-Negotiation Advertisement Register) выставлен в 0x141, т.е. микруха не должна поддерживать 100МБит half-duplex. При этом свич, в который воткнута сеть показывает half-duplex (ожидаемо), и позволяет переключить сеть в full-duplex и 88E1512 соединяется и функционирует нормально (что не ожидаемо)... Периодически проверял регистр "Copper Auto-Negotiation Advertisement Register", записанное значение сохраняется, т.е. 0x141. По ощущениям скорости передачи данных half-duplex реально есть, при переключении свича в full-duplex скорость обмена ощутимо возрастает. Может кто сталкивался? Может еще какие регистры надо записать или еще что сделать? 1. Как вы инициализируете Марвелл? Интересует порядок инициализации регистров. Завершать обычно всегда нужно 0-ым регистром, переводя в "Software Reset". 2. Может свич слишком "китайский" и стоит попробовать другой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 8 августа, 2019 Опубликовано 8 августа, 2019 · Жалоба 24 minutes ago, 10ff said: 1. Как вы инициализируете Марвелл? Интересует порядок инициализации регистров. Завершать обычно всегда нужно 0-ым регистром, переводя в "Software Reset". 2. Может свич слишком "китайский" и стоит попробовать другой? 1. Инициализирую так: записываю в IEEE_AUTONEGO_ADVERTISE_REG (регистр №4) значение 0x141 (описано в предыдущем посте), записываю в IEEE_1000_ADVERTISE_REG_OFFSET (№9) значение 0x300 (поддерживаю half и full duplex на 1000), записываю в IEEE_CONTROL_REG_OFFSET (№0) значение 0x2100 - режим дуплекс и 100 МБит. Потом делаю программный сброс (бит 15 регистра IEEE_CONTROL_REG_OFFSET), жду окончания сброса. Вроде все. 2. Свич хороший: HP-1820-8G. Кабель менять пробовал. Интересно, что несмотря на фактический полудуплекс, 88E1512 при чтении регистра IEEE_SPECIFIC_STATUS_REG (№17) там установлен бит full-duplex... Смущает так же то, что если перевести порт свича в полный дуплекс, то соединение получается на реальном полном дуплексе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
10ff 0 9 августа, 2019 Опубликовано 9 августа, 2019 · Жалоба 17 hours ago, svedach said: ... записываю в IEEE_CONTROL_REG_OFFSET (№0) значение 0x2100 - режим дуплекс и 100 МБит. Потом делаю программный сброс (бит 15 регистра IEEE_CONTROL_REG_OFFSET), жду окончания сброса. Вроде все. 0x2100? Странно... Попробуйте в 0-й регистр записать 0xB100 (15-бит сразу в 1). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 9 августа, 2019 Опубликовано 9 августа, 2019 · Жалоба 32 minutes ago, 10ff said: 0x2100? Странно... Попробуйте в 0-й регистр записать 0xB100 (15-бит сразу в 1). Попробовал - тогда соединение происходит на 1000 (за счет того, что бит автосогласования установлен)... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
10ff 0 9 августа, 2019 Опубликовано 9 августа, 2019 · Жалоба 50 minutes ago, svedach said: Попробовал - тогда соединение происходит на 1000 (за счет того, что бит автосогласования установлен)... А так - 4-й регистр 0x0DE1, 9-й регистр 0x0000, 0-й регистр 0xB100. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 9 августа, 2019 Опубликовано 9 августа, 2019 · Жалоба В общем разобрался... Я не совсем правильно понимал суть автосогласования. Для получения полного дуплекса необходимо оставить автосогласование, но при этом убрать из поддерживаемых режимов гигабит. В этом случае соединение установится на 100 МБит, полный дуплекс. Разобрался по исходникам драйверов для 88E1512 для Zynq. Там если проследить всю последовательность, то становится ясно... 10ff, спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться