| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Связать комп с микриком по UDP |
| Автор: Valimor 12.2.2015, 20:37 | ||||||
Есть микроконтроллер на котором реализован UDP сервер со следующими параметрами:
При инициализации используется следующая конструкция:
которая соответственно инициализирует ethernet модуль устройства, и сопоставляет ему ip адрес. Будет ли конннектиться к нему комп, если просто к нему обращаться по ip адресу(arp присутствует)? Или нужно конфигурировать сеть прописав шлюз(gateway), DNS и маску(network mask) ? По типу:
И что потом прописывать в полях на компе(снизу картинка)? DHCP не используется, потому, что нужны жёстко закрепленные IP адреса за устройством и компом. ![]() |
| Автор: tzirechnoy 13.2.2015, 03:54 |
| Ну откуда мы знаем, будет ли коннэктиться твой комп к твоему микроконтроллеру, если не имеем ни малейшэго представления ни о том, что за программа в микроконтроллере, ни дажэ что это за микроконтроллер, да и как комп к нему подсоединён? Добавлено через 1 минуту и 4 секунды Хотя, конечно, можно дать тривиальны и правильный ответ: не будет. С Вашым уровнем понимая -- у вас и два компа несконнэктятся... |
| Автор: Valimor 13.2.2015, 05:07 | ||
Программа написана с помощью библиотечных функций предоставляемых производителем, микроконтроллер PIC18F67J60. Соответственно там реализовано: канальный уровень ARP, IP, IGMP, транспортный UDP, физический уровень через Ethernet. При этом физический уровень реализован в железе. Это вам как-то поможет? Я лишь спрашивал будет ли коннектиться без конфигурирования сети на микрике(без gateway,networkmask), нужно ли конфигурировать сеть И КАКИЕ параметры вводить в компе соответсвенно исходным данным зашитым в микрике (IP, Gateway, DNS, NetworkMask) которые я вам представил. И ВСЁ Добавлено через 9 минут и 1 секунду как-то подумал что это очевидно: естественно при начальной отладке программы комп и микроконтроллер соединяются напрямую без всяких промежуточных устройств, когда все отладится на этой стадии, то уже можно будет думать и о локалке. А пока так. DNS прописывать обязательно? вообще за что он отвечает? если я правильно понимаю, то это для выдачи IP адреса по имени хоста(то есть когда мы прописываем mail.ru в адресной строке браузера и т.п.) и это больше связано с протоколом TCP(как постоянно держащим соединение), а не с UDP |
| Автор: feodorv 13.2.2015, 07:54 | ||
Это должно быть прописано в руководстве по устройству. Думаю, без DNS жить будет. За трансляцию имён в IP и наоборот.
Нет. Думаю, что Ваше устройство куда-то должно писать логи, а в этих логах оно может подменять IP-адреса именами станций. Может, ещё зачем-то нужно. Все должно быть описано в руководстве. |
| Автор: tzirechnoy 13.2.2015, 11:24 | ||||
Да мне-то что помогать -- у меня и PIC18 с Ethernet нету, у меня всё хорошо.
То есть Microchip TCPIP. Вот только в нём судя по документацыи нет функцыи Ethernet_Init... Тем более, что сигнатура у неё странная. Такую в первой половине 80-х годов прошлого века могли бы сделать. То есть так Ваша программа, конечно, не заработает. Вероятно, дажэ не скомпилируется. Вообще, посоветовать могу найти и прочесть Stevens, TCP/IP Illustrated. Если кажэтся много -- то в концэ доки microchip tcpip есть список RFC, прочитать относящиеся к тебе (ARP, IP, ICMP, UDP). Поскольку, ну напишэт тебе кто-то один раз правильный комплект адресов и масок -- чем это тебе поможэт если ты дажэ азов не понимаешь? Только барахло полурабочее плодить... |
| Автор: Alexeis 13.2.2015, 12:42 |
| Если устройства не разделяет шлюз, то для работы достаточно установить IP и маску подсети. Шлюз нужно указывать, только если одно устройство во внешней подсети и пакет должен пройти через шлюз. Т.е. адаптер видит, что IP адрес не является адресом текущей подсети, следовательно такой пакет нужно отправить на шлюз вместо узла напрямую. Вот в этом случае нужно указывать шлюз. Далее шлюз определит находится ли узел назначения в его собственной внешней подсети, если это не так, то шлюз отправит пакет уже своему шлюзу и так до ближайшего маршрутизатора. |
| Автор: Valimor 14.2.2015, 07:37 |
| Устройство уже запускалось уже. Все прекрасно соединилось, пинговалось, устройство отвечало на ARP запросы , слало UDP пакеты, а потом я даже не понял, что случилось, то ли это мои изменения в прошивке, хотя я там только ответы на UDP пакеты дописывал(вроде), то ли в компе что-то ёкнулось, но комп его не видит, и на ARP запросы оно не отвечает и соответственно связи с ним нет. Покалупавшись с ним день и убедившись, что в прошивке никаких ошибок нет(на мой взгляд), я и создал этот пост, потому что все таки думал, что я неправильно что-то ввожу в компе. На данный момент оживить связь так и не удалось, уже пробовал прошивать той прошивкой на основе которой я все писал - устройство так же молчит. Ах да забыл написать: на платке где микроконтроллер стоит предусмотрены 2 светодиода - 1 показывает линк, другой сигнализирует о принимаемых и отправляемых пакетах, так вот светодиод линка загорается сразу при поключении к компу и горит постоянно, второй светодиод мигает, когда я с компа пытаюсь пропинговать устройство или пробую отправит на него пакеты, то есть нормальная ситуация , всё как и должно быть при нормальной связи)) и судя по всему устройств пакеты принимает, но не отвечает на них)). И еще у меня таких платок целых 3 штуки и на всех одинаковая ситуация, я бы понимаю, что я мог как-нибудь спалить ethernet модуль на одной из них, но на всех трех это врятле)) так что с железом все в порядке сразу говорю, да и потребляет оно так как и должно. Вот такая херовая ситуация)) ещё я вроде менял MAC и первоначально у меня был чуть другой, сегодня буду пробовать менять и смотреть, что будет. P.S. имею плохую привычку не сохранять рабочие прошивки, так что как вы понимаете рабочей у меня не осталось)) |
| Автор: tzirechnoy 14.2.2015, 07:58 |
| А, да, дружэский совет: возьмите Wireshark. Очень, знаете, помогает узнать -- отвечает что-то или нет. |
| Автор: Alexeis 17.2.2015, 11:39 | ||
Мак адреса почти ни на что не влияют. Они должны быть уникальны в пределах одной подсети. На счет прошивок, рекомендую завести svn . И комитится каждый раз как получается решение лучше предыдущего с пометками что было изменено. Я поднимаю svn даже на машинах где отлаживаю бинарники. Очень удобно. Сперва кажется что залил исправленную версию, а на практике оказывается что исправленная версия хуже работает чем не исправленная |
| Автор: tzirechnoy 17.2.2015, 11:56 | ||
svn ужэ уходит в прошлое, чему есть вполне обстоятельные причины. Так что git. |