Эта библиотека представляет собой модульный сетевой стек, который реализует протоколы 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-time
Apache-2.0 © Стефан Каррез