Abstrakt: Jednoduchá aplikace demonstrující využití knihovních funkcí pro implementaci funkce PING.
Jednou ze základních demonstračních úloh je implementace zjednodušené verze příkazu ping, pomocí kterého lze například ověřit dostupnost určitého počítače v síti. Příkaz využívá služeb protokolu ICMP, který je určen k oznamování chybových stavů jako je například nedostupnost služby, nedosažitelnost počítače/směrovače, ale který též podporuje tzv. echo request, při kterém je odeslán zpět odesílateli paket s totožným datovým obsahem.
Aplikace se skládá z inicializační části (main) a dále funkce obsluhující přijate ICMP požadavky. V hlavní části je nainicializován DHCP klient tak, abychom získali IP adresu z DHCP serveru a nemuseli ji konfigurovat ručně. Poté následuje volání funkce icmp_bind(icmp_handler), která zaregistruje callback funkci icmp_handler, která bude vyvolána při každém příchodu ICMP paketu. V hlavní smyčce je postupně volána funkce ENC28J60_idle() a následně testován stav DHCP pomocí funkce dhcp_ready(). Obsluha DHCP je realizována pomocí časovače, pro jehož inicializaci a obsluhu slouží makra TIMERA_ISR_INIT a TIMERA_ISR_DHCP.
Při zadání valdiní IP adresy do terminálu se vyvolá postupně následující sekvence příkazů. Pomocí tx_init(ICMP_PROTO) se zinicializuje ICMP paket v odesílacím bufferu, poté se zapíše 23B dat pomocí tx_write_str("abcdefghijklmnopqrstuvw") a následuje dokončení paketu funkcí tx_close() a odeslání ICMP požadavku typu ICMP ECHO pomocí volání funkce icmp_send(dest_ip,ICMP_ECHO,ICMP_ECHO_CODE,1,1).
Při příchodu odpovědi je vyvolána callback funkce icmp_handler, která otestuje ICMP hlavičku a vypíše IP adresu, která generovala odpověď. Při příchodu požadavku na PING je vypsána do terminálu IP adresa odesílatele. Požadavek stejně tak jako ostatní ICMP pakety jsou zahozeny.
připojte k FITkitu rozšiřující modul Ethernet obsahující ENC28J60 a připojte modul do sítě LAN
přeložte aplikaci
naprogramujte MCU a FPGA a spusťte terminálový program.
jakmile aplikace obdrží odpověď od DHCP serveru, je možné použít PING
Aplikace nevyžaduje ke své činnosti nastavit kromě propojek umožňujících programování další propojky.