реклама на сайте
подробности

 
 
> Ksz8041 не отправляет через Хаб, а напрямую работает
khomin
сообщение Apr 12 2015, 14:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 14-06-14
Пользователь №: 81 950



Доброго времени суток. Собрал плату на Ksz8041, STM32F4 + LwIP. Подправил пример стека - "под себя". Столкнулся с тем, что через 100Мбитный хаб ничего не работает, а на прямую через сетевой switch все работает как должно. У PHY включен "Auto-Negotiation" внешней подтяжкой, пробовал так же программно, разницы нет. Link устанавливается, стек пакеты принимает (видно в буфере и по прерыванию Ethernet) и передает (заметна активность TXD0-1 CRS_DV), но wireshark ничего не видит.

Увы не до конца понятен алгоритм с Auto-Negotiation, так же не ясно какой из регистров должен давать информацию (1,4 или 5) и нужно ли вручную конфигурировать PHY ?
Кто сталкивался ..., отзовитесь пожалуйста ...

пробовал вручную заполнять структуру ETH_InitStruct, ставил 10-100 Full-HalfDuplex, результата нет

Сообщение отредактировал khomin - Apr 12 2015, 14:34
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Apr 24 2015, 09:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Ниже Wireshark'а из PC не посмотрите. Карточка все битые пакеты выкидывает безоговорочно.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Apr 24 2015, 14:53
Сообщение #3


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Alex11 @ Apr 24 2015, 12:06) *
Ниже Wireshark'а из PC не посмотрите. Карточка все битые пакеты выкидывает безоговорочно.


о как...

Юзал всегда Ethereal - там таких проблем не замечено. Все программерские ошибки в ввиде битых пакетов видны на ура...

Всегда ваершаку не доверял...


Цитата(khomin @ Apr 24 2015, 12:00) *
..возможно пакет отправляется битым, возможно он не отправляется вовсе, но увидеть это нечем ...


всегда юзал Ethereal. Он точно показывает всё что послано в сеть. Т.е. не опознанные, битые, ошибочные с точки зрения формата
и с точки зрения протокола.
Если ваеришак глючит - то это дерьмо а не снифер(сам его не юзал - хз)... Но подозреваю что всё-таки проблема в передатчике.
Попробуйте в обработчике передатчика подсчитывать реально поставленных на передачу в железо пакеты. И на более высоком уровне
- переданных на саму передачу. Или по другому - как Вы контролируете что передача происходит? Проверяли ли отладчиком
обработку прерывания передатчика(окончания передачи ПДП)? Там всё корректно? Как Вы отрабатываете сборку DMA отработанных
сегментов? Там всё корректно(возвращается ли память обратно в свободный пул, корректна ли обработка нехватка памяти и нет ли
зависимости обработчика прерывания от тяжёлых функций)? В своё время меня не устроил обработчик по умолчанию - дюже тяжёл был.
Пришлось доводить до ума.

Go to the top of the page
 
+Quote Post
khomin
сообщение Apr 25 2015, 19:13
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 14-06-14
Пользователь №: 81 950



Цитата(kolobok0 @ Apr 24 2015, 15:53) *
как Вы контролируете что передача происходит? Проверяли ли отладчиком
обработку прерывания передатчика(окончания передачи ПДП)? Там всё корректно? Как Вы отрабатываете сборку DMA отработанных
сегментов? Там всё корректно(возвращается ли память обратно в свободный пул, корректна ли обработка нехватка памяти и нет ли
зависимости обработчика прерывания от тяжёлых функций)? В своё время меня не устроил обработчик по умолчанию - дюже тяжёл был.

Смотрю отправку в:
Код
    /* When Tx Buffer unavailable flag is set: clear it and resume transmission */
    if ((ETH->DMASR & ETH_DMASR_TBUS) != (u32)RESET)
    {
        /* Clear TBUS ETHERNET DMA flag */
        ETH->DMASR |= ETH_DMASR_TBUS;
        /* Resume DMA transmission*/
        ETH->DMATPDR = 0;
    }

После старта, без появления глюка, данные отправляются сразу после ETH->DMATPDR = 0;, как и должно.
После проявления глюка, светодиод на разъеме LAN так же "моргает" после записи нуля в DMATPDR, т.е. что-то через физику уходит.
В регистре DMASR, разницы с проявлением глюка - не вижу.
Биты TPS, NIS, ETS выставляются так же.
в MMCTGFCR (transmitted good frames counter register) после записи DMATPDR счет так же увеличивается ...
Честно говоря уже голову сломал, больше недели потратил - результат пока нулевой (
Думаю стек и драйвер от st не при делах.
Сверял все указатели непосредственно в регистре DMA, указатели на дескрипторы и их содержимое, на буфер Tx, все верно и не отличается от работы до появления этого глюка.
Думаю если создать свой буфер с дескриптором (да заполнить константами) и подцепить к DMA вместо буфера из стека, наверняка получится то же самое ...
Уже и Errata на STM32F429 пересмотрел, ничего похожего не нашел, что не удивительно.


Сообщение отредактировал khomin - Apr 25 2015, 19:28
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- khomin   Ksz8041 не отправляет через Хаб   Apr 12 2015, 14:58
- - Alex11   Скорее всего, PHY здесь ни при чем. Есть два вариа...   Apr 12 2015, 18:11
- - ksv198   Цитата(khomin @ Apr 12 2015, 17:58) Добро...   Apr 17 2015, 08:29
|- - khomin   Цитата(ksv198 @ Apr 17 2015, 08:29) KSZ80...   Apr 21 2015, 06:15
|- - kolobok0   Цитата(khomin @ Apr 21 2015, 09:15) В лок...   Apr 21 2015, 10:18
- - prig   Цитата(Alex11 @ Apr 12 2015, 21:11) Скоре...   Apr 21 2015, 13:04
|- - khomin   Цитата(prig @ Apr 21 2015, 14:04) PHY мож...   Apr 21 2015, 18:53
|- - kolobok0   Цитата(khomin @ Apr 21 2015, 21:53) Спаси...   Apr 22 2015, 15:09
|- - khomin   Цитата(kolobok0 @ Apr 22 2015, 16:09) Рек...   Apr 24 2015, 09:00
|- - prig   Цитата(khomin @ Apr 24 2015, 12:00) ... Н...   Apr 24 2015, 12:05
- - Alex11   ЦитатаЕсли ваеришак глючит - то это дерьмо а не сн...   Apr 25 2015, 21:25
|- - kolobok0   Цитата(Alex11 @ Apr 26 2015, 00:25) ....е...   Apr 26 2015, 09:26
- - Alex11   Я же специально написал - Ethernet контрольная сум...   Apr 26 2015, 11:49
|- - prig   Цитата(Alex11 @ Apr 26 2015, 14:49) Я же ...   Apr 27 2015, 07:39
|- - kolobok0   Цитата(Alex11 @ Apr 26 2015, 14:49) ...Et...   Apr 27 2015, 09:52
- - Alex11   IEEE 802.3 MAC frame format - Frame check sequence...   May 1 2015, 01:14


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016