衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RT-Thread NetUtils的使用方法

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

本應用筆記介紹 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 ,此處不再贅述。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 組件
    +關注

    關注

    1

    文章

    517

    瀏覽量

    17922
  • RT-Thread
    +關注

    關注

    31

    文章

    1305

    瀏覽量

    40384

原文標題:RT-Thread網絡工具集 (NetUtils) 應用筆記——周四RTOS專欄

文章出處:【微信號:elecfans,微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RT-Thread文件系統的基本知識和使用方法

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

    網絡工具集 (NetUtils) 使用方法

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

    RT-Thread文件系統的基本知識和使用方法

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

    使用RT-Thread NetUtils組件來解決網絡開發過程中遇到的問題

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

    RT-Thread編程指南

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

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導在RT-Thread實時操作系統環境下如何進行編 程。
    發表于 11-26 16:16 ?0次下載

    移植RT-Thread的原理與方法

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

    RT-Thread全球技術大會:螢石研發團隊使用RT-Thread的技術挑戰

    RT-Thread全球技術大會:研發團隊使用RT-Thread的技術挑戰 ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 11:36 ?1357次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:螢石研發團隊使用<b class='flag-5'>RT-Thread</b>的技術挑戰

    RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制

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

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

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

    RT-Thread學習筆記 RT-Thread的架構概述

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

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 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 上手指南
    發表于 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 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?4123次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習
    百家乐筹码14克| 百家乐游戏技巧| 皇冠现金网网址| 赌百家乐咋赢对方| 华宝娱乐城| 威尼斯人娱乐城官方网站| 网页百家乐官网游戏下载| 百家乐官网有人赢过吗| 百家乐推饼| 百家乐官网欧洲赔率| e世博线上娱乐| 大发888网站打不开| 24山方位 子孙 文昌| 百家乐官网隐者博客| 德州扑克 单机版| 百家乐是个什么样的游戏| 百家乐现金网平台排名| 百家乐官网家乐娱乐城| 迪威网上娱乐| 大发888娱乐厂场| 百家乐有作弊的吗| 百家乐官网看澳门| 百家乐官网技巧阅读| 德州扑克论坛| 百家乐号解码器| 百家乐投注技巧| 百家乐的路怎样看| 百家乐官网投注打三断| 真钱赌博| 永利国际娱乐| 豪盈国际娱乐| 百家乐详解| 稳赢至尊| 百家博国际娱乐城| 盛世国际娱乐博彩| 豪盈国际娱乐| 百家乐分析软件| 澳博88| 新锦江百家乐官网赌场娱乐网规则| 网上百家乐官网骗人的吗| 百家乐官网最保险的方法|