Эта библиотека представляет собой модульный сетевой стек, который реализует протоколы ARP, IPv4, UDP, DNS и DHCP поверх драйвера Ethernet. Он разделен на две части: аппаратно-независимое ядро и специальный драйвер для плат STM32F7xx и STM32F4xx. Это позволяет вам легко обеспечить доступ к сети IPv4 для вашего проекта. Библиотека используется проектом EtherScope для захвата и анализа сетевого трафика (см. https://github.com/stcarrez/etherscope).
Поддерживаются следующие протоколы:
Основная часть не имеет зависимостей, тогда как драйвер STM32 зависит от крейта Ethernet, поскольку он реализует определенный там интерфейс MDIO.
Чтобы использовать библиотеку с Alire, просто запустите alr with enet (для основной части). Чтобы использовать драйвер STM32, запустите alr with enet_stm32 .
Подробности смотрите в Wiki.
Мы предоставляем простую демонстрацию ping_text_io. Эта демонстрация не зависит от какой-либо конкретной платы, и вы можете создать ее, предоставив необходимую среду выполнения, например:
alr -C demos/ping_text_io/ build -- -XRUNTIME=embedded-stm32f746discoКогда вы прошиваете исполняемый файл, плата получит IP-адрес через DHCP и пропингует шлюз по умолчанию. Вы можете просмотреть сообщения ping, отправленные с помощью стандартных процедур Ada.Text_IO.
Предоставляются четыре дополнительных демонстрационных приложения, демонстрирующих, как можно использовать различные сетевые функции. Для их работы требуется плата обнаружения STM32F429, STM32F746 или STM32F769. Эти примеры зависят от Ada_Drivers_Library и не используют Alire для сборки. Вместо этого убедитесь, что в вашем PATH есть кросс-инструментарий GNAT ARM, а затем запустите:
configure --with-board=stm32f746 # or stm32f769 or stm32f429 Затем выполните make checkout чтобы загрузить необходимые зависимости. Наконец, make all соберет все четыре демо-версии.
Демонстрационные приложения используют DHCP-клиент для получения адреса IPv4, шлюза по умолчанию и DNS.
Для некоторых демонстрационных приложений вы можете переключиться на конфигурацию статического IP-адреса, отредактировав файл demos/utils/demo.adb , а также раскомментировав и изменив следующие строки:
Ifnet.Ip := ( 192 , 168 , 1 , 2 );
Ifnet.Gateway := ( 192 , 168 , 1 , 240 );
Ifnet.Dns := ( 192 , 168 , 1 , 240 );и отключите настройку DHCP, закомментировав строку:
-- Dhcp.Initialize (Ifnet'Access); Приложение ping реализует простой пинг на нескольких хостах и отображает счетчики пингов на ЖК-дисплее STM32F. Приложение также будет отвечать на пинг-запросы.
Чтобы создать приложение Ping, вы можете запустить:
make pingА чтобы прошить образ ping, вы можете использовать:
make flash-pingПриложение echo показывает простой UDP-сервер, который повторяет полученный пакет (RFC 862). Он прослушивает UDP-порт 7, ожидает пакетов UDP, возвращает их и увеличивает счетчик полученных пакетов, который отображается на ЖК-дисплее STM32. Приложение echo описано в статье: Простой UDP Echo Server на STM32F746.
Чтобы создать приложение Echo, вы можете запустить:
make echoА чтобы прошить эхо-изображение, вы можете использовать:
make flash-echoА чтобы протестировать сервер echo UDP, вы можете использовать команду socat в GNU/Linux. Например:
echo -n ' Hello! Ada is great! ' | socat - UDP:192.168.1.156:7Приложение DNS показывает простой преобразователь DNS-клиента, который запрашивает DNS для разрешения списка хостов.
Чтобы создать приложение DNS, вы можете запустить:
make dnsА чтобы прошить образ DNS, можно использовать:
make flash-dnsПриложение времени использует клиент NTP для получения даты по Гринвичу с сервера NTP и отображает время по Гринвичу, как только будет получена синхронизация NTP. Приложение также будет отвечать на пинг-запросы.
Чтобы создать приложение Time, вы можете запустить:
make timeА чтобы прошить изображение времени, вы можете использовать:
make flash-timeApache-2.0 © Стефан Каррез