20.7. lwip_ping_freertos_socket
20.7.1. 概述
本示例展示FreeRTOS中使用ping
MCU ping指定网络设备(输入IP或者URL)
20.7.2. 硬件设置
使用USB Type-C线缆连接PC USB端口和PWR DEBUG端口
使用以太网线缆连接PC以太网端口和开发板RGMII或RMII端口
20.7.3. 工程配置
以太网端口配置:参考 以太网通用工程设置
以太网DHCP配置
在
CMakeLists.txt中,若 CMake 变量LWIP_DHCP为未定义,则默认设为0(静态 IP),并通过sdk_compile_definitions(-DLWIP_DHCP=${LWIP_DHCP})传入工程。默认(静态 IP):在netinfo.h中配置IP0_CONFIG/NETMASK0_CONFIG/GW0_CONFIG(或通过编译宏覆盖)。未使用 DHCP 时 DNS 默认为 114.114.114.114。启用 DHCP:配置工程时传入-DLWIP_DHCP=1(例如cmake -DLWIP_DHCP=1 ...),或在CMakeLists.txt中于if(NOT DEFINED LWIP_DHCP)之前将LWIP_DHCP设为 1。
DNS 配置(静态 IP 模式,与默认工程一致时适用):
默认使用 114.114.114.114。若 MCU 能 ping 国内域名(如 baidu)但无法解析国际域名(如 www.st.com),而 PC 正常,多为 DNS 服务器不同所致。可在
lwipopts_app.h中于#if !LWIP_DHCP前添加#define DNS_SERVER_CONFIG 192.168.100.1(或网关 IP),改用网关作为 DNS,与 PC 使用相同解析路径。
20.7.4. 运行示例
编译下载程序
默认编译(静态 IP,LWIP_DHCP=0)时串口终端示例如下。若使用DHCP(-DLWIP_DHCP=1)编译,会先打印DHCP State: ...等行再打印 IPv4;地址以实际网络为准。This is an ethernet demo: Ping With Socket API On FreeRTOS LwIP Version: 2.1.2 Enet phy init passed ! Link Status: Down Link Status: Up Link Speed: 1000Mbps Link Duplex: Full duplex IPv4 Address: 192.168.100.10 IPv4 Netmask: 255.255.255.0 IPv4 Gateway: 192.168.100.1 Please enter a target name(IP or URL):
输入IP或者URL,并按回车确认
www.hpmicro.com查看log
Pinging www.hpmicro.com [47.108.71.172] .................. from 47.108.71.172 bytes=60 icmp_seq=0 ttl=48 time=33 ms from 47.108.71.172 bytes=60 icmp_seq=1 ttl=48 time=33 ms from 47.108.71.172 bytes=60 icmp_seq=2 ttl=48 time=33 ms from 47.108.71.172 bytes=60 icmp_seq=3 ttl=48 time=33 ms