該函式庫是一個模組化網路堆疊,可在乙太網路驅動程式之上實現 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