1.開(kāi)發(fā)環(huán)境
本文將會(huì)介紹如何使用RT-Thread env 工具創(chuàng)建一個(gè)基于RT-Thread RTOS的軟件項(xiàng)目;如何使用RT-Thread env 工具對(duì)項(xiàng)目進(jìn)行配置,實(shí)現(xiàn)FRDM-MCXN947開(kāi)發(fā)板通過(guò)RW007模組進(jìn)行WiFi聯(lián)網(wǎng);以及如何使用RT-Thread env 工具對(duì)項(xiàng)目進(jìn)行配置,實(shí)現(xiàn)WiFi網(wǎng)絡(luò)延遲和帶寬測(cè)試。
ENV環(huán)境
2.步驟說(shuō)明
2.1 RW007模組介紹
RW007模組是由上海睿賽德電子科技有限公司開(kāi)發(fā)的一款支持WiFi和藍(lán)牙功能的無(wú)線(xiàn)通信模塊,它提供了基于SPI和UART 兩種接口的通信方式。
SPI接口相對(duì)于UART接口,具有更高的通信速率,因此本文采用SPI接口進(jìn)行實(shí)驗(yàn)。
RW007模組工作在SPI模式下時(shí),主控芯片為模組需要提供1組SPI信號(hào),一個(gè)中斷輸入,一個(gè)IO輸出,包含電源和地總,一共8個(gè)引腳。
RT-Thread官方也提供了RW007模組的Arduino評(píng)估板(以下簡(jiǎn)稱(chēng)RW007評(píng)估板),如下圖所示:
圖片中間部分為RW007模組。
查閱RW007評(píng)估版原理圖,可以看到SPI和UART接口部分,如下圖所示:
可以看到,Arduino接口與RW007模組引腳的連接關(guān)系,如下表所示:
2.2 Arduino接口簡(jiǎn)介
本文使用的硬件平臺(tái)是恩智浦 NXP FRDM-MCXN947, 開(kāi)發(fā)板提供了Arduino接口,如下圖藍(lán)色部分:
FRDM-MXCN947開(kāi)發(fā)板 Arduino接口,和RW007評(píng)估版通信的引腳如下:
其中,D10~D13為SPI信號(hào),D9為中斷信號(hào)(INT),D8為復(fù)位控制(RST);
FRDM-MCXN947開(kāi)發(fā)板和RW007評(píng)估板連接如下圖:
2.3 RW007軟件包簡(jiǎn)介
RT-Thread RW007軟件包實(shí)現(xiàn)了MCU主控端與RW007模組的SPI/UART接口的底層通訊,同時(shí)實(shí)現(xiàn)了與RT-Thread的WiFi框架、網(wǎng)絡(luò)協(xié)議棧對(duì)接。借助此軟件包,開(kāi)發(fā)者可以在RT-Thread系統(tǒng)上輕松實(shí)現(xiàn)WiFi聯(lián)網(wǎng)或BLE功能。
軟件包源碼倉(cāng)庫(kù)鏈接:https://github.com/RT-Thread-packages/rw007
軟件包源碼倉(cāng)庫(kù)鏈接(國(guó)內(nèi)鏡像):https://gitee.com/RT-Thread-Mirror/rw007
2.4 RT-Thread env工具簡(jiǎn)介
RT-Thread Env 工具 包括配置器和包管理器,用來(lái)對(duì)內(nèi)核和組件的功能進(jìn)行配置,對(duì)組件進(jìn)行自由裁剪,對(duì)線(xiàn)上軟件包進(jìn)行管理,使得系統(tǒng)以搭積木的方式進(jìn)行構(gòu)建,簡(jiǎn)單方便。
2.5 新建工程
首先,克隆RT-Thread主線(xiàn)源碼到本地(Windows系統(tǒng)使用git-bash):
接著,跳轉(zhuǎn)到 FRDM-MXCN947 板級(jí)支持包(BSP)目錄:
$ cd bsp/nxp/mcx/mcxn/frdm-mcxn947/
最后,使用 scons 命令創(chuàng)建獨(dú)立的項(xiàng)目目錄(可以在env命令行,或者gitb-bash中執(zhí)行):
其中,target參數(shù)用于指定項(xiàng)目模板(可以使用mdk、iar等),project-name參數(shù)和project-path參數(shù)分別表示項(xiàng)目名稱(chēng)和項(xiàng)目目錄,可以根據(jù)實(shí)際需要修改修改。
注意:git-bash執(zhí)行scons之前,需要保證已經(jīng)安裝了Python,并且已使用pip install scons安裝scons軟件包。否則會(huì)報(bào) scons 命令找不到。
scons命令執(zhí)行成功,命令輸出,如下圖所示:
scons命令創(chuàng)建的目錄,內(nèi)容如下圖所示:
其中,rtt_n947開(kāi)頭的兩個(gè)文件,就是scons生成的項(xiàng)目文件。如果不加—project-name參數(shù),則是project開(kāi)頭的兩個(gè)文件。
2.5.1 添加RW007軟件包
在env命令行環(huán)境中,跳轉(zhuǎn)到上一小節(jié)創(chuàng)建的項(xiàng)目目錄 E:\DIY\FRDM-MCXN947\rtt_n947目錄,
然后,使用 menuconfig 命令:
2.5.2 打開(kāi)RW007配置項(xiàng)
類(lèi)似的,依次選擇:
│ -> Hardware Drivers Config
│ -> Board extended module Drivers
如下圖所示:
空格選中Enable RW007選項(xiàng)。
選中該選項(xiàng)后,將會(huì)自動(dòng)選中RW007軟件包,以及片上SPI1配置。
左右移動(dòng)光標(biāo)到Save上,回車(chē)保存配置。
保存配置之后,.config和rtconfig.h文件將會(huì)更新。
保存配置后,就可以退出配置界面了。
2.5.3 啟用pin驅(qū)動(dòng)
類(lèi)似的,依次進(jìn)入菜單:
→ Hardware Drivers Config → On-chip Peripheral Drivers
如下圖所示:
如圖,選中Enable GPIO。
這樣,就開(kāi)啟了pin驅(qū)動(dòng)。開(kāi)啟pin驅(qū)動(dòng)的原因是,SPI的CS使用了pin接口進(jìn)行控制。
左右移動(dòng)光標(biāo)到Save上,回車(chē)保存配置。
保存配置之后,.config和rtconfig.h文件將會(huì)更新。
保存配置后,就可以退出配置界面了。
2.5.4 禁用RW007的STM32驅(qū)動(dòng)
類(lèi)似的,依次選擇:
RT-Thread online packages → IoT - internet of things → Wi-Fi → rw007: SPI WIFI rw007 driver
進(jìn)入RW007軟件包配置界面:
上下移動(dòng)光標(biāo)到”example driver port (RW007 for stm32)”上,回車(chē),進(jìn)入這個(gè)配置項(xiàng):
選中,not use example driver porting by myself。
選中之后,自動(dòng)返回RW007軟件包配置頁(yè)面:
此時(shí),RW007的STM32驅(qū)動(dòng)就被禁用掉了。
左右移動(dòng)光標(biāo)到Save上,回車(chē)保存配置。
保存配置之后,.config和rtconfig.h文件將會(huì)更新。
保存配置后,就可以退出配置界面了。
2.5.5 下載軟件包
剛剛我們用menuconfig選中了“RT-Thread online packages”中的RW007軟件包,RW007軟件包的代碼默認(rèn)不在本地。menuconfig選中并保存配置后,需要運(yùn)行pkgs —update命令,才能將RW007軟件包的代碼下載到本地。
執(zhí)行pkgs —update命令,輸出如下圖所示:
2.5.6 更新MDK項(xiàng)目文件
使用menuconfig命令修改配置之后(尤其是增加軟件包之后),需要更新MDK項(xiàng)目文件,新增的代碼才會(huì)被編譯。
對(duì)于scons創(chuàng)建時(shí)添加了project-name參數(shù)的,更新時(shí)也要加project-name參數(shù):
2.6 編譯運(yùn)行
2.6.1 打開(kāi)MDK項(xiàng)目
鼠標(biāo)雙擊打開(kāi)rtt_n947.uvprojx文件,打開(kāi)后看到如下圖所示:
可以看到,RW007的代碼已經(jīng)在里面了。
2.6.2 編譯下載程序
在Keil中,按F7編譯項(xiàng)目,按F8下載固件。
下載固件之前,需要使用USB Type-C線(xiàn),將PCUSB口連接到FRDM-MCXN947開(kāi)發(fā)板的MCU-LINK口上。
默認(rèn)的下載固件設(shè)置是正確的,如果不能下載固件很可能是沒(méi)有安裝MCXN947的支持包。
下載固件完成,Keil輸出如下
2.6.3 運(yùn)行RT-Thread
打開(kāi)串口終端,配置如下:
連接串口后,
按下開(kāi)發(fā)板復(fù)位鍵,串口終端可以看到,輸出了RW007固件的版本信息:
2.7 WIFI測(cè)試
接下來(lái),我們進(jìn)行一些簡(jiǎn)單的WiFi測(cè)試。
接下來(lái)我們查看wifi命令的使用方式:
2.7.1 掃描測(cè)試
嘗試掃描周?chē)腤iFi熱點(diǎn):
可以看到,成功掃描到了周?chē)腤iFi熱點(diǎn)。
2.7.2 連接測(cè)試
嘗試連接其中的一個(gè)熱點(diǎn)(這里連接的是無(wú)線(xiàn)路由器):
可以看到,成功連接上了WiFi熱點(diǎn),并且獲取到了IP地址。
2.8 延遲測(cè)試
ping命令可以輸出網(wǎng)絡(luò)延遲信息,可以作為網(wǎng)絡(luò)延遲的簡(jiǎn)單測(cè)試工具。
2.8.1 ping百度
接下來(lái),用 ping 命令測(cè)試一下,板子能不能ping通baidu.com:
可以ping通baidu.com,說(shuō)明TCP/IP協(xié)議基本沒(méi)有太大問(wèn)題(域名解析OK,而且可以發(fā)送數(shù)據(jù)到公網(wǎng)主機(jī))。
2.8.2 ping路由器
接下來(lái),ping一下局域網(wǎng)的無(wú)線(xiàn)路由器:
ping局域網(wǎng)的路由器,延遲明顯小了很多。
作為對(duì)比,可以看一下筆記本ping路由器的延遲:
我的筆記本電腦連接的也是同一個(gè)無(wú)線(xiàn)路由器。
模組比筆記本的WiFi延遲稍微高一點(diǎn)點(diǎn),差別不大。
2.9 帶寬測(cè)試
2.9.1 添加netutils軟件包
RT-Thread的netutils組件中提供了iperf命令,可以用于測(cè)試網(wǎng)絡(luò)帶寬。
menuconfig界面,依次選擇:
選中netutils軟件包,然后回車(chē)進(jìn)入軟件包配置頁(yè)面:
如圖,選中Enable iperf-liked network performace tool。
左右移動(dòng)光標(biāo)到Save上,回車(chē)保存配置。
保存配置之后,.config和rtconfig.h文件將會(huì)更新。
保存配置后,就可以退出配置界面了。
執(zhí)行pkgs —update命令,輸出如下圖所示:
更新MDK項(xiàng)目文件:
重新編譯固件,下載固件,復(fù)位運(yùn)行,串口終端就有iperf命令了:
2.9.2 iperf命令參數(shù)
直接運(yùn)行iperf,默認(rèn)輸出幫助信息:
可以看到iperf的命令參數(shù)使用方法。
注意:
RT-Thread的iperf命令實(shí)現(xiàn)中,對(duì)參數(shù)的順序由要求,如果使用過(guò)程中發(fā)現(xiàn)參數(shù)報(bào)錯(cuò),需要查看源碼定位原因;
RT-Thread的iperf不支持持續(xù)時(shí)間選項(xiàng),一般是先啟動(dòng),后通過(guò)stop選項(xiàng)停止的方式控制測(cè)試時(shí)長(zhǎng);
2.9.3 PC端的iperf
PC端的iperf可以到iperf項(xiàng)目官網(wǎng)下載:https://iperf.fr/iperf-download.php
我使用的mobaxterm,里面自帶了iperf命令,所以就不單獨(dú)下載了:
2.9.4 iperf測(cè)試準(zhǔn)備工作
進(jìn)行iperf測(cè)試之前,需要準(zhǔn)備:
最好用PC創(chuàng)建熱點(diǎn),用無(wú)線(xiàn)路由器也行,但是需要確保信號(hào)強(qiáng)度足夠;
確保開(kāi)發(fā)板和PC直接的距離不要太遠(yuǎn),否則WiFi信號(hào)較弱,測(cè)試的結(jié)果可能會(huì)偏??;
最好在WiFi熱點(diǎn)較少的環(huán)境下進(jìn)行測(cè)試,否則測(cè)出的結(jié)果數(shù)據(jù)也會(huì)偏小;
2.9.5 進(jìn)行iperf帶寬測(cè)試
下面進(jìn)行測(cè)試,測(cè)試步驟如下:
在PC上,啟動(dòng)iperf服務(wù)端:iperf -s -p 5678
在開(kāi)發(fā)板上,通過(guò)ping命令測(cè)試開(kāi)發(fā)板和PC直接IP是否可達(dá)
在開(kāi)發(fā)板上,啟動(dòng)iperf客戶(hù)端:iperf -c 192.168.3.6 -p 5678 (其中192.168.3.6是PC的IP地址)
啟動(dòng)后,可以通過(guò)ps命令查看正在運(yùn)行的線(xiàn)程
一段時(shí)間后,在開(kāi)發(fā)板上,停止iperf客戶(hù)端:iperf —stop
開(kāi)發(fā)板上iperf停止后,PC端應(yīng)該可以看到iperf的輸出;
開(kāi)發(fā)板上整個(gè)過(guò)程的輸出如下:
PC端輸出:
可以看到帶寬為7.02Mbps。
2.9.6 iperf測(cè)試小結(jié)
實(shí)際上,影響WiFi帶寬測(cè)試結(jié)果數(shù)據(jù)的因素很多。我們這里,其中,起決定性的的主要由以下幾個(gè)方面:
模組本身支持的最高WiFi傳輸速率;
模組接口支持的最高工作頻率;
主控芯片接口最高支持的工作頻率;
熱點(diǎn)的WiFi最高傳輸速率;
各種環(huán)境因素,例如開(kāi)發(fā)板和PC直接的距離、環(huán)境是否有其他熱點(diǎn)干擾等等;
為了測(cè)出比較高的數(shù)據(jù),我把開(kāi)發(fā)板直接放到路由器天線(xiàn)邊上,才測(cè)到以上的結(jié)果:
2.10 補(bǔ)充說(shuō)明
如果有時(shí)候測(cè)試發(fā)現(xiàn)棧溢出,則需要修改TCPIP線(xiàn)程棧大小:
將其修改為4096即可。
-
WIFI
+關(guān)注
關(guān)注
81文章
5310瀏覽量
204864 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5124瀏覽量
98276 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1305瀏覽量
40412
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
睿賽德(RT-Thread) RW007 WIFI模塊免費(fèi)試用申請(qǐng)
【Vision Board創(chuàng)客營(yíng)連載體驗(yàn)】RW007 WIFI模塊聯(lián)網(wǎng)
RT-Thread RW007 SPI WiFi 模塊使用
【睿賽德 RW007 WiFi 模塊試用連載】RW007 WIFI模塊聯(lián)網(wǎng)與使用(一)
【睿賽德 RW007 WiFi 模塊試用連載】基于RT-STUDIO配置RW007的過(guò)程
【睿賽德 RW007 WiFi 模塊試用連載】基于RT-STUDIO配置RW007
【睿賽德 RW007 WiFi 模塊試用連載】RW007模塊調(diào)試心路歷程
【睿賽德 RW007 WiFi 模塊試用連載】STM32F411連接RW007
請(qǐng)問(wèn)RW007是否可以作為WIFI主機(jī)?
在柿餅派上更新RW007固件與驅(qū)動(dòng)并測(cè)試RW007的BLE功能
rw007不確定原因的不定時(shí)重啟何解
配置rw007 SPI WiFi模塊的步驟教程
【RW007系列綜合實(shí)戰(zhàn)1】STM32+RW007實(shí)現(xiàn)BLE透?jìng)鞴δ?/a>
![【<b class='flag-5'>RW007</b>系列綜合<b class='flag-5'>實(shí)戰(zhàn)</b>1】STM32+<b class='flag-5'>RW007</b>實(shí)現(xiàn)BLE透?jìng)鞴δ? /> </a>
</div> <div id=](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
基于RT-Thread測(cè)試RW007(SPI接口)的無(wú)線(xiàn)網(wǎng)絡(luò)功能
![基于RT-Thread測(cè)試<b class='flag-5'>RW007</b>(SPI接口)的無(wú)線(xiàn)網(wǎng)絡(luò)功能](https://file1.elecfans.com/web2/M00/8F/EA/wKgaomTTTKmAAWafAADKNfgs2ho176.jpg)
評(píng)論