Esta biblioteca é uma pilha de rede modular que implementa protocolos ARP, IPv4, UDP, DNS e DHCP sobre um driver Ethernet. É dividido em duas partes: um núcleo independente de hardware e um driver específico para placas STM32F7xx e STM32F4xx. Isso permite que você forneça acesso de rede IPv4 ao seu projeto com facilidade. A biblioteca é utilizada pelo projeto EtherScope para capturar e analisar o tráfego de rede (consulte https://github.com/stcarrez/etherscope).
Os seguintes protocolos são suportados:
A parte central não possui dependências, enquanto o driver STM32 depende da caixa ethernet, pois implementa a interface MDIO ali definida.
Para usar a biblioteca com Alire basta executar alr with enet
(para a parte principal). Para usar o driver STM32, execute alr with enet_stm32
.
Veja mais detalhes no Wiki.
Fornecemos uma demonstração simples de ping_text_io. Esta demonstração é independente de qualquer placa específica e você pode construí-la fornecendo o tempo de execução necessário, por exemplo:
alr -C demos/ping_text_io/ build -- -XRUNTIME=embedded-stm32f746disco
Quando você atualiza o executável, a placa receberá um endereço IP via DHCP e executará ping no gateway padrão. Você pode ver as mensagens de ping emitidas usando as rotinas padrão Ada.Text_IO.
Quatro aplicativos de demonstração adicionais são fornecidos para ilustrar como você pode usar os diferentes recursos de rede. Eles exigem uma placa Discovery STM32F429, STM32F746 ou STM32F769 para funcionar. Esses exemplos dependem de Ada_Drivers_Library e não usam Alire para construção. Em vez disso, certifique-se de ter o conjunto de ferramentas cruzadas GNAT ARM em seu PATH
e execute:
configure --with-board=stm32f746 # or stm32f769 or stm32f429
Em seguida, execute make checkout
para baixar as dependências necessárias. Finalmente, make all
criará todas as quatro demos.
Os aplicativos de demonstração usam o cliente DHCP para obter um endereço IPv4 e obter o gateway padrão e o DNS.
Para alguns aplicativos de demonstração, você pode mudar para uma configuração de IP estático editando o arquivo demos/utils/demo.adb e removendo o comentário e modificando as seguintes linhas:
Ifnet.Ip := ( 192 , 168 , 1 , 2 );
Ifnet.Gateway := ( 192 , 168 , 1 , 240 );
Ifnet.Dns := ( 192 , 168 , 1 , 240 );
e desabilite a configuração do DHCP comentando a linha:
-- Dhcp.Initialize (Ifnet'Access);
O aplicativo ping implementa um ping simples em vários hosts e exibe os contadores de ping no display LCD do STM32F. O aplicativo também responderá a solicitações de ping.
Para construir o aplicativo Ping você pode executar:
make ping
E para atualizar a imagem do ping, você pode usar:
make flash-ping
O aplicativo echo mostra um servidor UDP simples que ecoa o pacote recebido (RFC 862). Ele escuta na porta UDP 7, faz um loop para esperar pelos pacotes UDP, os retorna e incrementa um contador de pacotes recebidos que é exibido no display LCD do STM32. A aplicação echo é descrita no artigo: Simple UDP Echo Server on STM32F746
Para construir o aplicativo Echo você pode executar:
make echo
E para atualizar a imagem de eco, você pode usar:
make flash-echo
E para testar o servidor echo UDP, você pode usar o comando socat no GNU/Linux. Por exemplo:
echo -n ' Hello! Ada is great! ' | socat - UDP:192.168.1.156:7
O aplicativo DNS mostra um resolvedor de cliente DNS simples que consulta um DNS para resolver uma lista de hosts.
Para construir o aplicativo DNS você pode executar:
make dns
E para atualizar a imagem DNS, você pode usar:
make flash-dns
O aplicativo de horário usa o cliente NTP para recuperar a data GMT de um servidor NTP e exibe o horário GMT assim que a sincronização NTP é obtida. O aplicativo também responderá a solicitações de ping.
Para construir o aplicativo Time você pode executar:
make time
E para exibir a imagem da hora, você pode usar:
make flash-time
Apache-2.0 © Stephane Carrez