RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RT-Thread NetUtils的使用方法

lPCU_elecfans ? 來源:未知 ? 作者:李倩 ? 2018-10-08 16:41 ? 次閱讀

本應(yīng)用筆記介紹 RT-Thread NetUtils 的使用方法,幫助開發(fā)者更好地使用 RT-Thread NetUtils 組件來解決網(wǎng)絡(luò)開發(fā)過程中遇到的問題。

本文的目的和背景

在進(jìn)行網(wǎng)絡(luò)相關(guān)的產(chǎn)品開發(fā)和調(diào)試時,一些好用的小工具往往能取到事半功倍的效果。 RT-Thread NetUtils 組件基于此應(yīng)用場景,開發(fā)和封裝了一系列簡潔好用的網(wǎng)絡(luò)工具集合,為開發(fā)者提供便利。

為了方便用戶開發(fā)網(wǎng)絡(luò)應(yīng)用,RT-Thread 將常用的網(wǎng)絡(luò)工具制作 NetUtils 組件包,通過 env 動態(tài)配置,即開即用, 有效降低資源的占用。

本文的結(jié)構(gòu)

NetUtils 組件介紹

Ping 工具的配置和使用

NTP 時間同步工具的配置和使用

TFTP 文件傳輸工具的使用

Iperf 網(wǎng)絡(luò)帶寬測試工具的配置和使用

其他網(wǎng)絡(luò)調(diào)試工具的配置和使用

問題闡述

本應(yīng)用筆記將圍繞下面幾個問題來介紹 RT-Thread NetUtils 組件。

RT-Thread NetUtils 主要包括哪些?分別有什么功能?

如何使用 Ping 工具診斷網(wǎng)絡(luò)穩(wěn)定性?

如何測試網(wǎng)絡(luò)穩(wěn)定性和帶寬?

如何通過網(wǎng)絡(luò)傳輸文件?

問題的解決

NetUtils 組件介紹

RT-Thread NetUtils 作為網(wǎng)絡(luò)工具合集,既有用于測試調(diào)試的 Ping 命令, 同步時間的 NTP 工具, 性能和帶寬測試的 Iperf 、 NetIO,還有在嵌入式系統(tǒng)中廣泛使用的輕量級文件傳輸工具 TFTP,方便地通過網(wǎng)絡(luò)完成兩個設(shè)備間的文件互傳。另外, RT-Thread 還針對開發(fā)中的實際問題,提供了一些高級的輔助工具,如可以遠(yuǎn)程登錄到 RT-Thread Finsh/MSH Shell 的 Telnet 工具,以及基于 lwIP 的網(wǎng)絡(luò)抓包工具 tcpdump。

下面是 RT-Thread NetUtils的分類和簡介:

每個小工具可使用 menuconfig 獨立控制啟用/停用,并提供了 Finsh/MSH 的使用命令。首先打開 env 工具,進(jìn)入 BSP 目錄,在 env 命令行輸入 menuconfig 進(jìn)入配置界面配置工程,根據(jù)需求選擇合適的 NetUtils 功能,如圖所示(注意: Ping 和 TFTP 依賴于 lwIP,需要先開啟 lwIP 的依賴后才能顯示)

RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread

Ping工具的配置與使用

介紹

Ping是一種網(wǎng)絡(luò)診斷工具,用來測試數(shù)據(jù)包能否通過 IP 協(xié)議到達(dá)特定主機(jī)。估算與主機(jī)間的丟失數(shù)據(jù)包率(丟包率)和數(shù)據(jù)包往返時間(網(wǎng)絡(luò)時延,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 命令進(jìn)行測試,大致使用效果如下:

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是網(wǎng)絡(luò)時間協(xié)議(Network Time Protocol),它是用來同步網(wǎng)絡(luò)中各個計算機(jī)時間的協(xié)議。在 RT-Thread 上實現(xiàn)了 NTP 客戶端,連接上網(wǎng)絡(luò)后,可以獲取當(dāng)前 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 時間又稱世界統(tǒng)一時間、世界標(biāo)準(zhǔn)時間、國際協(xié)調(diào)時間。北京時間為 UTC+8 時間,比 UTC 時間多 8 小時,或者理解為早 8 小時。

API:time_t time_t ntp_get_time(void)

參數(shù) 描述
返回 描述
>0 當(dāng)前 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 時間多了時區(qū)的概念,例如:北京時間為東八區(qū),比 UTC 時間多 8 個小時。

在menuconfig中可以設(shè)置當(dāng)前時區(qū),默認(rèn)為8

API:time_t ntp_get_local_time(void)

該 API 使用方法與ntp_get_time()類似

同步本地時間至 RTC

如果開啟 RTC 設(shè)備,還可以使用下面的命令及 API 同步 NTP 的本地時間至 RTC 設(shè)備。

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 方法執(zhí)行時會占用較多的線程堆棧,使用時保證堆??臻g充足(≥1.5K);2、NTP API 方法不支持可重入,并發(fā)使用時,請注意加鎖。

TFTP工具的配置與使用

介紹

TFTP(Trivial File Transfer Protocol, 簡單文件傳輸協(xié)議)是 TCP/IP 協(xié)議族中的一個用來在客戶機(jī)與服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開銷不大的文件傳輸服務(wù),端口號為69,比傳統(tǒng)的 FTP 協(xié)議要輕量級很多,適用于小型的嵌入式產(chǎn)品上。

RT-Thread 目前支持的是 TFTP 服務(wù)器。

使用

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 服務(wù)器

在傳輸文件前,需要在 RT-Thread 上使用 Finsh/MSH 命令來啟動 TFTP 服務(wù)器,大致效果如下:

msh />tftp_server TFTP server start successfully. msh />

傳輸文件

打開剛安裝的Tftpd64軟件,按如下操作進(jìn)行配置:

1、選擇Tftp Client;2、在Server interfaces下拉框中,務(wù)必選擇好與 RT-Thread 處于同一網(wǎng)段的網(wǎng)卡;3、填寫 TFTP 服務(wù)器的 IP 地址??梢栽?RT-Thread 的 MSH 下使用ifconfig命令查看;4、填寫 TFTP 服務(wù)器端口號,默認(rèn):69

發(fā)送文件到 RT-Thread

1、在Tftpd64軟件中,選擇好要發(fā)送文件;2、Remote File是服務(wù)器端保存文件的路徑(包括文件名),選項支持相對路徑和絕對路徑。由于 RT-Thread 默認(rèn)開啟DFS_USING_WORKDIR選項,此時相對路徑是基于 Finsh/MSH 當(dāng)前進(jìn)入的目錄。所以,使用相對路徑時,務(wù)必提前切換好目錄;3、點擊Put按鈕即可。

如下圖所示,將文件發(fā)送至 Finsh/MSH 當(dāng)前進(jìn)入的目錄下,這里使用的是相對路徑:

注意:如果DFS_USING_WORKDIR未開啟,同時Remote File為空,文件會將保存至根路徑下。

從 RT-Thread 接收文件

1、在Tftpd64軟件中,填寫好要接收保存的文件路徑(包含文件名);2、Remote File是服務(wù)器端待接收回來的文件路徑(包括文件名),選項支持相對路徑和絕對路徑。由于 RT-Thread 默認(rèn)開啟DFS_USING_WORKDIR選項,此時相對路徑是基于 Finsh/MSH 當(dāng)前進(jìn)入的目錄。所以,使用相對路徑時,務(wù)必提前切換好目錄;3、點擊Get按鈕即可。

如下所示,將/web_root/image.jpg保存到本地,這里使用的是絕對路徑:

msh /web_root>ls ##查看文件是否存在 Directory /web_root: image.jpg 10559 msh /web_root>

Iperf工具的配置與使用

介紹

Iperf是一個網(wǎng)絡(luò)性能測試工具。Iperf 可以測試最大 TCP 和 UDP 帶寬性能,具有多種參數(shù)和 UDP 特性,可以根據(jù)需要調(diào)整,可以報告帶寬、延遲抖動和數(shù)據(jù)包丟失。

使用

在NetUtils菜單欄使能 Iperf 選項:

RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread [*] Enable iperf-liked network performance tool

Iperf 使用的是主從式架構(gòu),即一端是服務(wù)器,另一端是客戶端,我們提供的 Iperf 軟件包實現(xiàn)了 TCP 服務(wù)器模式和客戶端模式,暫不支持 UDP 測試。下面將具體講解 2 種模式的使用方法。

Iperf 服務(wù)器模式

獲取 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 服務(wù)器

需要在 RT-Thread 上使用 Finsh/MSH 命令來啟動 Iperf 服務(wù)器,大致效果如下:

msh />iperf -s -p 5001

-s 表示作為服務(wù)器啟動-p 表示監(jiān)聽 5001 端口

安裝 JPerf 測試軟件

安裝文件位于netutils/tools/jperf.rar,這個是綠色軟件,安裝實際上是解壓的過程,解壓到新文件夾即可。

進(jìn)行 jperf 測試

打開jperf.bat軟件,按如下操作進(jìn)行配置:

1、 選擇Client模式;2、 輸入剛剛獲得的 IP 地址 192.168.12.71(按實際地址填寫);3、 修改端口號為 5001;4、 點擊run Lperf!開始測試;5、 等待測試結(jié)束。測試時,測試數(shù)據(jù)會在 shell 界面和 JPerf 軟件上顯示。

Iperf 客戶端模式

獲取 PC 的 IP 地址

在 PC 的命令提示符窗口上使用 ipconfig 命令獲取 PC 的 IP 地址,記下獲得的 PC IP 地址為 192.168.12.45(按實際情況記錄)。

安裝 JPerf 測試軟件

安裝文件位于netutils/tools/jperf.rar,這個是綠色軟件,安裝實際上是解壓的過程,解壓到新文件夾即可。

開啟 jperf 服務(wù)器

打開jperf.bat軟件,按如下操作進(jìn)行配置:

1、 選擇Server模式2、 修改端口號為 50013、 點擊run Lperf!開啟服務(wù)器

啟動 Iperf 客戶端

需要在 RT-Thread 上使用 Finsh/MSH 命令來啟動 Iperf 客戶端,大致效果如下:

msh />iperf -c 192.168.12.45 -p 5001

-c 表示作為客戶端啟動,后面需要加運行服務(wù)器端的pc的 IP 地址-p 表示連接 5001 端口等待測試結(jié)束。測試時,測試數(shù)據(jù)會在 shell 界面和 JPerf 軟件上顯示。

其他網(wǎng)絡(luò)調(diào)試工具的介紹和使用

除了上述常用的網(wǎng)絡(luò)工具,RT-Thread 也提供一些開發(fā)調(diào)試中比較實用的網(wǎng)絡(luò)工具,如 NetIO 工具、 Telnet 工具和 tcpdump 工具。

NetIO 工具

NetIO用于在 OS/2 2.x 、 Windows 、 Linux 和 Unix 上進(jìn)行網(wǎng)絡(luò)性能測試的工具。它會通過 TCP/UDP 方式,使用不同大小的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)凈吞吐量測試。

RT-Thread 目前支持的是 NetIO TCP 服務(wù)器。

NetIO 的使用請參考組件目錄下的 README ,此處不再贅述。

Telnet 工具

Telnet協(xié)議是一種應(yīng)用層協(xié)議,使用于互聯(lián)網(wǎng)及局域網(wǎng)中,使用虛擬終端機(jī)的形式,提供雙向、以文字字符串為主的交互功能。屬于 TCP/IP 協(xié)議族的其中之一,是 Internet 遠(yuǎn)程登錄服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式,常用于網(wǎng)頁服務(wù)器的遠(yuǎn)程控制,可供用戶在本地主機(jī)運行遠(yuǎn)程主機(jī)上的工作。

RT-Thread 目前支持的是 Telnet 服務(wù)器, Telnet 客戶端連接成功后,將會遠(yuǎn)程連接到設(shè)備的 Finsh/MSH ,實現(xiàn)設(shè)備的遠(yuǎn)程控制。

Telnet 的使用請參考組件目錄下的 README ,此處不再贅述。

tcpdump 工具

tcpdump 是一款基于 RT-Thread 的捕獲IP報文的小工具, 抓包的數(shù)據(jù)可以通過文件系統(tǒng)保存,或者通過 rdb 工具導(dǎo)入PC,利用 wireshark 軟件解析。

tcpdump 的使用請參考組件目錄下的 README ,此處不再贅述。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    512

    瀏覽量

    17813
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1285

    瀏覽量

    40081

原文標(biāo)題:RT-Thread網(wǎng)絡(luò)工具集 (NetUtils) 應(yīng)用筆記——周四RTOS專欄

文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread文件系統(tǒng)的基本知識和使用方法

    演示 shell 命令和使用示例的方式來操作文件系統(tǒng),讓開發(fā)者能夠?qū)W會 RT-Thread 文件系統(tǒng)的使用方法。
    的頭像 發(fā)表于 08-17 10:01 ?3.1w次閱讀
    <b class='flag-5'>RT-Thread</b>文件系統(tǒng)的基本知識和<b class='flag-5'>使用方法</b>

    網(wǎng)絡(luò)工具集 (NetUtils) 使用方法

    網(wǎng)絡(luò)工具集 (NetUtils) 使用指南摘要本文介紹 RT-Thread NetUtils使用方法,幫助開發(fā)者更好地使用 RT-Thread
    發(fā)表于 03-29 06:42

    RT-Thread文件系統(tǒng)的基本知識和使用方法

    本文介紹了 RT-Thread 文件系統(tǒng)的基本知識和使用方法,幫助開發(fā)者更好地使用 RT-Thread 文件系統(tǒng)。并給出了在正點原子 STM32F429-apollo 開發(fā)板上驗證的代碼示例。
    發(fā)表于 03-30 07:14

    使用RT-Thread NetUtils組件來解決網(wǎng)絡(luò)開發(fā)過程中遇到的問題

    摘要本應(yīng)用筆記介紹 RT-Thread NetUtils使用方法,幫助開發(fā)者更好地使用 RT-Thread NetUtils 組件來解決
    發(fā)表于 11-03 11:43

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實時操作系統(tǒng),本文是RT-Thread實時操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導(dǎo)在RT-Thread實時操作系統(tǒng)環(huán)境下如何進(jìn)行編 程。
    發(fā)表于 11-26 16:16 ?0次下載

    移植RT-Thread的原理與方法

    ,在rtt論壇搜索“國產(chǎn)MCU移植”即可閱讀。本文不介紹具體移植步驟,而是如往常一樣,分享移植的原理與方法。 移植原理 移植一款軟件,無非是獲取源碼,修改其中與硬件相關(guān)的代碼以適配目標(biāo)硬件。移植rt-thread也是如此,首要任務(wù)是要明確要修改哪部分內(nèi)容。帶著這個問題,
    的頭像 發(fā)表于 09-17 09:41 ?7775次閱讀

    RT-Thread全球技術(shù)大會:螢石研發(fā)團(tuán)隊使用RT-Thread的技術(shù)挑戰(zhàn)

    RT-Thread全球技術(shù)大會:研發(fā)團(tuán)隊使用RT-Thread的技術(shù)挑戰(zhàn) ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 11:36 ?1306次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:螢石研發(fā)團(tuán)隊使用<b class='flag-5'>RT-Thread</b>的技術(shù)挑戰(zhàn)

    RT-Thread全球技術(shù)大會:Kconfig在RT-Thread中的工作機(jī)制

    RT-Thread全球技術(shù)大會:Kconfig在RT-Thread中的工作機(jī)制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:49 ?1535次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:Kconfig在<b class='flag-5'>RT-Thread</b>中的工作機(jī)制

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:34 ?2095次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4545次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3930次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)
    RM新时代网站-首页