【RT-Thread作品秀】遠(yuǎn)程調(diào)試終端
作者:鐘良濤
概述
本設(shè)計靈感來源于調(diào)試人員出差調(diào)試設(shè)備遇到困難時,提供指導(dǎo)的工程師可以遠(yuǎn)程實時查看調(diào)試數(shù)據(jù),以提供指導(dǎo)。本設(shè)計實現(xiàn)了一個遠(yuǎn)程調(diào)試助手,ART-Pi接收到無線串口按一定協(xié)議發(fā)送的數(shù)據(jù)后,將數(shù)據(jù)解析并打包為json格式發(fā)送給訂閱該話題的MQTT上位機(jī)。搭配ART-Pi Mate可實現(xiàn)多種通信接口的調(diào)試。
開發(fā)環(huán)境
硬件:ART-Pi ART-Pi Mate(自主設(shè)計)
RT-Thread版本:4.0.3
開發(fā)工具及版本:RT-Thread Studio 2.0.0 PyCharm20.2 Python3.7
RT-Thread使用情況概述
組件:finsh、lwIP、SPI、串口、Pin
軟件包:cjson、wlan_wiced、phaomqtt、AT command
內(nèi)核:信號量、多線程
硬件框架
硬件框圖如上圖所示,硬件部分由ART-Pi和ART-Pi Mate和以CC2530無線透傳模塊模擬的調(diào)試設(shè)備組成。其中ART-Pi Mate為專為ART-Pi設(shè)計的擴(kuò)展板,包含LCD、UART、NRF24L01等功能。
以CC2530無線透傳模塊模擬待調(diào)試的設(shè)備,將該模塊連接到PC機(jī),按照固定的協(xié)議格式發(fā)送數(shù)據(jù)包到ART-Pi Mate上焊接的CC2530無線透傳,ART-Pi以串口中斷的方式進(jìn)行數(shù)據(jù)讀取并解析,隨后將數(shù)據(jù)打包為Json格式通過Wifi發(fā)送至MQTT上位機(jī)。
軟件框架說明
該應(yīng)用中軟件分為嵌入式軟件部分和桌面端軟件。嵌入式軟件實現(xiàn)調(diào)試終端的數(shù)據(jù)接收、解析、打包、發(fā)布等功能,桌面端軟件實現(xiàn)數(shù)據(jù)的接收和顯示功能。軟件流程如上圖所示,調(diào)試終端數(shù)據(jù)處理線程對CC2530無線透傳模塊發(fā)送的數(shù)據(jù)進(jìn)行解析、打包,然后由MQTT客戶端線程進(jìn)行數(shù)據(jù)發(fā)布。桌面端軟件的MQTT客戶端線程訂閱調(diào)試終端發(fā)送的話題,然后通過信號槽的方式通知Qt界面線程刷新界面以顯示數(shù)據(jù)。
軟件模塊說明
數(shù)據(jù)接收模塊:
數(shù)據(jù)接收模塊通過串口中斷的方式實現(xiàn),首先以中斷的方式打開串口設(shè)備,然后每當(dāng)有數(shù)據(jù)達(dá)到時,觸發(fā)相應(yīng)的中斷回調(diào)函數(shù),在中斷回調(diào)函數(shù)里發(fā)送有數(shù)據(jù)到達(dá)的信號量,通知數(shù)據(jù)處理線程進(jìn)行數(shù)據(jù)讀取。
數(shù)據(jù)解包:
數(shù)據(jù)包的格式定義如下:
以狀態(tài)機(jī)的方式進(jìn)行數(shù)據(jù)解包,狀態(tài)機(jī)轉(zhuǎn)移圖如下圖所示:
數(shù)據(jù)打包:
該設(shè)計將JSON打包為如下格式:
演示效果
演示視頻:
比賽感悟
通過本次比賽熟悉了rt-thread的操作系統(tǒng)以及rt-thread studio的使用方式,被rt-thread優(yōu)雅的設(shè)計所折服。通過這次比賽,使用了rt-thread的線程、信號量、設(shè)備模型、組件、軟件包等功能,在搭配rt-thread studio進(jìn)行開發(fā)時,是非常的便捷的,直接在設(shè)置中打開對應(yīng)的功能,rt-thread studio就會自動下載好相應(yīng)的資源并為我們配置好,使原本復(fù)雜的配置過程簡單化,極大程度的提高了開發(fā)效率。
在參賽過程中也遇到了不少問題,其中包括開發(fā)板啟動不成功,最后通過重新刷寫bootloader解決;還有出現(xiàn)了線程堆棧溢出,通過調(diào)整堆棧大小解決;還有自己編寫的軟件模塊在重新配置軟件包后在工程中消失的問題,最后重新新建源代碼文件夾解決;選擇MQTT軟件包并使能例程后,源代碼中沒有對應(yīng)代碼,最后發(fā)現(xiàn)和軟件包版本有關(guān)系。總之,開發(fā)過程中遇到了一些大大小小的問題,但解決問題的過程就是能力提升的過程,也很感謝主辦方提供的這次寶貴的比賽機(jī)會。