W5500 на регистрах DHCP клиент
- Войдите на сайт для отправки комментариев
Пт, 25/12/2020 - 16:16
Доброго времени суток!
Изобретаю "велосипед", работаю с W5500 через регистры на МК STM32F303CCT6. Обмен по SPI реализовал через DMA, прикрутил прерывание для отслеживания статусов. TCP работает отлично, пытаюсь реализовать DHCP клиента и никак:
SHAR - MAC адрес железки
GWR - 255.255.255.255
SUBR - 0.0.0.0
SIPR - 0.0.0.0
Прописываю прерывания и маскирование
Sn_PORT - 68
Sn_DPORT - 67
Sn_DHAR - 255.255.255.255.255.255
Sn_DIPR - 255.255.255.255
Sn_MR - 0x80 | 0x02
даю команду OPEN
проверяю статус = SOCK_UDP
Далее формирую пакет DHCPDISCOVER
Отправляю его в полной аналогии как шлю и в режиме TCP
Прилетает прерывание по нулевому (отправляемому) сокету SEND OK
и тишина........то ли как то надо запустить прием UDP или пакет до роутера доходит но он не шлет ответ...
Вопросы:
1. что я делаю не так с W5500 или как запустить прием данных?
2. могу ли я посмотреть отправляемый пакет в локальной сети? Поставил на компе Wireshark но он не видит совсем UDP Multicast отправляемый DHCP пакет.
Подцепил модуль напрямую к компу, каким то чудом что то прилетело один раз модулю, сработало прерывание RECV, отсюда делаю предположение что если сокет открыт то прием не отключается. Но в любом случае Wireshark не видит вообще никаких пакетов :(
Взял готовый пакет отправляемый компом на Windows, сделал полностью аналогичное - не помогло.
Пакеты посмотреть можно, но есть огромное НО для этого. Нужен свич (роутер) или что-то другое сетевое, которое поддерживает технологию «зеркалирования» пакетов. По крайней мере лично мне другие способы не известны. Такая технология обычно есть в свечах 2 класса. Есть в некоторых 3 класса.
Хм, спасибо, где то лежал древний Cisco роутер, буду думать стОит ли геморрой по его настройке решению данной хотелки. Но почему напрямую подключенный комп не видит UDP пакетов тоже не понятно.
А кто их «смотрит» (какая программа)?
С Cisco не работал, но в основном был web интерфейс и подобная настройка там делается очень даже быстро и интуитивно понятно. Не сложнее vlan ))
Wireshark их (пакеты) смотрит на компе, первую попавшуюся по отзывам нашел бесплатную.
Не понимаю, то есть Вы 1. подключаете устройство и ПК напрямую и снифаете трафик или 2. есть «роутер», устройство и ПК в одной сети?
Если первый вариант, то dhcp сервер должен быть на ПК, если второй вариант, то я уже выше описал как можно пакеты «увидеть», иначе никак.
Да, я пробовал оба варианта
1 комп и w5500 воткнуты в роутер asus wl520 древний - роутер или не видит dhcp запроса и соответственно не отвечает или запрос ему приходит кривой, на компе пакеты udp отсылаемые с w5500 не видны
2 комп напрямую соединён с w5500, я понимаю что на компе нет dhcp сервера и отвечать он не может, но пакеты то он должен видеть, а их нет (
Бытовые роутеры вообще непредсказуемую логику фильтрации имеют. Забота о тупом клиенте, ети ее.
Значит бороться придется без роутера,поставить программку типа. DHCP сервера на комп (
Это самое надёжное.
Нужно нарыть тупой хаб, а на комп прогу снифер пакетов.
В пн плотно займусь
частично победил, подключил W5500 крос кабелем к компу, стал наблюдать что что отправляю, немного другая инициализация нужна модулю не как обычно я делал при известных сетевых (ip,mask,gw) настройках:
Sn_Port = 68 порт источника
Sn_MR = Mode_UDP
Sn_CR даем команду OPEN
Sn_DPORT = 67 порт назначения
Sn_DIPR = 255.255.255.255 адрес назначения
Далее отправляем обычным методом пакет DHCP
Снифер прекрасно увидел пакет, корректно все поля, все красиво, модуль W5500 увидел все отправляемые от компа пакеты.
НО, когда я воткнул все обратно в роутер ASUS WL520 древний - не хочет он отвечать на мой запрос DHCPDISCOVER, хотя пакет абсолютно идентичен пакету с компьютера, разница только в MAC адресе.
Update: поставил паузу 2 секунды после включения модуля W5500 и о чудо....Роутер что то ответил, буду парсить - расскажу о результатах.
прошло 4 года... :о)