Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-ноя-28 03:12

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу 1 2 3 »
Автор Сообщение
 Заголовок сообщения: Проблемы с Ethernet
СообщениеДобавлено: 2021-авг-05 17:21 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Здравствуйте!

Возникла проблема.
За основу взят проект из примеров eth_loopback для 1986ве8т, в котором приём и передача пакетов осуществляется в вечном цикле main при условии, что включён режим loopback_mode.

Попытка переписать проект с прерываниями закончилась неудачно. В прерывание отладчик не заходит, да и вообще быстро вылетает со словами, что JLink не может прочитать регистры r0-r64.

Настройка модуля ethernet изменилась только в части разрешения прерывания (добавилась функция NVIC_EnableIRQ(ETHO_IRQn) и самой функции обработки прерывания INT_ETHO_Handler().

Что могло быть упущено? Почему прерывание не срабатывает?

Заранее спасибо за помощь.


Вложения:
main.rar [2.39 КБ]
26 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-авг-06 08:58 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1600
Откуда: Тула
Ann писал(а): *
Настройка модуля ethernet изменилась только в части разрешения прерывания (добавилась функция NVIC_EnableIRQ(ETHO_IRQn) и самой функции обработки прерывания INT_ETHO_Handler().

Что могло быть упущено? Почему прерывание не срабатывает?
Убедитесь, что в имени обработчика цифра ноль, а не литера о.

_________________
сочувствующий…


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-авг-06 10:48 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 530
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Ann писал(а): *
Здравствуйте!

Возникла проблема.
За основу взят проект из примеров eth_loopback для 1986ве8т, в котором приём и передача пакетов осуществляется в вечном цикле main при условии, что включён режим loopback_mode.

Попытка переписать проект с прерываниями закончилась неудачно. В прерывание отладчик не заходит, да и вообще быстро вылетает со словами, что JLink не может прочитать регистры r0-r64.

Настройка модуля ethernet изменилась только в части разрешения прерывания (добавилась функция NVIC_EnableIRQ(ETHO_IRQn) и самой функции обработки прерывания INT_ETHO_Handler().

Что могло быть упущено? Почему прерывание не срабатывает?

Заранее спасибо за помощь.
Здравствуйте!

Обратите, пожалуйста, внимание, что помимо выполнения стандартных процедур по включению прерывания в контроллере NVIC, а также реализации функции обработчика соответствующего прерывания в своей программе, важно также помнить о регистрах IMR/IFR в контроллере Ethernet. Здесь регистр IFR отражает аппаратные флаги, которые выставляются контроллером в ходе работы (если, например, пакет в системе успешно принимается микроконтроллером, то в регистре IFR будет выставлен флаг RF_OK), но чтобы микроконтроллер попал в обработчик по этому событию, в регистре по настройке масок прерываний IMR необходимо также установить в единицу бит RF_OK - названия полей регистров IFR/IMR совпадают. Аналогично для других прерываний. На отладочной плате 1986ВЕ8Т работа прерываний выполняется корректно. Важно также отметить замечание пользователя @ProstoRoman: в Вашем коде ошибок по части указаний на контроллер Ethernet нет.

_________________
Отдел технической поддержки support@milandr.ru

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-авг-09 14:45 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Спасибо большое! Заработало!


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-авг-31 11:39 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Уважаемые разработчики!

Подскажите, пожалуйста, что было упущено в проекте: программа отправляет и принимает данные по ethernet в прерывании. Пока на плате стоит физическая заглушка на разъёме, всё работает. Но стоит подключиться к сети, прерывание не срабатывает ни разу. Что упущено при инициализации? Подскажите, пожалуйста! Чем принципиально отличается настройка режима loopback от штатной работы в сети?

Заранее спасибо.


Вложения:
main2.rar [2.51 КБ]
20 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-авг-31 12:33 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 530
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Ann писал(а): *
Уважаемые разработчики!

Подскажите, пожалуйста, что было упущено в проекте: программа отправляет и принимает данные по ethernet в прерывании. Пока на плате стоит физическая заглушка на разъёме, всё работает. Но стоит подключиться к сети, прерывание не срабатывает ни разу. Что упущено при инициализации? Подскажите, пожалуйста! Чем принципиально отличается настройка режима loopback от штатной работы в сети?

Заранее спасибо.
Здравствуйте!

Режим "loopback" или КЗ, как описано официальной документацией на микроконтроллер 1986ВЕ8Т, является режимом работы блока Ethernet, когда блок PHY не задействован в работе, обмен данными производится исключительно на уровне MAC (для простоты внутри микроконтроллера). Соответственно, работая в реальном изделии, когда между собой физически подключаются несколько изделий в рамках топологии сети, блок PHY необходим. Для рядового пользователя это тот самый физический разъем на плате, куда можно подключить кабель, и, именно благодаря работе блока PHY, будут формироваться импульсы по соответствующим линиям кабеля в рамках работы протокола с необходимым кодированием (Манчестерское кодирование для 10 Мбит/с и NRZI для 100 Мбит/с - как пример). Обратите, пожалуйста, внимание, что в микроконтроллере 1986ВЕ8Т есть встроенный в кристалл Ethernet PHY на 10 Мбит/с, соответственно, для 100 Мбит/с необходима отдельная микросхема PHY, которая будет подключаться к блоку MAC посредством интерфейса MII. Внешней микросхемы PHY на отладочном комплекте производства компании Миландр на базе 1986ВЕ8Т нет, для потребителя доступно использование только внутреннего блока PHY на 10 Мбит/с, при этом у блока имеются свои особенности, главной из которой является то, что блок PHY для корректной работы должен тактироваться стабильной частотой 80 МГц. Об особенностях запуска блока PHY в микроконтроллере 1986ВЕ8Т информация приведена в статье информационного портала отдела технической поддержки компании Миландр. Ваша задача, как разработчика, заключается в том, чтобы произвести отключение режима КЗ (что уже сделано, судя по коду), после чего произвести настройку блока PHY, где впоследствии убеждаться в наличии импульсов/активности на линиях Ethernet при помощи осциллографа или при помощи программы WireShark, предназначенной для мониторинга сетей. Спасибо за обращение.

Дополнительно обратите, пожалуйста, внимание на статью "Тест Ethernet в режиме КЗ для 1986ВЕ1Т, 1986ВЕ3Т" в рамках информационного портала.

_________________
Отдел технической поддержки support@milandr.ru

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-02 12:21 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Lampadov писал(а): *
Ann писал(а): *
Уважаемые разработчики!

Подскажите, пожалуйста, что было упущено в проекте: программа отправляет и принимает данные по ethernet в прерывании. Пока на плате стоит физическая заглушка на разъёме, всё работает. Но стоит подключиться к сети, прерывание не срабатывает ни разу. Что упущено при инициализации? Подскажите, пожалуйста! Чем принципиально отличается настройка режима loopback от штатной работы в сети?

Заранее спасибо.
Здравствуйте!

Режим "loopback" или КЗ, как описано официальной документацией на микроконтроллер 1986ВЕ8Т, является режимом работы блока Ethernet, когда блок PHY не задействован в работе, обмен данными производится исключительно на уровне MAC (для простоты внутри микроконтроллера). Соответственно, работая в реальном изделии, когда между собой физически подключаются несколько изделий в рамках топологии сети, блок PHY необходим. Для рядового пользователя это тот самый физический разъем на плате, куда можно подключить кабель, и, именно благодаря работе блока PHY, будут формироваться импульсы по соответствующим линиям кабеля в рамках работы протокола с необходимым кодированием (Манчестерское кодирование для 10 Мбит/с и NRZI для 100 Мбит/с - как пример). Обратите, пожалуйста, внимание, что в микроконтроллере 1986ВЕ8Т есть встроенный в кристалл Ethernet PHY на 10 Мбит/с, соответственно, для 100 Мбит/с необходима отдельная микросхема PHY, которая будет подключаться к блоку MAC посредством интерфейса MII. Внешней микросхемы PHY на отладочном комплекте производства компании Миландр на базе 1986ВЕ8Т нет, для потребителя доступно использование только внутреннего блока PHY на 10 Мбит/с, при этом у блока имеются свои особенности, главной из которой является то, что блок PHY для корректной работы должен тактироваться стабильной частотой 80 МГц. Об особенностях запуска блока PHY в микроконтроллере 1986ВЕ8Т информация приведена в статье информационного портала отдела технической поддержки компании Миландр. Ваша задача, как разработчика, заключается в том, чтобы произвести отключение режима КЗ (что уже сделано, судя по коду), после чего произвести настройку блока PHY, где впоследствии убеждаться в наличии импульсов/активности на линиях Ethernet при помощи осциллографа или при помощи программы WireShark, предназначенной для мониторинга сетей. Спасибо за обращение.

Дополнительно обратите, пожалуйста, внимание на статью "Тест Ethernet в режиме КЗ для 1986ВЕ1Т, 1986ВЕ3Т" в рамках информационного портала.

Здравствуйте и спасибо за помощь!

Действительно, для тактирования внутреннего phy была использована внутренняя pll0. Это исправлено. Сейчас используется hse0 (на плате стоит 10 МГц), "разогнанная" до 80МГц. Кроме того, теперь параметр link_period равен 8. Остальные настройки блока phy остались прежними. Вроде они универсальны.

В статье, на которую была дана ссылка, советовали перед настройкой блока его сбросить, после - запустить. Вроде и это было выполнено.

Тем не менее, Wireshark по-прежнему не видит пакетов от микроконтроллера, когда я их запускаю в основном теле программы в вечном цикле. И прерывание по приёму не происходит также.

Пожалуйста, посмотрите ещё раз код. Вдруг что-то все равно было упущено. И проблема именно в коде.

Заранее спасибо.


Вложения:
main3.zip [2.62 КБ]
17 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-02 18:56 
Не в сети

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 355
Организация: ФГУП "РФЯЦ-ВНИИЭФ"
Ann писал(а): *
Тем не менее, Wireshark по-прежнему не видит пакетов от микроконтроллера, когда я их запускаю в основном теле программы в вечном цикле. И прерывание по приёму не происходит также.
Почитайте тут. Мжет это ваш случай?
Для начала отключите проверку КС пакета в Wireshark. Может вы её считаете неправильно, поэтому Wireshark принимает, но бракует ваши сообщения. А вы их осциллографом видите?


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-03 10:28 
Не в сети

Зарегистрирован: 2018-мар-18 15:49
Сообщения: 273
Организация: StartMilandr.ru
А LinkUp вообще происходит?
(На РС сетевая карта говорит что есть подключение и оно на 10МБит состоялось?)


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-03 12:16 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
StartMilandr писал(а): *
А LinkUp вообще происходит?
(На РС сетевая карта говорит что есть подключение и оно на 10МБит состоялось?)
Нет. Сетевая карта отрицает любое подключение. Это и непонятно. Ведь если на внешнем разъёме замкнуть RX на TX, обмен внутри программы идёт. Это видно в отладчике.

Был обнаружен ещё один момент. В примере статьи есть строка:
CLKCTRL_PER0_CLKcmd(CLKCTRL_PER0_CLK_MDR_ENETO_En, ENABLE)
Но в mdr32f8_clkctrl.h среди #define константы CLKCTRL_PER0_CLK_MDR_ENET0_En нет. Она (константа) не нужна? Может, кто-то знает?

А ещё одно отличие моего кода от примера - функция ETH_ClockCMD(Enable). Этой функции нет в mdr32f8_eth.c. Но, может, и она тоже не важна?

Спасибо большое за советы и направления поиска решения проблемы.
Осциллограф появится только в понедельник, поэтому подтвердить или опровергнуть наличие сообщений не могу.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-03 12:53 
Не в сети

Зарегистрирован: 2018-мар-18 15:49
Сообщения: 273
Организация: StartMilandr.ru
Если сетевая карта не видит подключения, то запускать Wireshark нет смысла. Модули PHY не понимают друг друга по тем сигналам, что есть на линии.

По идее, как должен был сработать обмен:
- сетевая карта должна гнать в линию импульсы FLP, заявляя ими поддерживаемые режимы своей работы (если Autonegotiation в компе вы не отключали). FLP это 100Mbps, и начиная с этой скорости появился Autonegotiation. (При Autonegotiation абоненты обмениваются настройками и выбирают общий режим работы - скорость и дуплекс. Чуть подробней - https://startmilandr.ru/doku.php/doc:mk ... iation_off)
- Но 1986ВЕ8 имеет PHY только на 10Mbps, Autonegotiation на такой скорости не работает. Поэтому наличие FLP от сетевой карты ВЕ8 опознает только как NLP, т.е. ВЕ8 понимает что абонент с той стороны есть и поднимет у себя LinkUp. По моим представлениям, этого достаточно чтобы ВЕ8 мог выдавать в линию свои фреймы, когда Вы их пошлете.
- В свою очередь ВЕ8, когда НЕ отправляет пакет, шлет в линию NLP пакеты, чтобы дать абоненту знать о своем присутствии. Сетевая карта РС ожидает FLP для прохождения Autonegotiation, но таких приходящих импульсов не видит. Зато по приходящим импульсам должен сработать блок ParallelDetection, который распознает NLP и поймет что с ним общаются на 10Mbps. Поэтому сетевая карта должна перейти в режим 10Mbps и тоже поднять LinkUp. Теперь Сетевая карта тоже должна слать NLP. После этого сетевой стек будет получать от PHY пакеты и WireShark что-то покажет.

Итого, что должно быть на осциллографе:
1 - ВЕ8 посылает импульсы NLP
2 - Если РС "признает" эти импульсы, то РС тоже начнет слать NLP (LinkUp есть с обоих сторон)
3 - Если РС "НЕ признает" эти импульсы, то продолжает слать FLP (Пачки NLP в которых передается основная страница Autonegotiation).

Почему может не работать:
- Для работы Ethernet нужна достаточно стабильная частота для блока PHY, иначе будет гулять фаза NLP и ParallelDetection не воспримет эти импульсы как валидные. Когда вы замыкаете на плате TX и RX, то получается PHY передает NLP и принимает NLP на своей же частоте - т.е. он не замечает гуляния по фазе. Но сетевая карта РС работает на своей стабильной частоте и ей разброс по фазе приходящих NLP будет очень заметен и она может забраковать сигнал.

Дальнейшее смутно, по памяти, надеюсь меня поправят:
- Сейчас вроде починили, но в более ранней ревизии ВЕ8 блок PLL давал большой джиттер, поэтому его нельзя было использовать для тактирования PHY. Нужно было подать стабильную частоту 80Мгц от внешнего генератора на пины HSE0, сам HSE0 включить в режиме PY_PASS, чтобы пропустить 80МГц на MAX_CLOCK и соответственно на блок PHY. Но ядро работает только до 64МГц, поэтому нужно было использовать делитель, чтобы 80МГц не попало на ядро. Вроде как-то так мы это запускали когда к РС подключали...


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-06 09:22 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
StartMilandr писал(а): *
...Дальнейшее смутно, по памяти, надеюсь меня поправят:
- Сейчас вроде починили, но в более ранней ревизии ВЕ8 блок PLL давал большой джиттер, поэтому его нельзя было использовать для тактирования PHY. Нужно было подать стабильную частоту 80Мгц от внешнего генератора на пины HSE0, сам HSE0 включить в режиме PY_PASS, чтобы пропустить 80МГц на MAX_CLOCK и соответственно на блок PHY. Но ядро работает только до 64МГц, поэтому нужно было использовать делитель, чтобы 80МГц не попало на ядро. Вроде как-то так мы это запускали когда к РС подключали...
Спасибо Вам огромное за такое подробное объяснение.

Подскажите, пожалуйста, на микроконтроллере написано, что он сделан в 18 году на 26 неделе (под названием цифры 1826). Это более ранняя ревизия ВЕ8 или нет? То есть надо искать внешние 80 МГЦ или можно справиться силами одного только блока PHY?

Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-06 16:09 
Не в сети
Аватара пользователя

Зарегистрирован: 2021-фев-26 11:46
Сообщения: 22
Организация: cmps
Есть данные скорости приёма и передачи TCP и UDP трафика для микроконтроллера 1986ВЕ8Т ?


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-07 09:39 
Не в сети
Support

Зарегистрирован: 2017-май-31 15:10
Сообщения: 107
Организация: АО "ПКК Миландр"
Откуда: АО "ПКК Миландр"
Ann писал(а): *
StartMilandr писал(а): *
...Дальнейшее смутно, по памяти, надеюсь меня поправят:
- Сейчас вроде починили, но в более ранней ревизии ВЕ8 блок PLL давал большой джиттер, поэтому его нельзя было использовать для тактирования PHY. Нужно было подать стабильную частоту 80Мгц от внешнего генератора на пины HSE0, сам HSE0 включить в режиме PY_PASS, чтобы пропустить 80МГц на MAX_CLOCK и соответственно на блок PHY. Но ядро работает только до 64МГц, поэтому нужно было использовать делитель, чтобы 80МГц не попало на ядро. Вроде как-то так мы это запускали когда к РС подключали...
Спасибо Вам огромное за такое подробное объяснение.

Подскажите, пожалуйста, на микроконтроллере написано, что он сделан в 18 году на 26 неделе (под названием цифры 1826). Это более ранняя ревизия ВЕ8 или нет? То есть надо искать внешние 80 МГЦ или можно справиться силами одного только блока PHY?

Заранее спасибо.
Ревизию микросхемы можно узнать по документу errata (всегда доступна на основном сайте: https://ic.milandr.ru/products/mikrokon ... /#docs_tab)

Маркировка 1826 - это 4 ревизия микросхемы и в ней присутствует ошибка большого джиттера PLL (ошибка 0051 errata).
Следовательно, нужна внешняя частота для ETH_PHY.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-07 11:26 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Artem1 писал(а): *
Ревизию микросхемы можно узнать по документу errata (всегда доступна на основном сайте: https://ic.milandr.ru/products/mikrokon ... /#docs_tab)

Маркировка 1826 - это 4 ревизия микросхемы и в ней присутствует ошибка большого джиттера PLL (ошибка 0051 errata).
Следовательно, нужна внешняя частота для ETH_PHY.
Спасибо большое.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу 1 2 3 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB