Цитата(Тапочек @ 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-клиент" в один свитч, в режиме дуплекса...
И посмотрите, что будет....