该库是一个模块化网络堆栈,可在以太网驱动程序之上实现 ARP、IPv4、UDP、DNS 和 DHCP 协议。它分为两部分:独立于硬件的内核和STM32F7xx和STM32F4xx板的特定驱动程序。这使您可以轻松地为您的项目提供 IPv4 网络访问。 EtherScope 项目利用该库来捕获和分析网络流量(请参阅 https://github.com/stcarrez/etherscope)。
支持以下协议:
核心部分没有依赖关系,而 STM32 驱动程序依赖于以太网板条箱,因为它实现了那里定义的 MDIO 接口。
要与 Alire 一起使用该库,只需运行alr with enet
(对于核心部分)。要使用 STM32 驱动程序,请运行alr with enet_stm32
。
请参阅 Wiki 上的更多详细信息。
我们提供了一个简单的 ping_text_io 演示。该演示独立于任何特定的板,您可以通过提供所需的运行时来构建它,例如:
alr -C demos/ping_text_io/ build -- -XRUNTIME=embedded-stm32f746disco
当您刷新可执行文件时,开发板将通过 DHCP 接收 IP 地址并 ping 默认网关。您可以看到使用标准 Ada.Text_IO 例程发出的 ping 消息。
还提供了四个附加演示应用程序来说明如何使用不同的网络功能。它们需要 STM32F429、STM32F746 或 STM32F769 Discovery 板才能运行。这些示例依赖于 Ada_Drivers_Library,并且不使用 Alire 进行构建。相反,请确保PATH
中有 GNAT ARM 交叉工具链,然后运行:
configure --with-board=stm32f746 # or stm32f769 or stm32f429
然后,执行make checkout
下载必要的依赖项。最后, make all
将构建所有四个演示。
演示应用程序使用 DHCP 客户端获取 IPv4 地址并获取默认网关和 DNS。
对于某些演示应用程序,您可以通过编辑文件demos/utils/demo.adb并取消注释并修改以下行来切换到静态 IP 配置:
Ifnet.Ip := ( 192 , 168 , 1 , 2 );
Ifnet.Gateway := ( 192 , 168 , 1 , 240 );
Ifnet.Dns := ( 192 , 168 , 1 , 240 );
并通过注释该行来禁用 DHCP 配置:
-- Dhcp.Initialize (Ifnet'Access);
ping 应用程序在多个主机上实现简单的 ping,并在 STM32F LCD 显示屏上显示 ping 计数器。该应用程序还将响应 ping 请求。
要构建 Ping 应用程序,您可以运行:
make ping
要刷新 ping 图像,您可以使用:
make flash-ping
echo 应用程序显示了一个简单的 UDP 服务器,用于回显收到的数据包 (RFC 862)。它监听 UDP 端口 7,循环等待 UDP 数据包,返回数据包并递增接收数据包的计数器,该计数器显示在 STM32 LCD 显示屏上。 echo 应用程序在文章中进行了描述:STM32F746 上的简单 UDP Echo 服务器
要构建 Echo 应用程序,您可以运行:
make echo
要闪烁回声图像,您可以使用:
make flash-echo
要测试 echo UDP 服务器,您可以在 GNU/Linux 上使用socat命令。例如:
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 服务器检索 GMT 日期,并在获得 NTP 同步后立即显示 GMT 时间。该应用程序还将响应 ping 请求。
要构建时间应用程序,您可以运行:
make time
要闪烁时间图像,您可以使用:
make flash-time
Apache-2.0 © Stephane Carrez