【RT-Thread应用笔记】RA8D1-VisionBoard上的RW007实践——WiFi延迟和带宽测试

news2024/9/23 11:18:41

【RT-Thread应用笔记】RA8D1-VisionBoard上的RW007实践——WiFi延迟和带宽测试

    • 一、准备环境
      • 1.1 安装RT-Thread Studio
      • 1.2 安装开发板支持包
      • 1.3 安装调试器支持包
      • 1.4 安装工具链支持包
    • 二、创建项目
      • 2.1 创建RT-Thread项目
    • 三、编译下载
      • 3.1 编译代码
      • 3.2 下载程序
    • 四、WiFi测试
      • 4.1 扫描测试
      • 4.2 连接测试
    • 五、延迟测试
      • 5.1 ping百度
      • 5.2 ping路由器
    • 六、带宽测试
      • 6.1 netutils软件包
      • 6.2 iperf命令参数
      • 6.3 PC端的iperf
      • 6.4 iperf带宽测试
      • 6.5 iperf测试小结

本文主要介绍如何使用RT-Thread Studio创建在VisionBoard开发板上运行的RT-Thread项目,以及如何配置RW007模组实现WiFi联网,以及如何进行WiFi延迟和带宽测试。本文主要在RT-Thread Studio环境下进行,只需要进行一些配置即可完成全部操作,整个操作过程不需要写代码,非常简单。

一、准备环境

1.1 安装RT-Thread Studio

RT-Thread Studio可以在RT-Thread官网下载,安装没啥难度,这里不再介绍了。

1.2 安装开发板支持包

打开RT-Thread Studio后,找到SDK Manager(SDK管理器)图标,并单击:

Untitled

在弹出的RT-Thread SDK管理器界面中,找到Vision-Board支持包,选中并安装:

Untitled

1.3 安装调试器支持包

继续在SDK管理器界面中,下拉到PyOCD下方,安装最新板的调试器支持包:

Untitled

可以看到,最新一条更新记录里面写了支持RA8系列。

1.4 安装工具链支持包

工具链,建议下载最新的:

Untitled

二、创建项目

2.1 创建RT-Thread项目

接着,通过RT-Thread Studio菜单栏,”文件”→“新建” → “RT-Thread项目”打开新建项目界面。

rs_create_project.png

新建项目界面,按照如下步骤操作:

  1. 选中“基于开发板”;
  2. 开发板下拉菜单选择“VISION-BOARD”;
  3. 类型选择“示例工程”;
  4. 示例选择“vision_board_wifi”;
  5. 如果一开始没有填写project name,第4步选择后,project name将会变成vision_board_wifi;

如下图所示:

Untitled

此时,点“完成”,就会创建项目文件了:

Untitled

三、编译下载

3.1 编译代码

点击工具栏的锤子图标,或者使用快捷键Ctrl+B,编译项目:

Untitled

编译完成后,可以看到控制台输出了RAM和Flash占用:

Untitled

3.2 下载程序

下载固件之前,首先安装好VISION-BOARD的WiFi天线,如下图所示:

visionboard_rw007_ant.jpg

然后,使用USB Type-C线将PC和开发板连接起来,注意连接到板子的USB-DBG口,如下图所示:

visionboard_rw007_usb.jpg

连接好USB线之后,回到RT-Thread Studio中,使用“下载”按钮(或者Ctrl+Alt+D快捷键),开始下载程序:

Untitled

或Ctrl+Alt+D即可进行烧录。

下载完成后,控制台窗口可以看到:

Untitled

四、WiFi测试

接下来连接串口终端,我用的是MobaXterm,参数配置如下:

Untitled

连接串口后,按下板子上的复位键,可以看到:

Untitled

有RT-Thread系统启动日志,以及RW007模组的固件信息。

接下来,我们进行一些简单的WiFi测试。

首先,输入wifi命令,可以查看wifi命令的使用方式:

Untitled

4.1 扫描测试

使用wifi scan命令,尝试扫描周围的WiFi热点:

Untitled

可以看到,成功扫描到了周围的WiFi热点。

4.2 连接测试

执行wifi join命令,尝试连接其中的一个热点(这里连接的是无线路由器):

Untitled

其中,马赛克的部分是WiFi密码。

可以看到,成功连接上了WiFi热点,并且获取到了IP地址。

五、延迟测试

ping命令可以输出玩咯延迟信息,可以作为网络延迟的简单测试工具。

5.1 ping百度

接下来,用 ping 命令测试一下,板子能不能ping通baidu.com:

Untitled

可以ping通baidu.com,说明TCP/IP协议基本没有太大问题(域名解析OK,而且可以发送数据到公网主机)。

5.2 ping路由器

接下来,ping一下局域网的无线路由器:

Untitled

作为对比,可以看一下笔记本ping路由器的延迟:

Untitled

我的笔记本电脑连接的也连接在同一个无线路由器上。

模组比笔记本的WiFi延迟高一点点,正题相差不大。

六、带宽测试

6.1 netutils软件包

RT-Thread的netutils组件中提供了iperf命令,可以用于测试网络带宽。

RT-Thread Studio中,双击“RT-Thread Settings”,如下图所示:

Untitled

可以看到,已经有netutils软件包了,不需要手动添加了。

鼠标放到netutils组件上,点击悬浮菜单的“配置项”,如下图所示:

Untitled

此时RT-Thread Settings窗口将会跳转到netutils软件包配置页面,如下图:

Untitled

可以看到iperf选项已经打开了。

也就是说,默认的vision_board_wifi示例已经有netutils软件包,并且打开了iperf配置项了。

如果没有意外,刚刚编译的程序中已经有 iperf命令,不需要重新编译了。

串口终端中,输入help,可以看到:

Untitled

6.2 iperf命令参数

在RT-Thread的msh中运行iperf,默认输出帮助信息:

Untitled

可以看到iperf的命令参数使用方法。

注意:

  1. RT-Thread的iperf命令实现中,对参数的顺序由要求,如果使用过程中发现参数报错,需要查看源码定位原因;
  2. RT-Thread的iperf不支持持续时间选项,一般是先启动,后通过stop选项停止的方式控制测试时长;

6.3 PC端的iperf

PC端的iperf可以到iperf项目官网下载:https://iperf.fr/iperf-download.php

我使用的mobaxterm,里面自带了iperf命令,所以就不单独下载了:

Untitled

6.4 iperf带宽测试

下面进行测试,测试步骤如下:

  1. 在PC上,启动iperf服务端:iperf -s -p 5678
  2. 在开发板上,通过ping命令测试开发板和PC直接IP是否可达
  3. 在开发板上,启动iperf客户端:iperf -c 192.168.3.6 -p 5678 (其中192.168.3.6是PC的IP地址)
    • 启动后,可以通过ps命令查看正在运行的线程
  4. 一段时间后,在开发板上,停止iperf客户端:iperf --stop
  5. 开发板上iperf停止后,PC端应该可以看到iperf的输出;

开发板上整个过程的输出如下:

Untitled

PC端输出:

Untitled

可以看到带宽是0.06Mbps(上一次测出来的是6.07)。

6.5 iperf测试小结

实际上,影响WiFi带宽测试结果数据的因素很多。我们这里,其中,起决定性的的主要由以下几个方面:

  1. 模组本身支持的最高WiFi传输速率;
  2. 模组接口支持的最高工作频率;
  3. 主控芯片接口最高支持的工作频率;
  4. 热点的WiFi最高传输速率;
  5. 各种环境因素,例如开发板和PC直接的距离、环境是否有其他热点干扰等等;

为了测出比较高的数据,我把开发板直接放到路由器天线边上,以上的结果:

visionboard_wifi_ap.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1616501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题---移除链表元素

文章目录 前言1.题目2.分析思路3.参考代码 前言 Leetcode–-移除链表元素 1.题目 2.分析思路 首先要创建一个新的链表,在定义三个指针,newHead,newTail和pcur,分别代表新链表头,新链表尾以及用于遍历原链表。 其次是…

LinkedBlockingQueue源码

LinkedBlockingQueue源码 LinkedBlockingQueue介绍 【1】LinkedBlockingQueue是一个基于链表实现的阻塞队列,默认情况下,该阻塞队列的大小为Integer.MAX_VALUE,由于这个数值特别大,所以 LinkedBlockingQueue 也被称作无界队列&a…

RuoYi-Vue-Plus (SaToken 注解鉴权)

一、SaInterceptor 注解鉴权和路由拦截鉴权 拦截器:SaInterceptor 实现类位置: cn.dev33.satoken.interceptor.SaInterceptor 功能:Sa-Token 综合拦截器,提供注解鉴权和路由拦截鉴权能力 /*** 创建一个 Sa-Token 综合拦截器&…

一句话或一张图讲清楚系列之——IDELAYE2的用法

主要参考: Xilinx IDELAYE2应用笔记及仿真实操-CSDN博客 xilinx原语介绍及仿真——IDELAYE2 & IDELAYCTRL_idelayctrl原语使用说明-CSDN博客 1 原理 IDELAYE2一般用于对输入lvds高速信号进行延时微调,可以把时钟和数据都单独微调;如果数…

Spring Cloud学习笔记(Feigh):简介,实战简单样例

这是本人学习的总结,主要学习资料如下 - 马士兵教育 1、Netflix Feign简介2、Open Feign的简单样例2.1、dependency2.2、代码样例 1、Netflix Feign简介 Netfilx Feign是用来帮助发送远程服务的,它让开发者觉得调用远程服务就像是调用本地方法一样&…

【第4讲】XTuner 微调 LLM:1.8B、多模态、Agent

目录 1 简介2 基础知识2.1 finetune简介2.2 xtuner简介2.2.1 技术架构2.2.2 快速上手xtuner 2.3 8GB显存玩转LLM(intern1.8b)2.3.1 flash attention vs deepspeed zero2.3.2 相关版本更新和使用 2.4 多模态LLM2.4.1 多模态LLaVA基本原理简介2.4.2 快速上…

【xhs爬虫软件】把小红书博主发布笔记API接口user_posted接口封装成GUI采集工具!

用Python开发的爬虫采集软件,可自动抓取小红书博主的已发布笔记。 小红书的已发布笔记接口URL: # 请求地址 posted_url https://edith.xiaohongshu.com/api/sns/web/v1/user_posted开发者模式分析过程: 进而封装成GUI界面软件,…

Vue 3中的ref和toRefs:响应式状态管理利器

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

05_Flutter屏幕适配

05_Flutter屏幕适配 一.屏幕适配方案 通过指定基准屏宽度,进行适配,基准屏宽度取决于设计图的基准宽度,以iphone 14 pro max为例, devicePixelRatio 物理宽度 / 逻辑宽度(基准宽度) iphone 14 pro max的物理尺寸宽度为1290&…

opencv_5_图像像素的算术操作

方法1:调用库函数 void ColorInvert::mat_operator(Mat& image) { Mat dst; Mat m Mat::zeros(image.size(), image.type()); m Scalar(2, 2, 2); multiply(image, m, dst); m1 Scalar(50,50, 50); //divide(image, m, dst); //add(im…

【web开发网页制作】html+css家乡长沙旅游网页制作(4页面附源码)

家乡长沙网页制作 涉及知识写在前面一、网页主题二、网页效果Page1、主页Page2、历史长沙Page3、著名人物Page4、留言区 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSS 五、源码获取5.1 获取方式 作者寄语 涉及知识 家乡长沙网页制作&#x…

promise笔记

1.介绍 之前的异步编程都是回调函数(数据库操作、ajax、定时器、fs读取文件 ) promise是es6异步编程新的解决方案,是一个构造函数 优点:支持链式调用,可以解决回调地狱,可以指定回调函数 2.使用 functio…

Dubbo 和 Spring Cloud 的区别

根据微服务架构在各方面的要素,看看 Spring Cloud 和 Dubbo 都提供了哪些支持。 使用 Dubbo 构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心…

Spring Kafka—— KafkaListenerEndpointRegistry 隐式注册分析

由于我想在项目中实现基于 Spring kafka 动态连接 Kafka 服务,指定监听 Topic 并控制消费程序的启动和停止这样一个功能,所以就大概的了解了一下 Spring Kafka 的几个重要的类的概念,内容如下: ConsumerFactory 作用:…

探索数学语言模型的前沿进展——人工智能在数学教育和研究中的应用

数学一直被认为是科学的基石,对于推动技术进步和解决现实世界问题具有重要意义。然而,传统的数学问题解决方式正面临着数字化转型的挑战。MLMs的出现,预示着数学学习和研究方式的一次革命。 MLMs,包括预训练语言模型(…

STM32F1串口

文章目录 1 数据通信的基础概念1.11.21.31.41.5 2 串口(RS-232)2.12.22.32.42.5 3 STM32的USART3.13.23.33.53.9 USART寄存器介绍 4 HAL库外设初始化MSP回调机制5 HAL库中断回调机制6 USART/UART异步通信配置步骤 (包括HAL库相关函数)6.16.26…

SDN基础知识

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

SQLite的DBSTAT 虚拟表(三十六)

返回:SQLite—系列文章目录 上一篇:SQLite运行时可加载扩展(三十五) 下一篇:SQLite—系列文章目录 1. 概述 DBSTAT 虚拟表是一个只读的同名虚拟表,返回 有关用于存储内容的磁盘空间量的信息 的 SQLite 数据库。 示例用例…

【数据结构(邓俊辉)学习笔记】绪论03——递归分析

文章目录 意图目标1. 线性递归数组求和线性递归减而治之 2. 递归分析递归跟踪递推方程典型递推方程 3. 递归模式多递归基多向递归 4. 递归消除空间成本尾递归及其消除 5. 二分递归分而治之数组求和 6 . 效率7. 算法设计优化总结前n项计算算法 意图 数据结构中经常用到递归&…

VScode配置MySQL

1、进入官网,下载MySQL 地址:dev.mysql.com/downloads/mysql/ ZIP方式下载,选择本地的路径进行解压。 2、配置环境变量 形如下方的路径: D:\software\Mysql\mysql-8.3.0-winx64\bin 即是解压位置后文件夹下的bin文件路径 3、初…