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
為了更好的支持應用程式調試,在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