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