Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Cетевые протоколы и технологии

Cетевые протоколы и технологии TCP/IP стек

Ответ
 
Опции темы Опции просмотра
Старый 08.04.2020, 13:16   #1
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Несколько лет назад начал заниматься поддержкой Ethernet.
Начал со связки STM32F107 + LAN8710A
При этом тактирование LAN8710A 50МГц с ноги PA1 контроллера,
конечно при должном конфигурировании модуля Ethernet.
И все бы ничего, но заметил что при передаче длинных файлов (фреймов)
иногда проскакивают непонятные символы. И конечно не совпадают
контрольные суммы пакетов.
Ну думал - наводки.
Но дело в том, что шум проскакивал строго в конце пакетов.
При приеме пакетов снова шум в конце...
Начал читать интернет и выяснил, что народ жалуется на джиттер
при генерации этих самых 50МГц для LAN драйвера.
Снизил размер фрейма с (1500-40) байт (типа стандарт) до 1064 байт -
все проблемы сразу ушли и все стало стабильно.

Речь про конфигурацию LwIP, хотя не суть.

Начал переходить на STM32F407.
Попалась демо борда с STM32F407 + DP83848
И там на вход тактирования LAN стоит отдельный генератор 50МГц.
Т.е. производитель знал про эти проблемы!!
Ну ладно. Хорошо.
Все работает... и снова ошибки и мусор в хвосте длинных фреймов.
Снова снизил с (1500-40) до 1064 байт и снова проблемы ушли.
Но что же это? Тактирование DP83848 не от процессора а от
внешнего независимого и точного генератора!

Кто то знает что либо по этому поводу?
Petr вне форума   Ответить с цитированием
Старый 08.04.2020, 13:48   #2
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

может засада в LwIP

мусор- это похоже что где то размер буфера указан жестко... и он лишку из памяти читает-пишет.

или PHY интерфейс дурит....
SergP01 на форуме   Ответить с цитированием
Старый 08.04.2020, 14:17   #3
bzx
Senior Member
 
Аватар для bzx
 
Регистрация: 25.02.2007
Адрес: St. Petersburg
Возраст: 46
Сообщений: 509
Вес репутации: 1159/65
bzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud of
Отправить сообщение для bzx с помощью ICQ Отправить сообщение для bzx с помощью Skype™
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от SergP01 Посмотреть сообщение
может засада в LwIP
Да, присоединяюсь. Проблемы могут быть в софте.

Как вариант, "бяки" могут быть и в физике MII/RMII сигналов. Посмотрите на плате осциллографом, что с сигналами творится, с их уровнями.

Не проседает ли питание на чипе, насколько оно стабильно?
__________________
Для связи email: info собака qbit.su
bzx вне форума   Ответить с цитированием
Старый 08.04.2020, 14:38   #4
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 34
Сообщений: 1,412
Вес репутации: 2524/84
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Привет,
у меня связка stm32f107 + старая RTLка. Правда, тактирую 25МГц от контроллера, никаких проблем на длинных пакетах не было.
Первый вариант платы был с отдельным кварцем 25МГц на PHY.
У меня LwIp, но версии 1.41, вроде.
Кстати, тактирование от микроконтроллера не любят наладчики. Когда физика имеет свой кварц, то наладчики проверяю плату без распаянного микроконтроллера, смотрят как плата реагирует на кабель, есть ли КЗ или перегруз и только потом паяют микроконтроллер. В варианте без кварца, пока контроллер не начнёт тактировать физику, ничего проверить нельзя.
Рак вне форума   Ответить с цитированием
Старый 08.04.2020, 14:43   #5
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от bzx Посмотреть сообщение
Да, присоединяюсь. Проблемы могут быть в софте.

Как вариант, "бяки" могут быть и в физике MII/RMII сигналов. Посмотрите на плате осциллографом, что с сигналами творится, с их уровнями.

Не проседает ли питание на чипе, насколько оно стабильно?
вряд ли.... тогда бы на всех пакетах глючило бы.. и не в конце пакетов...
ИМХО, где то засада с размером какого нибудь буфера...
типа "кто то" назначил 1024 данные
SergP01 на форуме   Ответить с цитированием
Старый 08.04.2020, 17:08   #6
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от SergP01 Посмотреть сообщение
вряд ли.... тогда бы на всех пакетах глючило бы.. и не в конце пакетов...
ИМХО, где то засада с размером какого нибудь буфера...
типа "кто то" назначил 1024 данные
Осциллографом смотрел - ничего нехорошего не заметил.
Питания везде железно стоят.

С LwIP могут быть проблемы.
Но... не знаю.
Когда проблема появилась первый раз - я заменил версию 1.4.1
на версию 2.0.3 с оф. сайта.
Переезд не простой но результата это не дало.
Мусор такой же и не регулярный.
Конечно могут быть проблемы в софте.
Но не похоже на то.
И не 1024 или там 1064
Проблемы исчезают уже при 1200 - 1300 Байт.
1024 - это мне просто удобно работать с этими пакетами.
Но к проблемам 1024 не относится.
И проблема исчезает плавно при снижении длины пакета.
Что опять не похоже на софтверную проблему.
Petr вне форума   Ответить с цитированием
Старый 08.04.2020, 17:31   #7
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от Petr Посмотреть сообщение
Осциллографом смотрел - ничего нехорошего не заметил.
Питания везде железно стоят.

С LwIP могут быть проблемы.
Но... не знаю.
Когда проблема появилась первый раз - я заменил версию 1.4.1
на версию 2.0.3 с оф. сайта.
Переезд не простой но результата это не дало.
Мусор такой же и не регулярный.
Конечно могут быть проблемы в софте.
Но не похоже на то.
И не 1024 или там 1064
Проблемы исчезают уже при 1200 - 1300 Байт.
1024 - это мне просто удобно работать с этими пакетами.
Но к проблемам 1024 не относится.
И проблема исчезает плавно при снижении длины пакета.
Что опять не похоже на софтверную проблему.
тут что угодно может быть...
ну... например пакет не кратный буферу.... в сети много пакетов(это напрямую к компу нужно подключить, без хабов)...
медленно забираете... пакеты в буфере контроллера наползают друг на друга..... настройка PHY микросхемы....

задача железка <-> комп (напрямую) работает?
SergP01 на форуме   Ответить с цитированием
Старый 08.04.2020, 17:35   #8
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от SergP01 Посмотреть сообщение
тут что угодно может быть...
ну... например пакет не кратный буферу.... в сети много пакетов(это напрямую к компу нужно подключить, без хабов)...
медленно забираете... пакеты в буфере контроллера наползают друг на друга..... настройка PHY микросхемы....

задача железка <-> комп (напрямую) работает?
От сети это не зависит.
Она одинакова и в сети и напрямую.

Конечно причина очень!!! сложна и найти сложно.
Потому и спрашиваю. Может кто такое уже щупал.
Petr вне форума   Ответить с цитированием
Старый 08.04.2020, 17:42   #9
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от Petr Посмотреть сообщение
От сети это не зависит.
Она одинакова и в сети и напрямую.

Конечно причина очень!!! сложна и найти сложно.
Потому и спрашиваю. Может кто такое уже щупал.
тут, ИМХО, поможет- "встать с дивана".... взять даташит... и без всяких стеков написать простой пример на уровне контроллера камня...
типо- гнать UDP пакеты.... (у меня знакомый мазахист такое на ASM делает)
тогда и сразу понятно будет- софт или железка... настройки железки....
SergP01 на форуме   Ответить с цитированием
Старый 09.04.2020, 08:53   #10
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от SergP01 Посмотреть сообщение
тут, ИМХО, поможет- "встать с дивана".... взять даташит... и без всяких стеков написать простой пример на уровне контроллера камня...
типо- гнать UDP пакеты.... (у меня знакомый мазахист такое на ASM делает)
тогда и сразу понятно будет- софт или железка... настройки железки....
Есть и альтернативный путь.
Можно взять функцию отправки пакета из драйвера (порт LwIP).
Сверить это внимательно! с докой на модуль и слать длинные пакеты.
Суть та же.

Но это не горит и не актуально. На пакетах покороче все работает.
И если будет настроение... тогда... может быть...

Кстати нашел в столе демо борду на F7 процессоре.
Ничего не меняя в прилагавшемся демо софте стал слать полные пакеты
(одинаковые). Проблема повторилась!!!
Замечу, что все использование модуля в прилагавшихся демках (нагенерено из куба мной и самим STM) использует короткие пакеты, не заполненные полностью.
Так что это некая общая проблема портирования LwIP.
Может самого LwIP. Но это невероятно, поскольку либа стабильно работает на других процессорах в том числе и у меня на больших пакетах.
Ну или Ethernet модулей у STM.
Хотя тоже сомнительно. Они бы уже заметили и написали эрраты.

Покопаюсь на досуге...
Petr вне форума   Ответить с цитированием
Старый 09.04.2020, 14:44   #11
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от Petr Посмотреть сообщение
Есть и альтернативный путь.
Можно взять функцию отправки пакета из драйвера (порт LwIP).
Сверить это внимательно! с докой на модуль и слать длинные пакеты.
Суть та же.
.
нет.... только ручками.... по доке настроить МАС.... создать пакет... и послать его...
SergP01 на форуме   Ответить с цитированием
Старый 09.04.2020, 16:29   #12
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от SergP01 Посмотреть сообщение
нет.... только ручками.... по доке настроить МАС.... создать пакет... и послать его...
Это вы сами Без меня.

Кстати, я выяснил, что проблема проявляется не везде одинаково.
На демо борде с F7 и F4 контроллером только при приеме пакетов.
Передача нормально.
А вот на плате с F1 контроллером и при приеме и при передаче.

Причем на первых 2-х отдельные генераторы 50МГц LAN микросхем.
Далее, длинные UDP пакеты на этих платах приходят нормально.
А вот TCP с мусором.
Что прямо указывает на софтверную проблему.

Так что вероятно проблема состоит из 2-х.
1) На F107 процессоре действительно есть джиттер генерации 50МГц
и эта проблема широко обсуждалась на англоязычных форумах.

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

2) И на эту картину наложилась проблема обработки приходящих пакетов.
Я проблему заметил при передаче файлов по FTP и их записи на диск
с FAT32. При сравнении файлов виден мусор в длинных файлах
с периодичностью, точно равной длине пакета. Что не говорит прямо,
что был битый пакет а не возникла ошибка при его обработке.
Там много софта и есть где ошибиться.
Но и найти теперь это просто. Задача сузилась.
В какой то мере это обсуждение помогло.
Petr вне форума   Ответить с цитированием
Старый 09.04.2020, 17:17   #13
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от Petr Посмотреть сообщение
Это вы сами Без меня.


Но и найти теперь это просто. Задача сузилась.
В какой то мере это обсуждение помогло.
дык.... всё таки стек виноват?
SergP01 на форуме   Ответить с цитированием
Старый 09.04.2020, 17:37   #14
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от SergP01 Посмотреть сообщение
дык.... всё таки стек виноват?
Выясню точно - напишу обязательно.
Скорее мой софт.
FTP и FAT32 моего изготовления.
Но проблема с железом на F107 точно есть.
Petr вне форума   Ответить с цитированием
Старый 09.04.2020, 17:54   #15
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Цитата:
Сообщение от Petr Посмотреть сообщение
Выясню точно - напишу обязательно.
Скорее мой софт.
FTP и FAT32 моего изготовления.
Но проблема с железом на F107 точно есть.
"
- ну вот. Работает машинка.
- нам бы только всё заграничное ругать.
"
(с)

SergP01 на форуме   Ответить с цитированием
Старый 23.04.2020, 10:32   #16
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 1,841
Вес репутации: 3695/103
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Странная проблема тактирования LAN микросхем и контроллеров STM32F107/407

Как и обещал пишу о найденном решении глюка и его причинах.
Тут наложилось несколько факторов и взаимосвязей.

Итак:

1) В STM32F107 при тактировании LAN микросхемы от процессора
действительно есть проблема джиттера и это факт. Не стоит делать
длинные пакеты. Проблема остра только при приеме пакетов, но не передаче.

2) Во всех старших моделях этой аппаратной проблемы нет.
(или при тактировании LAN микросхем от внешнего генератора)
Но есть недопонимание и недостаточное объяснение параметра
PBUF_POOL_BUFSIZE в хедере LwIP lwipopts.h.
Конечно ясно, что это размер буфера под пакет.
Точнее максимальный размер одного динамически выделяемого
блока памяти менеджером памяти.
Но что будет если он меньше или больше размера пакета?

Так вот, при гулянии его размера вокруг размера приходящего пакета
TCP_MSS при выделении памяти в менеджером памяти либы LwIP
есть неприятный эффект, когда хедер разделителя блоков памяти
(а в этом менеджере свободные области делятся на части динамически
указателями на предыдущий и следующий выделенный блок)
не умещается в этот самый POOL и происходит затирание хвоста принятого пакета.

Этот эффект проявляется только при близких размерах.
Если пакет допустим 1500 байт а макс. блок 1700 или 512 - нет проблем.
Но если блок 1450-1550 байт - эффект есть.
У меня было 1500 блок и (1500-40) пакет - это недопустимо!

Ребята давно нашли и написали исправление для LwIP,
которое и решает проблемы и выводит сообщения при компиляции.

Но на мой взгляд, самое разумное решение, это правильно установить
параметр PBUF_POOL_BUFSIZE и ничего не менять в либе.
Это упростит переходы на новые версии либы в будущем.

А правильный метод - это сделать размер блока на 100-200 байт больше пакета.
Или написать так:
Код:
/* TCP Maximum segment size. */
/* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
#define TCP_MSS                 (1500-40)

/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
#define PBUF_POOL_BUFSIZE        LWIP_MEM_ALIGN_SIZE(TCP_MSS + 40 + PBUF_LINK_HLEN)
Что точно согласует размеры и снимет проблему.
Напомню, что проблема вылезает при приеме полноразмерных пакетов.
И конечно не забываем о #define TCP_QUEUE_OOSEQ 0
если вы работаете с интернетом, где возможна перестановка местами
приходящих пакетов, а не локалкой, где этого не происходит никогда.
И тогда прием потока полноразмерных пакетов будет стабильным.
Petr вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 12:26.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot