本应用笔记介绍 rt-thread netutils 的使用方法,帮助开发者更好地使用 rt-thread netutils 组件来解决网络开发过程中遇到的问题。
本文的目的和背景
在进行网络相关的产品开发和调试时,一些好用的小工具往往能取到事半功倍的效果。 rt-thread netutils 组件基于此应用场景,开发和封装了一系列简洁好用的网络工具集合,为开发者提供便利。
为了方便用户开发网络应用,rt-thread 将常用的网络工具制作 netutils 组件包,通过 env 动态配置,即开即用, 有效降低资源的占用。
本文的结构
netutils 组件介绍
ping 工具的配置和使用
ntp 时间同步工具的配置和使用
tftp 文件传输工具的使用
iperf 网络带宽测试工具的配置和使用
其他网络调试工具的配置和使用
问题阐述
本应用笔记将围绕下面几个问题来介绍 rt-thread netutils 组件。
rt-thread netutils 主要包括哪些?分别有什么功能?
如何使用 ping 工具诊断网络稳定性?
如何测试网络稳定性和带宽?
如何通过网络传输文件?
问题的解决
netutils 组件介绍
rt-thread netutils 作为网络工具合集,既有用于测试调试的 ping 命令, 同步时间的 ntp 工具, 性能和带宽测试的 iperf 、 netio,还有在嵌入式系统中广泛使用的轻量级文件传输工具 tftp,方便地通过网络完成两个设备间的文件互传。另外, rt-thread 还针对开发中的实际问题,提供了一些高级的辅助工具,如可以远程登录到 rt-thread finsh/msh shell 的 telnet 工具,以及基于 lwip 的网络抓包工具 tcpdump。
下面是 rt-thread netutils的分类和简介:
每个小工具可使用 menuconfig 独立控制启用/停用,并提供了 finsh/msh 的使用命令。首先打开 env 工具,进入 bsp 目录,在 env 命令行输入 menuconfig 进入配置界面配置工程,根据需求选择合适的 netutils 功能,如图所示(注意: ping 和 tftp 依赖于 lwip,需要先开启 lwip 的依赖后才能显示)
rt-thread online packages -> iot - internet of things -> netutils: networking utilities for rt-thread
ping工具的配置与使用
介绍
ping是一种网络诊断工具,用来测试数据包能否通过 ip 协议到达特定主机。估算与主机间的丢失数据包率(丢包率)和数据包往返时间(网络时延,round-trip delay time)
使用
ping 工具依赖 lwip,需要先在 env 工具 开启 lwip 的依赖才可见,步骤如下:
-> rt-thread components -> network stack -> light weight tcp/ip stack -> enable lwip stack
在netutils菜单栏使能 ping 选项:
rt-thread online packages -> iot - internet of things -> netutils: networking utilities for rt-thread [*] enable ping utility
ping 支持访问ip 地址或域名,使用 finsh/msh 命令进行测试,大致使用效果如下:
ping 域名
msh />ping rt-thread.org 60 bytes from 116.62.244.242 icmp_seq=0 ttl=49 time=11 ticks 60 bytes from 116.62.244.242 icmp_seq=1 ttl=49 time=10 ticks 60 bytes from 116.62.244.242 icmp_seq=2 ttl=49 time=12 ticks 60 bytes from 116.62.244.242 icmp_seq=3 ttl=49 time=10 ticks msh />
ping ip
msh />ping 192.168.10.12 60 bytes from 192.168.10.12 icmp_seq=0 ttl=64 time=5 ticks 60 bytes from 192.168.10.12 icmp_seq=1 ttl=64 time=1 ticks 60 bytes from 192.168.10.12 icmp_seq=2 ttl=64 time=2 ticks 60 bytes from 192.168.10.12 icmp_seq=3 ttl=64 time=3 ticks msh />
ntp工具的配置与使用
介绍
ntp是网络时间协议(network time protocol),它是用来同步网络中各个计算机时间的协议。在 rt-thread 上实现了 ntp 客户端,连接上网络后,可以获取当前 utc 时间,并更新至 rtc 中。
使用
在 netutils 菜单栏使能 ntp 选项:
rt-thread online packages -> iot - internet of things -> netutils: networking utilities for rt-thread [*] enable ntp(network time protocol) client
获取 utc 时间utc 时间又称世界统一时间、世界标准时间、国际协调时间。北京时间为 utc+8 时间,比 utc 时间多 8 小时,或者理解为早 8 小时。
api:time_t time_t ntp_get_time(void)
参数
描述
无
无
返回
描述
>0
当前 utc 时间
=0
获取时间失败
示例代码:
#include void main(void) { time_t cur_time; cur_time = ntp_get_time(); if (cur_time) { rt_kprintf(ntp server time: %s, ctime((const time_t*) &cur_time)); } }
获取本地时间
本地时间比 utc 时间多了时区的概念,例如:北京时间为东八区,比 utc 时间多 8 个小时。
在menuconfig中可以设置当前时区,默认为8
api:time_t ntp_get_local_time(void)
该 api 使用方法与ntp_get_time()类似
同步本地时间至 rtc
如果开启 rtc 设备,还可以使用下面的命令及 api 同步 ntp 的本地时间至 rtc 设备。
finsh/msh 命令效果如下:
msh />ntp_sync get local time from ntp server: sat feb 10 15:22:33 2018 the system time is updated. timezone is 8. msh />
api:time_t ntp_sync_to_rtc(void)
注意事项1、ntp api 方法执行时会占用较多的线程堆栈,使用时保证堆栈空间充足(≥1.5k);2、ntp api 方法不支持可重入,并发使用时,请注意加锁。
tftp工具的配置与使用
介绍
tftp(trivial file transfer protocol, 简单文件传输协议)是 tcp/ip 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69,比传统的 ftp 协议要轻量级很多,适用于小型的嵌入式产品上。
rt-thread 目前支持的是 tftp 服务器。
使用
tftp 工具依赖 lwip,需要先在 env 工具 开启 lwip 的依赖才可见,步骤如下:
-> rt-thread components -> network stack -> light weight tcp/ip stack -> enable lwip stack
在netutils菜单栏使能 tftp 选项:
rt-thread online packages -> iot - internet of things -> netutils: networking utilities for rt-thread [*] enable tftp(trivial file transfer protocol) server
安装 tftp 客户端
安装文件位于netutils/tools/tftpd64-4.60-setup.exe,使用 tftp 前,请先安装该软件。
启动 tftp 服务器
在传输文件前,需要在 rt-thread 上使用 finsh/msh 命令来启动 tftp 服务器,大致效果如下:
msh />tftp_server tftp server start successfully. msh />
传输文件
打开刚安装的tftpd64软件,按如下操作进行配置:
1、选择tftp client;2、在server interfaces下拉框中,务必选择好与 rt-thread 处于同一网段的网卡;3、填写 tftp 服务器的 ip 地址。可以在 rt-thread 的 msh 下使用ifconfig命令查看;4、填写 tftp 服务器端口号,默认:69
发送文件到 rt-thread
1、在tftpd64软件中,选择好要发送文件;2、remote file是服务器端保存文件的路径(包括文件名),选项支持相对路径和绝对路径。由于 rt-thread 默认开启dfs_using_workdir选项,此时相对路径是基于 finsh/msh 当前进入的目录。所以,使用相对路径时,务必提前切换好目录;3、点击put按钮即可。
如下图所示,将文件发送至 finsh/msh 当前进入的目录下,这里使用的是相对路径:
注意:如果dfs_using_workdir未开启,同时remote file为空,文件会将保存至根路径下。
从 rt-thread 接收文件
1、在tftpd64软件中,填写好要接收保存的文件路径(包含文件名);2、remote file是服务器端待接收回来的文件路径(包括文件名),选项支持相对路径和绝对路径。由于 rt-thread 默认开启dfs_using_workdir选项,此时相对路径是基于 finsh/msh 当前进入的目录。所以,使用相对路径时,务必提前切换好目录;3、点击get按钮即可。
如下所示,将/web_root/image.jpg保存到本地,这里使用的是绝对路径:
msh /web_root>ls ##查看文件是否存在 directory /web_root: image.jpg 10559 msh /web_root>
iperf工具的配置与使用
介绍
iperf是一个网络性能测试工具。iperf 可以测试最大 tcp 和 udp 带宽性能,具有多种参数和 udp 特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。
使用
在netutils菜单栏使能 iperf 选项:
rt-thread online packages -> iot - internet of things -> netutils: networking utilities for rt-thread [*] enable iperf-liked network performance tool
iperf 使用的是主从式架构,即一端是服务器,另一端是客户端,我们提供的 iperf 软件包实现了 tcp 服务器模式和客户端模式,暂不支持 udp 测试。下面将具体讲解 2 种模式的使用方法。
iperf 服务器模式
获取 ip 地址
需要在 rt-thread 上使用 finsh/msh 命令来获取 ip 地址,大致效果如下:
msh />ifconfig network interface: e0 (default) mtu: 1500 mac: 00 04 9f 05 44 e5 flags: up link_up etharp ip address: 192.168.12.71 gw address: 192.168.10.1 net mask : 255.255.0.0 dns server #0: 192.168.10.1 dns server #1: 223.5.5.5
记下获得的 ip 地址 192.168.12.71(按实际情况记录)
启动 iperf 服务器
需要在 rt-thread 上使用 finsh/msh 命令来启动 iperf 服务器,大致效果如下:
msh />iperf -s -p 5001
-s 表示作为服务器启动-p 表示监听 5001 端口
安装 jperf 测试软件
安装文件位于netutils/tools/jperf.rar,这个是绿色软件,安装实际上是解压的过程,解压到新文件夹即可。
进行 jperf 测试
打开jperf.bat软件,按如下操作进行配置:
1、 选择client模式;2、 输入刚刚获得的 ip 地址 192.168.12.71(按实际地址填写);3、 修改端口号为 5001;4、 点击run lperf!开始测试;5、 等待测试结束。测试时,测试数据会在 shell 界面和 jperf 软件上显示。
iperf 客户端模式
获取 pc 的 ip 地址
在 pc 的命令提示符窗口上使用 ipconfig 命令获取 pc 的 ip 地址,记下获得的 pc ip 地址为 192.168.12.45(按实际情况记录)。
安装 jperf 测试软件
安装文件位于netutils/tools/jperf.rar,这个是绿色软件,安装实际上是解压的过程,解压到新文件夹即可。
开启 jperf 服务器
打开jperf.bat软件,按如下操作进行配置:
1、 选择server模式2、 修改端口号为 50013、 点击run lperf!开启服务器
启动 iperf 客户端
需要在 rt-thread 上使用 finsh/msh 命令来启动 iperf 客户端,大致效果如下:
msh />iperf -c 192.168.12.45 -p 5001
-c 表示作为客户端启动,后面需要加运行服务器端的pc的 ip 地址-p 表示连接 5001 端口等待测试结束。测试时,测试数据会在 shell 界面和 jperf 软件上显示。
其他网络调试工具的介绍和使用
除了上述常用的网络工具,rt-thread 也提供一些开发调试中比较实用的网络工具,如 netio 工具、 telnet 工具和 tcpdump 工具。
netio 工具
netio用于在 os/2 2.x 、 windows 、 linux 和 unix 上进行网络性能测试的工具。它会通过 tcp/udp 方式,使用不同大小的数据包进行网络净吞吐量测试。
rt-thread 目前支持的是 netio tcp 服务器。
netio 的使用请参考组件目录下的 readme ,此处不再赘述。
telnet 工具
telnet协议是一种应用层协议,使用于互联网及局域网中,使用虚拟终端机的形式,提供双向、以文字字符串为主的交互功能。属于 tcp/ip 协议族的其中之一,是 internet 远程登录服务的标准协议和主要方式,常用于网页服务器的远程控制,可供用户在本地主机运行远程主机上的工作。
rt-thread 目前支持的是 telnet 服务器, telnet 客户端连接成功后,将会远程连接到设备的 finsh/msh ,实现设备的远程控制。
telnet 的使用请参考组件目录下的 readme ,此处不再赘述。
tcpdump 工具
tcpdump 是一款基于 rt-thread 的捕获ip报文的小工具, 抓包的数据可以通过文件系统保存,或者通过 rdb 工具导入pc,利用 wireshark 软件解析。
tcpdump 的使用请参考组件目录下的 readme ,此处不再赘述。
MAX5394低电压线性抽头数字电位器
PROFIBUS DP的通信中断问题分析
镍镉电池自动充电器
英特尔面临裁员风波 借VR能否迎来新机?
日韩摩擦,全球半导体遭殃!
RT-Thread NetUtils的使用方法
华为首的首个人工智能计算平台安全框架标准在ETSI成功立项
测叶面积仪器的功能特点是怎样的
新款15W和20W机板型/DIN导轨安装型DC-DC转换器,适合工业和通讯应用
企业为AI平台选择存储设备之前 必须首先考虑以下几个要素
变频器专用出线电抗器的功能、作用及分类
在Raspberry Pi4上实现一个面部表情识别系统
什么是服务器?服务器是做什么的
中科院半导体所研制瓦级中波红外量子级联激光器
据说OPPOr11要来了,你知道什么时候上市吗?
英飞凌推出业界首款支持更大功率的USB PD 3.1高压微控制器
长三角“包邮区”芯片的往事:苏南内衣厂的芯片逆袭之路
技术之战 是引领冰箱行业潮流不二法门
全球智能家居市场规模高达千亿美元 国内百度阿里小米三强争雄格局
一加6曝光售价或4000元以上,努比亚全面屏新机V18发布