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

88E1512 запускается в half-duplex

Добрый день. Столкнулся с проблемой: 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 скорость обмена ощутимо возрастает.

Может кто сталкивался? Может еще какие регистры надо записать или еще что сделать?

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


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

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. Может свич слишком "китайский" и стоит попробовать другой?

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


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

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...

Смущает так же то, что если перевести порт свича в полный дуплекс, то соединение получается на реальном полном дуплексе...

 

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


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

17 hours ago, svedach said:

... записываю в IEEE_CONTROL_REG_OFFSET (№0) значение 0x2100 - режим дуплекс и 100 МБит. Потом делаю программный сброс (бит 15 регистра IEEE_CONTROL_REG_OFFSET), жду окончания сброса. Вроде все.

 

0x2100? Странно... Попробуйте в 0-й регистр записать 0xB100 (15-бит сразу в 1).

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


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

32 minutes ago, 10ff said:

0x2100? Странно... Попробуйте в 0-й регистр записать 0xB100 (15-бит сразу в 1).

Попробовал - тогда соединение происходит на 1000 (за счет того, что бит автосогласования установлен)...

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


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

50 minutes ago, svedach said:

Попробовал - тогда соединение происходит на 1000 (за счет того, что бит автосогласования установлен)...

А так - 4-й регистр 0x0DE1, 9-й регистр 0x0000, 0-й регистр 0xB100.

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


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

В общем разобрался...

Я не совсем правильно понимал суть автосогласования. Для получения полного дуплекса необходимо оставить автосогласование, но при этом убрать из поддерживаемых режимов гигабит. В этом случае соединение установится на 100 МБит, полный дуплекс.

Разобрался по исходникам драйверов для 88E1512 для Zynq. Там если проследить всю последовательность, то становится ясно...

10ff, спасибо!

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


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

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

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

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

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

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

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

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

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

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