openvela之网络工具
本文系统介绍了openvela开发环境中常用的网络工具配置与使用方法。ifconfig工具用于网络接口配置,包括IP地址、子网掩码等设置;iperf系列工具(iperf/iperf2/iperf3)提供网络性能测试功能;tcpdump支持网络数据包抓取与分析;curl和ftp工具实现文件传输功能。文章详细说明了各工具的编译配置要求、典型命令示例和实用技巧,为开发者提供了全面的网络调试参考。这些工具
在 openvela 开发环境中,网络工具是设备开发与调试的重要支撑。本文将系统整理 ifconfig、iperf、tcpdump、curl、iperf2、iperf3 及 ftp 等常用网络工具的配置方法、使用技巧和实战案例,帮助开发者快速掌握网络调试技能。
一、网络接口配置工具:ifconfig
ifconfig 是配置和管理网络接口的基础工具,支持 IP 地址、子网掩码、网关等核心网络参数的设置。
核心功能
- 设置静态 IP 或通过 DHCP 获取动态 IP
- 配置子网掩码、网关地址和 DNS 服务器
- 修改 MAC 地址(需驱动支持)
- 查看网络接口状态
配置前提
使用前需在编译时开启网络支持和 proc 文件系统:
# 打开图形化配置界面
./build.sh vendor/openvela/boards/vela/configs/goldfish-armeabi-v7a-ap menuconfig
启用以下配置项:
CONFIG_NET=y
CONFIG_NETDEV_STATISTICS=y
CONFIG_FS_PROCFS=y
CONFIG_FS_PROCFS_EXCLUDE_NET=n
CONFIG_NSH_DISABLE_IFCONFIG=n
常用命令示例
- 查看所有接口配置:
ifconfig
- 启用 / 关闭网卡:
ifup
eth0 /ifdown
eth0 - 设置静态 IP:ifconfig eth0 10.0.1.3
- 完整配置(IP + 网关 + 掩码 + DNS):
ifconfig eth0 10.0.1.3 gateway 10.0.1.1 netmask 255.255.255.0 dns 8.8.8.8
- 配置 IPv6 地址:ifconfig eth0 inet6 add 2001:db8::/32
二、网络性能测试工具:iperf 与 iperf2、iperf3
这类工具专注于带宽测量与网络性能评估,三者功能类似但各有特点。
1. iperf(基础版)
功能特点
- 支持 TCP/UDP 带宽测试
- 可测试 local socket 和 rpmsg socket 性能
配置要求
CONFIG_NETUTILS_IPERF=y
CONFIG_NETUTILS_IPERFTEST_DEVNAME="eth0" # 确保网卡名称正确
核心用法
- 建立 TCP 服务器:
iperf -s -i 1
- 客户端连接:
iperf -c <server IP> -i 1
- UDP 测试:添加
-u
参数(如iperf -s -i 1 -u
) - 常规 socket 测试:
- iperf -c <IP地址>
- 特殊 socket 测试:
- rpmsg socket:
iperf -s --rpmsg <name>
(服务器);iperf -c <cpu> --rpmsg <name>
(客户端) - local socket:
iperf -s --local <path>
(服务器);iperf -c <path> --local
(客户端)
- rpmsg socket:
2. iperf2(增强版)
功能扩展
- 支持双向传输测试
- 可指定 TCP 窗口大小和 MSS(最大分段大小)
- 更详细的带宽统计与丢包分析
配置要求
CONFIG_UTILS_IPERF2=y
关键参数
-u
:使用 UDP 协议(测试物理带宽更准确)-t
:设置测试时间(默认 10 秒)-i
:报告间隔时间-l
:缓冲区大小(默认 16KB)-w
:TCP 窗口大小
注意事项
- 同一实例中不可同时启动多个 iperf2 进程
- 服务器端避免设置过大-t参数(建议仅在客户端设置)
3. iperf3(优化版)
核心改进
- 单个服务器可同时支持 TCP 和 UDP 客户端连接
- 优化了并发连接处理
配置要求
CONFIG_UTILS_IPERF3=y
CONFIG_UTILS_IPERF3_PRIORITY=89 # 需低于网卡驱动线程优先级
注意事项:
- iperf2 和 iperf3 只能选择其中一个进行编译,同时启用会导致符号冲突。
- 优先级设置:CONFIG_UTILS_IPERF3_PRIORITY 的值需要低于网卡驱动线程的优先级,否则可能导致 UDP客户端行为异常。通常情况下,设置为 89 可以满足绝大多数场景的需求。
三、网络抓包工具:tcpdump
tcpdump 是抓取和分析网络数据包的利器,常与 Wireshark 配合使用。
配置要求
CONFIG_NET_PKT=y
CONFIG_SYSTEM_TCPDUMP=y
# 不同文件系统对Stack的需求有差异,建议配置为8192
CONFIG_SYSTEM_TCPDUMP_STACKSIZE=8192 # 建议值
基本操作
- 准备工作:
- 确保有存储目录(如/data1)
- SIM 环境下可挂载宿主机目录:
# 以SIM为例,挂载host上的目录到/data1
mount -t hostfs -o fs=. /data1
- 抓包命令:
- 基本抓包:
# 将eth0的网络包保存至test.pcap
tcpdump -i eth0 -w /data1/test.pcap
- 后台抓包:
# 后台将eth0的网络包保存至test.pcap
tcpdump -i eth0 -w /data1/test.pcap &
- 退出方式:
- 前台:
Ctrl+C
(正常保存文件) - 后台:
kill -2 <tcpdump的PID>
(等同于 Ctrl+C)
- 前台:
结果分析
生成的.pcap
文件可通过 Wireshark
打开分析:
- 菜单
File > Open
加载文件 - 查看数据包详细信息(包括源 / 目的 IP、端口、协议类型等)
四、文件传输工具:curl 与 ftp
两类工具均用于文件传输,适用场景不同。
1. curl(多功能传输工具)
配置要求
CONFIG_LIB_ZLIB=y
CONFIG_CRYPTO_MBEDTLS=y
CONFIG_LIB_CURL=y
CONFIG_UTILS_CURL=y
注意
确保以上选项已正确配置,以满足 curl 工具运行所需的依赖。
常用场景
- 下载文件:
# 从HTTP服务器下载
curl -o /data/ota.zip http://<PC_IP>:8000/ota.zip &
说明
将 YOUR_FILE_SERVER_IP 替换为 PC 的 IP 地址。此命令会将服务器上的 ota.zip 文件保存到设备的/data/ota.zip
路径下。
- 上传文件:
PC 端启动上传服务(需 Python 环境):
- 在本地电脑上创建一个 Python 脚本 upload.py,内容如下:
#!/bin/env python3
import os, shutil, uvicorn, socket
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/upload/")
async def create_upload_file(file: UploadFile = File(...)):
with open(file.filename, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
return {"filename": file.filename}
def my_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
if __name__ == "__main__":
print("curl -X POST -F file=@./a.log %s:4321/upload/" % my_ip())
uvicorn.run(app, host="0.0.0.0", port=4321)
# 安装依赖
pip install uvicorn fastapi python-multipart
# 运行上传脚本
sudo chmod 777 upload.py
./upload.py
- 脚本运行后会启动一个 HTTP 服务,并打印出上传文件的
curl
命令示例,例如:
curl -X POST -F file=@./a.log <PC_IP>:4321/upload/
- 上传设备文件到本地电脑。
在设备连接网络后,运行以下命令将设备文件上传到本地电脑:
curl -X POST -F file=@/data/trace.log http://<PC_IP>:4321/upload/
- 注意事项。
- 如果上传失败,请在本地电脑上运行以下命令检查网络配置:
ifconfig
- 确认本地电脑的 IP 地址(WAN 口 IP),并替换命令中的 <PC_IP>。
- 确保设备和本地电脑在同一网络下,且本地电脑的防火墙允许端口 4321 的访问。
- 网页内容获取:
curl www.example.com
- 跟踪重定向:
curl -L -o /data/test.mp3 https://example.com
(-L参数处理重定向)
2. FTP(文件传输协议)
配置要求
CONFIG_EXAMPLES_FTPD=y
CONFIG_NETUTILS_FTPD=y
CONFIG_NET_TCPBACKLOG=y
操作流程
- 操作使用(设备端):
# 开启ftpd服务,并预置三个可供登陆的用户
ftpd_start -4
# 关闭ftpd服务
ftpd_stop
- PC 端连接与操作:
- 连接:ftp <设备IP>(如ftp 192.168.28.94)
- 下载文件:get <远程文件> <本地文件名>
- 上传文件:put <本地文件> <远程文件名>
- 目录操作:cd(切换目录)、ls(列表)、pwd(当前路径)
从设备下载文件示例:
# PC端执行"ftp <设备实际 IP>"连接到openvela
# 示例 IP 地址为 192.168.28.94,请根据实际网络环境替换。
Connected to 192.168.28.94.
220 NuttX FTP Server
Name (192.168.28.94:usrname): root
331 Password required for root
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd data
250 CWD command successful
ftp> pwd
257 "/data" is current directory.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
drw-r--r-- 1 1001 512 0 Mar 2 07:44 etc
drwxrwx--- 1 1001 512 0 Mar 2 07:44 log
drwxrwx--- 1 1001 512 0 Mar 2 07:44 mico
drw-rw-rw- 1 1001 512 0 Mar 2 07:44 miot
drwxrwxrwx 1 1001 512 0 Mar 2 07:44 misc
-rw-r--r-- 1 1001 512 12288 Mar 2 07:44 persist.db
226 Transfer complete
ftp> get persist.db persist.db.pc # 下载文件 persist.db,并将其保存为 persist.db.pc
local: persist.db.pc remote: persist.db
200 PORT command successful
150 Opening data connection
226 Transfer complete
12288 bytes received in 0.01 secs (959.3860 kB/s)
ftp>
文件上传到设备示例:
ftp> put persist.db.pc persist.db.dev # 上传文件 persist.db.pc,并将其保存为 persist.db.dev
local: persist.db.pc remote: persist.db.dev
200 PORT command successful
150 Opening data connection
226 Transfer complete
12288 bytes sent in 0.00 secs (127.3777 MB/s)
ftp> pwd
257 "/data" is current directory.
总结
openvela 提供的网络工具覆盖了从接口配置、性能测试到文件传输的全流程需求。实际开发中,需根据场景选择合适工具:
- 网络配置用ifconfig
- 带宽测试优先iperf3(支持并发连接)
- 数据包分析用tcpdump+Wireshark
- 简单文件传输用curl,复杂目录操作选FTP
使用时需注意各工具的配置依赖和版本兼容性,确保测试环境与实际设备的一致性,以获得准确结果。

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐
所有评论(0)