如何使用 VSCode 開發 RT-Thread Smart 應用程式

2022-01-05 RTThread物聯網作業系統


RT-Thread Smart做為一個「新」的系統,在開發上相比原來的RT-Thread模式還是存在著挺大的不同。原來的RT-Thread開發,是把相關的應用都寫入到內核中,最終編譯在一個映像中進行運行,基本的過程就是編寫代碼,編譯,燒寫,運行或調試。而內核和應用獨立的開發方式則是,內核相對穩定、固定,改動的基本上都是應用程式。所以一般是編寫應用程式,編譯,然後通過一定的方式放入到目標板上進行運行。這個也是Linux的一貫思路、方式,會有一個把應用程式放入到目標板的過程,Linux下可以是NFS網絡文件系統的方式,然後調試也並不是都具備,或者有的時候使用命令行的gdb調試模式等<唔,有些些複雜>。

 

在rt-smart上也一直在思考如何簡化應用程式開發,最初的有RT-Thread Studio集成開發環境,基本上可以做到創建應用程式,編譯,調試的完整過程。但隨著rt-smart的往後延申、發展,因為它同時也提供了完整POSIX環境,可以把Linux的一些應用程式無縫地移植到rt-smart上,在編譯的時候更好的方式是在Linux下進行。這個時候只支持Windows的RT-Thread Studio就有些沒那麼很好的滿足要求了。而同時VS Code還有運行在Windows主機,遠程ssh穿越到Linux的模式,這樣使用VS Code無疑會是一種便利並小巧的模式。在這樣的考慮下,那麼是否可以有一份簡單的VS Code插件,把開發變得更簡單。

 

不服就幹,一鍵,編譯/下載/調試,三連擊!

 

VS Code的RT-Thread Smart插件介紹


在這樣的想法下,VS Code下的RT-Thread Smart插件擴展就出爐了,簡單就是它的方式,支持的功能包括:

l 創建 RT-Thread Smart 工程

l 支持 CMake、Make、scons 等構建方式

l 支持清理工程

l 支持一鍵下載、調試

l 支持在不同的平臺,例如 Linux、Windows下進行開發

 

安裝VS Code RT-Thread Smart插件

在使用RT-Thread Smart插件時,首先是需要在VS Code中安裝它。目前VS Code RT-Thread Smart插件已經上傳到VS Code市場,所以安裝非常方便,可以直接在VS Code 的擴展市場中搜索 RT-Thread Smart,點擊安裝即可:

 

下面我們配合著運行RT-Thread Smart的ARM Cortex-A7開發板,ART-pi smart來使用、體驗一番吧。

 

搭建ART-Pi Smart環境
硬體環境搭建


● 串口連接:下方的 USB Type-C 接口,既是用作電源供電,同時也是 USB 轉 UART 接口,主要用於系統的控制臺命令行交互,包括控制臺輸入和輸出

● 網絡接口:通過路由器和網線(或者通過板載的 RW007 WiFi 模塊),將開發板和測試電腦連接在同一個區域網內

 

(ART-Pi Smart開發板具備串口USB Type-C供電的功能,但如果你需要跑更複雜的液晶屏應用時,可能會出現供電不足的問題,這個時候可以外接USB Type-C到USB接口的方式來解決供電的問題)

 

準備軟體環境

(以下連結請複製至外部瀏覽器打開)

要在ART-Pi Smart上運行RT-Thread Smart系統,需要下載ART-Pi Smart開發板SDK及工具鏈並進行安裝。開發板的SDK放在gitee倉庫中,它主要包括 RT-Thread Smart 作業系統的源碼,BSP 驅動,應用程式 demo 等。可以通過 Git 方式下載 ART-Pi Smart SDK 包(Windows、Linux都可以):

git clone https://gitee.com/rtthread/ART-Pi-smart.git

 

RT-Thread Smart的工具鏈是基於musl libc的GNU GCC工具鏈,其中還包括了針對內核的libc以及用戶態針對應用程式的libc。用戶可以根據自己的開發平臺(Linux,Windows)情況來選擇不同版本的工具鏈,下載連結是:


https://pan.baidu.com/s/1p7PRhV3dTGIb7hxv34YWYw 

提取碼: ndxq

在下載工具鏈後,需要把它解壓到ART-Pi smart SDK的/tools/gnu_gcc路徑下。

 

另外在ART-Pi smart開發板的eMMC內已經固化了一個 rt-smart 內核固件,可以上電直接開機使用(如果希望下載自己編譯的內核,可以通過 u-boot + tftp 或 usb 方式加載運行)

 

小試牛刀寫個應用程式試試

這裡將以 Windows 環境下使用 VS Code 開發 rt-smart 用戶應用程式為例來體驗VS Code的RT-Thread Smart插件擴展。

 

創建工程

在 VS Code 上使用Ctrlt+Shift+P快捷鍵,輸入 RT-Thread 關鍵字,選擇「創建 RT-Thread Smart 工程」, 然後按提示執行以下操作:

● 輸入 ART-Pi Smart的 SDK 根目錄

● 輸入工程名稱

● 選擇構建方式

以 Windows 環境下使用 VS Code 開發 rt-smart 用戶應用程式為例

 

添加用戶功能代碼


用戶應用,我們來點個LED燈:

1#include <stdio.h>
2
3#include <rtthread.h>
4
5#include <rtdevice.h>
6
7
8#define GET_PIN(PORTx, PIN)  (32 * (PORTx - 1) + (PIN & 31))
9
10#define LED_PIN  GET_PIN(5,3)
11
12
13
14struct rt_device_pin_mode
15
16{
17
18    rt_uint16_t pin;
19
20    rt_uint16_t mode;
21
22};
23
24struct rt_device_pin_status
25
26{
27
28    rt_uint16_t pin;
29
30    rt_uint16_t status;
31
32};
33
34
35int main(int argc, char **argv)
36
37{
38
39    rt_device_t pin_dev;
40
41    struct rt_device_pin_mode pin_mode;
42
43    struct rt_device_pin_status pin_status;
44
45
46rt_kprintf("hello world!\n");
47
48
49
50    pin_dev = rt_device_find("pin");
51
52    rt_device_open(pin_dev, RT_DEVICE_OFLAG_RDWR);
53
54    pin_mode.pin = LED_PIN;
55
56    pin_mode.mode = 0;
57
58
59    rt_device_control(pin_dev, 0 ,(void*)&pin_mode);
60
61    pin_status.pin = LED_PIN;
62
63
64    pin_status.status = 1; // close led
65
66    rt_device_write(pin_dev, 0 ,(void*)&pin_status, sizeof(pin_status));
67
68    rt_thread_mdelay(200);
69
70
71    pin_status.status = 0; // open led
72
73    rt_device_write(pin_dev, 0 ,(void*)&pin_status, sizeof(pin_status));
74
75
76    rt_device_close(pin_dev);
77
78    return 0;
79
80}

編譯應用程式

1. 點擊 VS Code 左下角的 「編譯」、「清理」、「下載」 狀態欄,會自動執行編譯工程、清理工程、下載用戶 APP 固件文件到開發板,這裡我們選擇編譯功能。

2. 編譯通過後,會自動生成用戶 APP 固件,默認的名稱是 hello.elf

 

GDB 在線調試

為了更好的支持應用程式調試,在RT-Thread Smart內核中運行了一個GDB調試樁,可以通過它來調試用戶態應用程式,源碼級調試。這種方式也是一種軟調試,免仿真器,而和PC主機連接則可以使用TCP網絡連接或者串口連接,未來在RT-Thread Smart上還會支持USB連接。

 

在使用VS Code插件創建rt-smart應用程式時,它會默認把相關的配置都預先設置好,對於調試來說,主要會有個板卡的IP位址設置,這點需要多注意到。在ART-Pi smart開發板上,可以通過命令行命令ifconfig來獲得板卡的IP位址。

 

在 VS Code 上直接按 F5  快捷鍵, 即可啟動 GDB 在線調試 rt-smart 用戶應用程式。如下圖所示,進入調試模式之後,VS Code 左側會自動跳轉到 「運行和調試」 視圖,可以查看變量、監視變量、查看調用堆棧、設置斷點等常用調試功能。 

在調試的過程中,我們也可以看到板卡上的LED燈在閃爍。

 

最後我們用一個連貫的短視頻來結束整個過程

視頻內容(操作順序):啟動 rt-smart 內核、安裝 C/C++ 插件、RT-Thread Smart 插件、Windows 下創建 rt-smart 用戶應用程式(scons)、修改用戶代碼(增加 GPIO LED 控制)、編譯、下載、GDB 在線調試等操作。

 

 

通過這樣的方式,我們是不是發現這個開發方式很簡單,有些類似MCU上的Keil MDK/IAR的開發模式?編寫程序,編譯/燒寫/調試。非常簡潔,可以避免一些Linux初學者對於如何編譯程序,並把它下載運行的迷茫。

 

在後續中,RT-Thread Smart及VS Code插件還會不斷升級,包括對USB的支持,對Linux下一般應用程式,編譯/調試的支持,後續見!

 

RT-Thread Smart 交流平臺

如果遇到什麼問題需要協助,或有什麼建議和意見需要反饋的,可以加入 ART-Pi Smart 官方交流 QQ 群或者登錄論壇的 rt-smart 板塊發帖反饋。

ART-Pi Smart :

https://art-pi.gitee.io/smart-website/

ART-Pi Smart SDK :

https://gitee.com/rtthread/ART-Pi-smart

ART-Pi Smart 官方交流 QQ 群 :622828244

rt-smart 論壇板塊(發帖反饋):

https://club.rt-thread.org/ask/tag/1339.html 

(以上連結請複製至外部瀏覽器打開)


申請加入rt-smart微信交流群,請加小師弟好友,微信號:rtthread2020


立即掃碼加好友

最後,感謝大家地持續使用和關注,期待大家將rt-smart分享給更多的人,同時也期待收到大家更多寶貴的反饋和建議。

👇👇👇 點擊閱讀原文即可下載 ART-Pi Smart SDK

相關焦點

  • RT-Thread Smart 上手指南
    編譯應用程式 1# 進入到rt-smart目錄 2cd rt-smart 3 4# 設置對應的環境變量,和原RT-Thread相比,多了RTT_CC_PREFIX環境變量 5source smart-env.sh 6 7# 編譯用戶態程序 8cd userapps 9scons1011scons: Reading
  • RT-Thread Smart上手指南~
    編譯應用程式 1# 進入到rt-smart目錄 2cd rt-smart 3 4# 設置對應的環境變量,和原RT-Thread相比,多了RTT_CC_PREFIX環境變量 5source smart-env.sh 6 7# 編譯用戶態程序 8cd userapps 9scons1011scons: Reading
  • rt-smart移植分析:從樹莓派3b入手
    本文從樹莓派3b上移植rt-smart的角度,從頭分析rt-smart移植的關鍵細節。為了簡化系統,這裡只做了rt-smart的最小系統的移植,啟用了rt-smart最基本的特性。下面來描述一下移植的基本過程了思路,這種思路也可以借鑑移植到其他的類似的帶有mmu的系統平臺上,可以在不同的開發板上體驗rt-smart的開發過程。
  • 樹莓派4上跑rt-smart是什麼體驗?
    hello rt-thread!msh />3.效果展示為了更好的展示rt-smart的在樹莓派4上的運行效果,我通過一個視頻進行演示和說明。首先樹莓派連接上網線,上電後可以ping通外網。本次視頻演示了五個應用程式hello、ping、pong、webclient、vi。hello就是一個可以執行的程序。ping與pong是兩個應用程式進行交互通信的。
  • 如何向RT-Thread提交一個BSP?
    如果你曾經下載過RT-Thread的源碼倉庫,在最常用的STM32 BSP上面的smartfusion2,這個BSP就是我提交的了,如果有讀者朋友使用過這款晶片,歡迎體驗,或者提交BUG。BSP包有的朋友可能注意到了,我這裡使用的是FPGA晶片,FPGA晶片還能運行RT-Thread嗎?
  • 【應用筆記】小白也能玩轉RT-Thread之串口設備【官方出品】
    本應用筆記描述了如何使用RT-Thread的串口設備,包括串口配置、設備操作接口的應用。
  • Linux系統下ESP32開發板搭建RT-Thread開發環境
    王朝陽:杭州閃易科技嵌入式負責人,從事嵌入式Linux軟體、驅動開發、STM單片機開發、ESP32等開發。
  • RT-Thread Nano如何適配pin設備API,並在RT-Thread Nano使用軟體包
    本文介紹了如何在 RT-Thread Studio 上使用 RT-Thread Nano,並基於BearPI-IOT STM32L431RCT6的基礎工程進行講解如何使用PIN設備接口及相關軟體包使用。
  • RT-Thread Nano如何適配Pin設備API,並在RT-Thread Nano使用軟體包
    本文介紹了如何在 RT-Thread Studio 上使用 RT-Thread Nano,並基於BearPI-IOT STM32L431RCT6的基礎工程進行講解如何使用PIN設備接口及相關軟體包使用。
  • RT-Thread Studio開發環境搭建
    從今天開始,我們學習使用RT-Thread Studio IDE開發STM32程序,RT-Thread Studio是一站式的 RT-Thread
  • 基於RT-Thread的雷射雷達避障小車
    只要你採用RT-Thread作業系統設計開發,不限硬體(每人可提交作品數不限)就有機會獲得2000元現金大獎哦!投稿:andychen@rt-thread.com背景描述由於在學校裡很少有機會讓我將所學的東西付諸於實踐.有時候學完一個東西沒法真正了解自己是否掌握,同時為了進一步提高自己的能力,不再漫無目的的學習.所以決定做這樣一輛小車.其中PCB原理圖和初版PCB_layout是我在寒假在家中完成的,程序是基於rt-thread[BSP]stm32f429-Apollo
  • 【RT-Thread Studio入門】使用輪詢法檢測按鍵
    t=1本期我們將講解,如何在之前創建的Hello World項目中添加按鍵檢測功能。一、創建一個新的線程用於按鍵檢測1、使用動態線程創建方法創建一個線程首先,定義一個動態線程句柄結構體指針:1/* 定義一個按鍵檢測線程句柄結構體指針 */2static rt_thread_t key_thread = RT_NULL;然後使用動態線程創建函數創建一個線程
  • RT-Thread 編程風格指南
    RT-Thread 做為一份開源軟體,它需要由不同 的人採用合作的方式完成,這份文檔是開發人員的一個指引。RT-Thread 的開發人員請遵 守這樣的編程風格。同時對於使用 RT-Thread 的用戶,也可通過這份文檔了解 RT-Thread 代碼內部一些約定從而比較容易的把握到 RT-Thread 的實現方式。
  • 基於 NIOS II 處理器的RT-Thread物聯網作業系統移植與使用教程
    下載完成之後的文件名為:rt-thread-master.zip在RTT_Test工程下新建一個文件夾,命名為」rt-thread」,添加src文件夾,include文件夾到rt-thread文件夾下,然後添加
  • RT-Thread物聯網作業系統入門(1)——Keil 模擬器 STM32F103 上手指南
    MDK-ARM 軟體中的軟體仿真模擬器,採用完全軟體模擬方式解釋執行 ARM 的機器指令,並實現外圍的一些外設邏輯,從而構成一套完整的虛擬硬體環境,使得用戶能夠不藉助真實的硬體平臺就能夠在電腦上執行相應的目標程序。MDK-ARM 集成開發環境因為其完全的 STM32F103 軟體仿真環境,也讓我們有機會在不使用真實硬體環境的情況下直接在電腦上運行目標代碼。
  • RT-Thread RTC設備學習筆記
    2.1 設置日期(set_date)rt_err_t set_date(rt_uint32_t year, rt_uint32_t month, rt_uint32_t day)參數描述year待設置生效的年份month待設置生效的月份day待設置生效的日返回——RT_EOK設置成功-RT_ERROR失敗,沒有找到 rtc 設備其他錯誤碼失敗如何使用呢?
  • 靈動微課堂 (第140講) | 基於MM32 MCU的OS移植與應用——RT-Thread 中斷管理(2)
    >調用rt_hw_interrupt_install()後,當這個中斷源產生中斷時,系統將自動調用裝載的中斷服務程序。恢復中斷往往是和關閉中斷成對使用的,調用的函數接口如下:void rt_hw_interrupt_enable(rt_base_t level);rt_hw_interrupt_enable() 的輸入參數使用中斷鎖來操作臨界區的方法可以應用於任何場合,且其他幾類同步方式都是依賴於中斷鎖而實現的,可以說中斷鎖是最強大的和最高效的同步方法
  • RT-Thread Studio使用體驗
    官網下載地址:https://www.rt-thread.org/page/studio.html下載完成後直接安裝即可,安裝過程也沒什麼需要特別注意的。安裝好後打開軟體,可以看到,軟體都是中文的,使用起來應該會比較方便。熟悉eclipse的朋友可能一眼就能看出來,這個軟體也是基於eclipse平臺開發的,界面設計和eclipse很相似。
  • 如何將RT-Thread移植到Cortex-M系列平臺Step by step
    RT-Thread的源碼可以從官網下載,具體方法為進入rt-thread的官網 http://www.rt-thread.org/,找到「入門」選項,單擊「下載」按鈕,進入下載頁。One ELF Section per Function,這個可以使編譯的代碼足夠小,並且不影響程序執行。
  • RT-Thread MicroPython IDE 正式版發布
    我們希望能給更多的 MicroPython 開發者帶來便利,也希望各位開發者能多多向我們反饋意見,這樣我們才能繼續迭代開發,給大家帶來更好的使用體驗。接下來讓我來向大家介紹一下本次發布的正式版中有哪些重要特性吧: