外观
网卡控制接口示例
2025-10-29
本文将介绍如何在开发环境中创建一个 netctrl 示例工程,并将其编译、下载到开发板运行。 通过该示例,读者可以快速上手 RuiChing 网卡控制功能,并掌握以下关键操作:
MAC 地址设置与查询
IP、GW、NETMASK 地址配置(静态)
DNS 服务器设置
DHCP 启用与关闭
完成本示例后,将能够独立实现网卡的基本配置与调试,为后续网络功能开发打下基础。
网卡控制接口
网卡控制主要使用到以下接口:
if_set_mac 设置网卡 MAC 地址
if_get_mac 获取网卡 MAC 地址
if_dhcp DHCP 控制接口
if_set_ip 设置网卡 IP、GW、NETMASK
if_get_ip 获取网卡 IP、GW、NETMASK
if_set_dns 设置网卡 DNS 地址
if_get_dns 获取网卡 DNS 地址
注:详细接口说明请参考 RuiChing API 的网络子系统部分。
硬件连接
需将网卡 0 连接到支持 DHCP SERVER 的交换机或电脑上,以保证开发板能正常使用 DHCP。

创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

运行示例
操作步骤
示例 if 命令说明
在控制台输入 if 命令,打印出命令可选项。
msh />if
Usage: if <command>
Commands:
mac_config - Set MAC address
mac_info - Get MAC address
dhcp.enable - Enable DHCP
dhcp.disable - Disable DHCP
ip_config - Set IP address
ip_info - Get IP address
dns_config - Set DNS server
dns_info - Get DNS serverMAC 地址配置和获取
在控制台中执行 if mac_config 配置网卡 e0 的 MAC 地址。
输入 ifconfig 查看网卡 e0 的 MAC 地址和代码中的一致。
applications/netdev_example.cstatic int mac_config(void) { uint8_t mac[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55}; if (if_set_mac(DEV_NAME, mac) != 0) { rt_kprintf("Failed to set MAC address\n"); return -1; } rt_kprintf("MAC address set successfully\n"); return 0; }msh />if mac_config MAC address set successfully在控制台中执行 if mac_info 获取网卡 e0 的 MAC 地址。
输入 ifconfig 查看网卡 e0 的 MAC 地址的信息和控制台打印的一致。
msh />mac_info MAC address: 00:11:22:33:44:55 msh />ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 11 22 33 44 55 FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 10.25.8.200 gw address: 10.25.8.254 net mask : 255.255.255.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 network interface device: e1 MTU: 1500 MAC: 08 00 27 ae 56 88 FLAGS: UP LINK_UP INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0
DHCP 开启和关闭
在控制台中执行 if dhcp_enable 开启 dhcp。
输入 ifconfig 查看网卡 e0 的 DHCP 状态
msh />if dhcp enable DHCP enabled successfully ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 11 22 33 44 55 FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 10.25.8.200 gw address: 10.25.8.254 net mask : 255.255.255.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 network interface device: e1 MTU: 1500 MAC: 08 00 27 ae 56 88 FLAGS: UP LINK_UP INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 msh />在控制台中执行 if dhcp_disable 关闭 dhcp。
输入 ifconfig 查看网卡 e0 的 DHCP 状态
msh />if dhcp enable DHCP enabled successfully ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 11 22 33 44 55 FLAGS: UP LINK_UP INTERNET_UP DHCP_DISABLE ETHARP BROADCAST IGMP ip address: 10.25.8.200 gw address: 10.25.8.254 net mask : 255.255.255.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 network interface device: e1 MTU: 1500 MAC: 08 00 27 ae 56 88 FLAGS: UP LINK_UP INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 msh />
IP 地址设置和获取
在控制台中执行 if ip_config 配置 网卡 e0 的 IP、GW、NETMASK。
输入 ifconfig 查看网卡 e0 的 IP 的信息和代码中的一致。
applications/netdev_example.cstatic int ip_config(void) { char ip_addr[16] = "192.168.1.100"; char gw_addr[16] = "192.168.1.1"; char nm_addr[16] = "255.255.255.0"; if (if_set_ip(DEV_NAME, ip_addr, gw_addr, nm_addr) != 0) { rt_kprintf("Failed to set IP address\n"); return -1; } rt_kprintf("IP address set successfully: %s\n", ip_addr); rt_kprintf("Gateway: %s\n", gw_addr); rt_kprintf("Netmask: %s\n", nm_addr); return 0; }msh />if ip_config IP address set successfully: 192.168.1.100 Gateway: 192.168.1.1 Netmask: 255.255.255.0 msh />ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 11 22 33 44 55 FLAGS: UP LINK_UP INTERNET_DOWN DHCP_DISABLE ETHARP BROADCAST IGMP ip address: 192.168.1.100 gw address: 192.168.1.1 net mask : 255.255.255.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 network interface device: e1 MTU: 1500 MAC: 08 00 27 ae 56 88 FLAGS: UP LINK_DOWN INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0在控制台中执行 if ip_info 获取 网卡 e0 的 IP、GW、NETMASK。
输入 ifconfig 查看网卡 e0 的 IP 的信息和控制台打印的一致。
msh />if ip info IP Address: 192.168.1.100 Gateway: 192.168.1.1 Netmask: 255.255.255.0 msh />ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 11 22 33 44 55 FLAGS: UP LINK UP INTERNET DOWN DHCP_DISABLE ETHARP BROADCAST IGMP ip address: 192.168.1.100 gw address: 192.168.1.1 net mask : 255.255.255.0 dns server #0: 10.25.8.254 dns server #1: 0.0.0.0 network interface device: e1 MTU: 1500 MAC: 08 00 27 ae 56 88 FLAGS: UP LINK_DOWN INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 msh />
DNS 地址配置和获取
在控制台中执行 if dns_config 配置网卡 e0 的 DNS 地址。
输入 ifconfig 查看网卡 e0 的 DNS 地址和代码中的一致。
applications/netdev_example.cstatic int dns_config(void) { char dns_server[16] = "223.5.5.5"; if (if_set_dns(DEV_NAME, 0, dns_server) != 0) { rt_kprintf("Failed to set DNS server\n"); return -1; } rt_kprintf("DNS server set successfully: %s\n", dns_server); return 0; }msh />if dns_config DNS server set successfully: 223.5.5.5 msh />在控制台中执行 if dns_info 获取网卡 e0 的 DNS 地址。
输入 ifconfig 查看网卡 e0 的 DNS 地址的信息和控制台打印的一致。
msh />if dns_info DNS Server: 223.5.5.5 msh />ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 11 22 33 44 55 FLAGS: UP LINK_UP INTERNET_DOWN DHCP_DISABLE ETHARP BROADCAST IGMP ip address: 192.168.1.100 gw address: 192.168.1.1 net mask : 255.255.255.0 dns server #0: 223.5.5.5 dns server #1: 0.0.0.0 network interface device: e1 MTU: 1500 MAC: 08 00 27 ae 56 88 FLAGS: UP LINK_DOWN INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 dns server #0: 223.5.5.5 dns server #1: 0.0.0.0
