48394

[i] Тест стандартного примера TCP/IP

Дата последнего изменения: 30.11.2023 09:41:58
Материал из настоящей статьи, относящийся к микросхеме К1986ВЕ1QI, распространяется в том числе на микроконтроллеры К1986ВЕ1FI и К1986ВЕ1GI

TCP/IP - это аббревиатура термина Transmission Control Protocol/Internet Protocol (Протокол управления передачей/Протокол Internet). В терминологии вычислительных сетей протокол - это заранее согласованный стандарт, который позволяет двум компьютерам обмениваться данными. Фактически TCP/IP не один протокол, а несколько. Именно поэтому часто можно слышать, как его называют набором, или комплектом протоколов, среди которых TCP и IP - два основных. Статья рассмотрит работу со стандартным примером из установочного пака для IDE Keil под микроконтроллеры компании Миландр в пластиковых корпусах. При этом рекомендуем ознакомиться также с базовой статьей "Начальные сведения об Ethernet", в которой приводятся особенности работы блока Ethernet в микроконтроллере К1986ВЕ1QI.

Работа с командной строкой

После небольшой корректировки примера убедимся работоспособности. Данный проект реализует эхо-сервер на основе TCP/IP протокола. То есть пакеты, отправленные на микроконтроллер (далее МК), будут получены обратно. Работать будем с командной строкой Windows и командой ping. Соединяется персональный компьютер (далее ПК) с платой с помощью патч-корда, который идет в комплекте с отладочной платой. С помощью сочетания клавиш Win+R открываем окно "выполнить", прописываем команду cmd. Посмотреть IP-адрес компьютера можно с помощью команды

ipconfig –all

 Рисунок 1 - Определение IP адреса

На рисунке 1 можно увидеть IP. Здесь нужно понимать важную особенность. Она состоит в том, что в данный момент компьютер подключен к сети с выходом в Интернет. В настройках соединения по локальной сети стоит получение IP адреса автоматически. Это означает, что когда провод (patch-cord) будет извлечен из компьютера (и связи с Интернетом не будет), а плата будет подключена, этот IP изменится приблизительно через минуту. То есть компьютер будет посылать запросы маршрутизатору в сеть «Кто Я?» и, поскольку ответа он не получит, IP изменится с динамического на статический.

Воспользуемся ARP-таблицей. ARP — протокол сетевого уровня, предназначенный для преобразования IP-адресов (адресов сетевого уровня) в MAC-адреса (адреса канального уровня) в сетях TCP/IP. ARP-таблица отображает IP и MAC подключенных к серверу сетевых устройств. Чтобы отобразить таблицу воспользуемся командной:

arp -a

Рисунок 2 - Таблица ARP

Как можно видеть на рисунке 2, отобразились все IP, подключенные к серверу, и, как можно заметить, в рассматриваемой подсети 1ХХ.ХХ.Х.XX все IP динамические.

Ping

Подключим микроконтроллер(отладочную плату) к ПК с помощью патч-корда. Как было объяснено в предыдущем разделе, IP адрес ПК изменяется, после того как он будет отсоединен от сети Интернет. Для того чтобы проверить соединение c микроконтроллером при помощи утилиты ping необходимо, чтобы и контроллер и ПК находились обязательно в одной локальной сети.

Откроем проект в Keil и перейдем к заголовочному файлу tcpip.h, в котором задается IP адрес МК.

#define MYIP_1 192 // our internet protocol (IP) address
#define MYIP_2 168
#define MYIP_3 38
#define MYIP_4 2

Проверяем ещё раз IP-адрес командой ipconfig.

Рисунок 3 - Проверка IP-адреса

Видим, что IP ПК изменился. Также обратим внимание на маску подсети, значение которой говорит о том, что первые два числа узлов МК и ПК должны совпадать. Следовательно, изменим параметры MYIP на следующие:

#define MYIP_1 169 // our internet protocol (IP) address
#define MYIP_2 254
#define MYIP_3 40
#define MYIP_4 22

Первые два значения совпадают. Загрузим прошивку в микроконтроллер, выполним команду

ping 169.254.40.22

Рисунок 4 - Выполнение команды Ping

Наблюдаем успешную отработку микроконтроллером ICMP Echo-Request пакетов. Теперь можно вновь обратиться к ARP-таблице (команда ARP–a) и проверить, что отображается адрес микроконтроллера (рисунок 5).

Рисунок 5 - Проверка ARP-таблицы

Клиенты TCP: Hercules

Hercules - это программа для работы как с последовательными интерфейсами, так и с UDP/IP и TCP/IP - соединениями в режиме "клиент" и в режиме "сервер". Запустив программу, переходим во вкладку TCP Client, вводим IP.  Пробуем установить соединение с помощью утилиты ping. Контроллер реагирует.

Рисунок 6 - Интерфейс утилиты Hercules

Теперь установим соединение по TCP/IP с МК. Такое соединение в данном протоколе устанавливается с помощью "тройного рукопожатия". Для соединения очень важно указать порт. Поскольку мы устанавливаем TELNET-соединение, номер порта определён в файле tcpip.h следующим параметром:

#define TCP_PORT_TELNET 23

Зададим соответствующее значение в программе и подключаемся, оставив IP неизменным (рисунок 7).

Рисунок 7 - Задание порта

После установления соединения в нижнем поле введем текст для посылки в контроллер и нажмем Send. В основном окне программы Received/Send data видим отправленное сообщение, выделенное фиолетовым цветом, а то, что отвечает микроконтроллер - чёрным (рисунок 8).

Рисунок 8 - Эхо ответ микроконтроллера

Клиенты TCP: PuTTY

Протестируем пример на другом свободно распространяемом клиенте для различных протоколов удалённого доступа - PuTTY. Укажем опять тот же IP адрес и соответствующий порт, выберем тип соединения - TELNET (рисунок 9).
Рисунок 9 - Интерфейс PuTTy
И проверяем. Все символы, введённые с клавиатуры, МК тут же возвращает обратно (рисунок 10).
Рисунок 10 - Ответ микроконтроллера

Сохранить статью в PDF

Документация

Программное обеспечение

Теги

Была ли статья полезной?