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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F207+LwIP+FREERTOS - ARP?
V_M_Luck
сообщение Aug 7 2012, 17:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Начинаю разбираться с Ethernet. Контроллер STM32F207. Иду по обычному пути - пример от ST LwIP+FREERTOS. Сделал простенькую задачу, в которой отправляю пакеты по UDP. В принципе работает.
НО. Если просто запустить проект, никаких пакетов на стороне PC не наблюдается (Wireshark). Вот если как-нибудь дернуть мой девайс со стороны компа (например ECHO запросить) - сразу все оживает. Поразбиравшись обнаружил, что при старте не заполняется ARP таблица. При чем ARP запрос формируется. Я проследил до low_level_output. Там все нормально. Смотрел счетчик ушедших паетов ETH_MMCTGFCR в EMAC - все соответствует количеству ARP запросов. Но Wireshark молчит.
Как-то так.
Может кто сталкивался - подскажите куда смотреть.
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 8 2012, 06:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Да, забыл добавить. Физика KSZ8041.
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 11 2012, 18:40
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(V_M_Luck @ Aug 7 2012, 21:02) *
Начинаю разбираться с Ethernet. Контроллер STM32F207. Иду по обычному пути - пример от ST LwIP+FREERTOS. Сделал простенькую задачу, в которой отправляю пакеты по UDP. В принципе работает.
НО. Если просто запустить проект, никаких пакетов на стороне PC не наблюдается (Wireshark). Вот если как-нибудь дернуть мой девайс со стороны компа (например ECHO запросить) - сразу все оживает. Поразбиравшись обнаружил, что при старте не заполняется ARP таблица. При чем ARP запрос формируется. Я проследил до low_level_output. Там все нормально. Смотрел счетчик ушедших паетов ETH_MMCTGFCR в EMAC - все соответствует количеству ARP запросов. Но Wireshark молчит.
Как-то так.
Может кто сталкивался - подскажите куда смотреть.


То есть ARP запрос Wireshark'ом не виден?
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 13 2012, 06:41
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Совершенно верно. Запрос не виден. Причем обратный запрос от компа и ответ на него замечательно видны и обрабатываются на ура. В принципе мне это не сильно мешает. Планируется устройство UDP сервер. Просто непонятный камушек не хочется оставлять.
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 13 2012, 07:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(V_M_Luck @ Aug 13 2012, 10:41) *
Совершенно верно. Запрос не виден. Причем обратный запрос от компа и ответ на него замечательно видны и обрабатываются на ура. В принципе мне это не сильно мешает. Планируется устройство UDP сервер. Просто непонятный камушек не хочется оставлять.

Erratу для STM32 по поводу Ethernet-MAC читали? Ваш случай?
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 13 2012, 12:48
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Цитата(adnega @ Aug 13 2012, 10:31) *
Erratу для STM32 по поводу Ethernet-MAC читали? Ваш случай?

Уточните, пожалуйста, что вы имеете ввиду? Erratу посмотрел, но там вроде ограничения по CRC при использовании IPv6. Store and Forward использую, MCO не использую. Вроде бы все.
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 13 2012, 13:17
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



К сожалению с STM32f2xx не знаком - боюсь увести в неверном направлении.
Насколько я понимаю у Вас не передается самый первый пакет?
В некоторых случаях проще повторить попытку передачи. Например, в uIP зачем-то посылается два пакета в сеть вместо одного.
Если есть осциллограф, то можно посмотреть ногу ETH_TXEN на наличие импульса отправки "неприходящего" пакета.
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 13 2012, 14:27
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Цитата(adnega @ Aug 13 2012, 16:17) *
К сожалению с STM32f2xx не знаком - боюсь увести в неверном направлении.
Насколько я понимаю у Вас не передается самый первый пакет?
В некоторых случаях проще повторить попытку передачи. Например, в uIP зачем-то посылается два пакета в сеть вместо одного.
Если есть осциллограф, то можно посмотреть ногу ETH_TXEN на наличие импульса отправки "неприходящего" пакета.

Спасибо, завтра гляну.
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 14 2012, 13:26
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Посмотрел. TXEN есть. На TXD0 смотрел - тоже чего то есть. Wireshark все еще ничего не видит.
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 14 2012, 16:18
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(V_M_Luck @ Aug 14 2012, 17:26) *
Посмотрел. TXEN есть. На TXD0 смотрел - тоже чего то есть. Wireshark все еще ничего не видит.

Странно.
У меня на F4 пакеты стабильно принимались, но отправка работала очень не стабильно (иногда без потерь, иногда 100% потерь). TXEN и TXD проявляли активность. Проблема была в том, что для этих ног GPIO были сконфигурированы со SPEED 2МГц. Поставил 100МГц - уже третий день ни одного ping-пакета не потеряно.
Проверьте на всякий случай свои настройки.
Кста, тоже пользуюсь wireshark (под Win XP) - проблем с потерей пакетов не замечал.
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 15 2012, 09:34
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(V_M_Luck @ Aug 14 2012, 17:26) *
Посмотрел. TXEN есть. На TXD0 смотрел - тоже чего то есть. Wireshark все еще ничего не видит.


А я так понимаю железка к компьютеру с Wireshrk'ом напрямую подключена? А если повторить попытку послать пакет, получается или нужен обязательно пакет от кого-то?
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 15 2012, 09:37
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



У меня ножки на 50МГц настроены. Так интересно, что отправка работает стабильно. Всего, кроме ARP запросов. Может есть какой косяк в lwip в самой структуре ARP запроса?

Сообщение отредактировал V_M_Luck - Aug 15 2012, 09:38
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 15 2012, 09:39
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(V_M_Luck @ Aug 15 2012, 13:37) *
У меня ножки на 50МГц настроены. Так интересно, что отправка работает стабильно всего, кроме ARP запросов. Может есть какой косяк в lwip в самой структуре ARP запроса?

Да вроде не известно о таком, выложите дамп этого запроса, глянем, но вряд ли там чего-то криминальное. А broadcast' ы в принципе от вашей железки улетают?
Go to the top of the page
 
+Quote Post
V_M_Luck
сообщение Aug 15 2012, 10:56
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Цитата(Quasar @ Aug 15 2012, 12:39) *
Да вроде не известно о таком, выложите дамп этого запроса, глянем, но вряд ли там чего-то криминальное. А broadcast' ы в принципе от вашей железки улетают?

Смотрел сразу после копирования в область DMA
Первым формируется вот это запрос:

FFFFFFFFFFFF - Destination MAC
30EC0068ADE1 - Мой MAC
0806 - ARP
0001 - HTYPE Ethernet
0800 - PTYPE IPv4
06 - HLEN
04 - PLEN
0001 - Operation
30EC0068ADE1 - SHA
C0A8000A- SPA (192.168.0.10)
000000000000 - THA
C0A8000A - TPA (192.168.0.10) ????

Почему-то SPA и TPA одинаковы. Я так думаю - проверка на конфликт адресов в подсети.
Далее идут запросы, в которых TPA = C0A8000B (192.168.0.11). Это как-раз адрес узла, на который идет отправка.

По поводу broadcast - вот он, единственный. И не уходит. Может где чего в MAC разрешить надо? Но что-то не нашел.

Цитата(Quasar @ Aug 15 2012, 12:34) *
А я так понимаю железка к компьютеру с Wireshrk'ом напрямую подключена? А если повторить попытку послать пакет, получается или нужен обязательно пакет от кого-то?

Извиняюсь, упустил пост.
Железка подключена напрямую. Повтор попыток отправки ничего не дает. Вот если с ПК придет ARP запрос, то с моего устройства уходит правильный ответ, MAC адрес ПК прописывается в ARP таблице и дальше все работает.
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 15 2012, 11:03
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(V_M_Luck @ Aug 15 2012, 14:56) *
Почему-то SPA и TPA одинаковы. Я так думаю - проверка на конфликт адресов в подсети.
Далее идут запросы, в которых TPA = C0A8000B (192.168.0.11). Это как-раз адрес узла, на который идет отправка.

По поводу broadcast - вот он, единственный. И не уходит. Может где чего в MAC разрешить надо? Но что-то не нашел.


Я так понимаю проблема с отправкой броадкаста. Если обмен с одним из хостов уже начался, может ли железка начать обмен с другим хостом? Ну то есть, после этого она может послать ARP броадкаст другому хосту?

ARP вроде правильный.

Сообщение отредактировал IgorKossak - Aug 15 2012, 11:19
Причина редактирования: избыточное цитирование
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:39
Рейтинг@Mail.ru


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