Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F407VE + Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Тапочек
Здравствуйте. На плате некоторого устройства имеется связка STM32F407 + KSZ8041 + RJ-45 для связи с компьютером по Ethernet. На контроллере запускается TCP-сервер, на удаленном компьютере - TCP-клиент. На контроллере стоит кейловская операционка RL-RTX и самопальный стек. При потоковой передаче данных от сервера клиенту замечена такая неприятная вещь, что иногда данные от контроллера задерживаются в его TxFIFO до того момента, пока в его приемный буфер не поступит какой-либо новый фрейм. В случае с TCP-протоколом и при отсутствии других устройств в сети задержка может достигать 200 мс, когда по таймауту клиент не пошлет ACK-пакет. Как объяснить такое поведение контроллера - непонятно. Кто-нибудь сталкивался с подобной проблемой?
jcxz
Объяснить-то просто - багом в вашем самопальном стеке.
Тапочек
Цитата(jcxz @ Apr 22 2014, 14:05) *
Объяснить-то просто - багом в вашем самопальном стеке.


Вряд ли, потому что поначалу стоял кейловский стек - с ним та же беда.
iosifk
Цитата(Тапочек @ Apr 22 2014, 10:10) *
Здравствуйте. На плате некоторого устройства имеется связка STM32F407 + KSZ8041 + RJ-45 для связи с компьютером по Ethernet. На контроллере запускается TCP-сервер, на удаленном компьютере - TCP-клиент. На контроллере стоит кейловская операционка RL-RTX и самопальный стек. При потоковой передаче данных от сервера клиенту замечена такая неприятная вещь, что иногда данные от контроллера задерживаются в его TxFIFO до того момента, пока в его приемный буфер не поступит какой-либо новый фрейм. В случае с TCP-протоколом и при отсутствии других устройств в сети задержка может достигать 200 мс, когда по таймауту клиент не пошлет ACK-пакет. Как объяснить такое поведение контроллера - непонятно. Кто-нибудь сталкивался с подобной проблемой?

1. Запретить автонегоциацию трансиверу и установить 10 Мбит. Проверить, пропадает ли линк.
2. Проверить в другом сегменте сети.
3. Проверить питание трансивера. и тактирование. посмотреть "глаз"...
4. В момент " данные от контроллера задерживаются в его TxFIFO" в каком состоянии находится трансивер? Пересылаются ли в него данные? Есть ли линк?
5. установить "TCP-сервер, на удаленном компьютере - TCP-клиент" в один свитч, в режиме дуплекса...

И посмотрите, что будет....
Golikov A.
Цитата
3. Проверить питание трансивера. и тактирование. посмотреть "глаз"...


простите что такое глаз?
iosifk
Цитата(Golikov A. @ Apr 22 2014, 20:53) *
простите что такое глаз?

Глазковая диаграмма.
У меня на сайте статья про отладку 8842, там об этом есть...
Удачи!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.