那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在rt-smart簡化應用程序開發

RTThread物聯網操作系統 ? 來源:RTThread物聯網操作系統 ? 作者:RTThread物聯網操作 ? 2022-01-04 15:59 ? 次閱讀

簡介

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 根目錄

● 輸入工程名稱

●選擇構建方式

Linux 平臺支持 CMake、Make、scons 等構建工具

Windows 平臺支持 scons 構建工具

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

添加用戶功能代碼

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

 1#include
 2
 3#include
 4
 5#include
 6
 7
 8#defineGET_PIN(PORTx,PIN)(32*(PORTx-1)+(PIN&31))
 9
10#defineLED_PINGET_PIN(5,3)
11
12
13
14structrt_device_pin_mode
15
16{
17
18rt_uint16_tpin;
19
20rt_uint16_tmode;
21
22};
23
24structrt_device_pin_status
25
26{
27
28rt_uint16_tpin;
29
30rt_uint16_tstatus;
31
32};
33
34
35intmain(intargc,char**argv)
36
37{
38
39rt_device_tpin_dev;
40
41structrt_device_pin_modepin_mode;
42
43structrt_device_pin_statuspin_status;
44
45
46rt_kprintf("helloworld!
");
47
48
49
50pin_dev=rt_device_find("pin");
51
52rt_device_open(pin_dev,RT_DEVICE_OFLAG_RDWR);
53
54pin_mode.pin=LED_PIN;
55
56pin_mode.mode=0;
57
58
59rt_device_control(pin_dev,0,(void*)&pin_mode);
60
61pin_status.pin=LED_PIN;
62
63
64pin_status.status=1;//closeled
65
66rt_device_write(pin_dev,0,(void*)&pin_status,sizeof(pin_status));
67
68rt_thread_mdelay(200);
69
70
71pin_status.status=0;//openled
72
73rt_device_write(pin_dev,0,(void*)&pin_status,sizeof(pin_status));
74
75
76rt_device_close(pin_dev);
77
78return0;
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

原文標題:如何使用 VSCode 開發 RT-Thread Smart 應用程序

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3569

    瀏覽量

    89301
  • 應用程序
    +關注

    關注

    38

    文章

    3292

    瀏覽量

    57912
  • RT-Thread
    +關注

    關注

    31

    文章

    1305

    瀏覽量

    40386

原文標題:如何使用 VSCode 開發 RT-Thread Smart 應用程序

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    通過Uboot?TFTP啟動rt-smart內核

    介紹Windows下通過 Uboot??TFTP 方式下載和啟動rt-smart 內核
    的頭像 發表于 06-30 12:34 ?3807次閱讀
    通過Uboot?TFTP啟動<b class='flag-5'>rt-smart</b>內核

    RT-Smart的資料合集

    可知,RT-Smart 32 位內核運行在地址空間的高地址,而用戶程序代碼運行在低地址。2、RT-Smart物理頁內存管理詳解伙伴系統在現代操作系統中被廣泛地用于分配連續的物理內存頁。其基本思想是將物理
    發表于 03-22 15:06

    分析一下在rt-smart操作系統中將一個應用程序運行起來要經過哪些步驟

    1、RT-Smart ELF 應用程序加載運行在用戶態應用程序處理的任務中,elf 加載運行是一個比較重要的步驟,下面就分析一下在 rt-smart 操作系統中,想要將一個
    發表于 04-13 17:17

    rt-smart操作系統中將ELF應用程序運行起來要經過哪些步驟

    1、RT-Smart ELF應用程序加載運行在用戶態應用程序處理的任務中,elf 加載運行是一個比較重要的步驟,下面就分析一下在 rt-smart 操作系統中,想要將一個
    發表于 06-13 18:18

    D1哪吒開發rt-smart內核固件的燒寫與運行步驟

    ,無法正確的引導,這個后面抽時間分析,因為這樣,就可以直接u-boot bootm 啟動了后面繼續研究 rt-smart 的啟動流程,用戶應用程序的編譯 與 燒寫方法。原作者:張世爭
    發表于 06-17 11:06

    rt-smart應用程序系統調用實現過程是怎么樣的?

    rt-smart應用程序系統調用實現過程是怎么樣的? 比如open時候怎么一步一步切換到內核態的?
    發表于 09-08 17:00

    樹莓派上rt-smart的應用編程入門

    文章,一些介紹及樹莓派上rt-smart的應用編程入門(更多的從應用程序角度入手)。后續還包括在rt-smart上的不同應用程序介紹: wget curl移植 busybox移植 sd
    的頭像 發表于 05-13 14:10 ?3231次閱讀
    樹莓派上<b class='flag-5'>rt-smart</b>的應用編程入門

    rt-smart移植分析:從樹莓派3b入手

    移植rt-smart到最新的板子上具體需要注意哪些細節,哪些才是移植rt-smart的關鍵點?本文從樹莓派3b上移植rt-smart的角度,從頭分析rt-sm...
    發表于 01-25 18:48 ?0次下載
    <b class='flag-5'>rt-smart</b>移植分析:從樹莓派3b入手

    rt-thread驅動框架分析》-lcd驅動

    首發:Rice 嵌入式開發技術分享作者:RiceDIY簡介rt-smart相關文章《rt-smart的第一個應用程序,imx6ull用戶態點燈》《r
    發表于 01-25 19:24 ?2次下載
    《<b class='flag-5'>rt</b>-thread驅動框架分析》-lcd驅動

    RT-Smart ELF應用程序加載運行過程分析

    在用戶態應用程序處理的任務中,elf 加載運行是一個比較重要的步驟,下面就分析一下在 rt-smart 操作系統中,想要將一個應用程序運行起來要經過哪些步驟。
    的頭像 發表于 11-02 09:57 ?1007次閱讀

    優雅的在D1S上運行RT-Smart

    -Thread Smart 是基于 RT-Thread 操作系統上的混合操作系統,簡稱為 rt-smart,它把應用從內核中獨立出來,形成獨立的用戶態應用程序,并具備
    的頭像 發表于 11-16 20:15 ?2965次閱讀

    絲滑的在RT-Smart用戶態運行LVGL

    開發流程 1、RT-Smart 環境搭建 下載 RT-Smart 用戶態應用代碼: 1 git?clone?https: //github.com/RT-Thread/userapps
    的頭像 發表于 11-22 20:20 ?1320次閱讀

    RT-Smart riscv64匯編注釋

    rt-smart在全志D1上的代碼為例,主要注釋了rt-smart在riscv64上的系統初始化和異常處理的代碼倉庫地址https://gitee.com/rtthread/rt
    的頭像 發表于 02-08 21:40 ?1220次閱讀

    RT-Smart riscv64匯編注釋

    rt-smart在全志D1上的代碼為例,主要注釋了rt-smart在riscv64上的系統初始化和異常處理的代碼
    的頭像 發表于 10-12 17:26 ?653次閱讀
    <b class='flag-5'>RT-Smart</b> riscv64匯編注釋

    RT-Smart應用開發筆記:fopen造成文件被清空問題的分析記錄

    RT-Smart 應用(apps)開發環境,ubuntu 20.04 + win10 VS Code
    的頭像 發表于 10-20 16:01 ?659次閱讀
    <b class='flag-5'>RT-Smart</b>應用<b class='flag-5'>開發</b>筆記:fopen造成文件被清空問題的分析記錄
    真人百家乐平台下载| 大发888 备用6222.co| 百家乐官网投注之对冲投注| 在线百家乐作弊| 电子百家乐官网作假| 大发888 m摩卡游戏| 百家乐怎打能赢| 百家乐官网投注规则| 威尼斯人娱乐城怎么玩| 网上百家乐官网的玩法技巧和规则 | 百家乐庄闲出现几| 太原百家乐官网的玩法技巧和规则 | 778棋牌游戏| 电子百家乐作假| 百家乐下注稳赢法| 大发888娱乐官方网站| 百家乐生活馆拖鞋| 百家乐官网返水1.2不限| 百家乐官网游戏算牌| 皇家赌场| 玩德州扑克技巧| 威尼斯人娱乐网上百家乐| 广州百家乐牌具公司| 百家乐官网群shozo| 百家乐公式与赌法| 百家乐大小牌路的含义| 百家乐官网路单破解器| 爱婴百家乐的玩法技巧和规则| 六合彩网址大全| 百家乐游戏机出千| 玩百家乐官网会犯法吗| 娱乐城注册送| 百家乐现金投注信誉平台| 大赢家足球即时比分| 抚远县| 六合彩官方网站| 大发888 zhldu| 大发888官方lc8| 大发888娱乐场18| 大发8881| 棋牌游戏大厅|