RT Thread + CLion環境搭建

RT Thread + CLion環境搭建

  • 0.前言
  • 一、準備工具
    • 1. Env + RT Thread v5.1
    • 2.CLion安裝
    • 3.編譯及下載工具
  • 二、新建Env工程
  • 三、CLion配置
  • 四、運行測試


0.前言

??事情的起因是最近在使用RT Thread Studio時,發現默認的 rtt 內核版本及交叉編譯鏈版本都過于陳舊,于是手動升級到了rtt 5.1和gcc-10,結果在studio內新建工程報了大量錯誤和警告,查找了一些帖子對這些錯誤進行了修改,雖然最后能夠順利編譯,但是考慮到每次新建工程都需要如此繁瑣的步驟,并且依然存在一些問題(比如基本的reboot命令都無法識別),所以決定換用Env工具。
??Env的缺點就是目前只能基于BSP來新建工程,如果沒有適配對應的芯片,使用起來會比較麻煩,不過就目前來看,已適配的BSP應該足夠DIY玩家使用了。在網上搜索了一下,目前大部分都是使用Env + Keil的開發方式,也有使用VScode的,不過使用VSCode + Studio插件的居多,且鑒于這些工具或是IDE風格太舊,或是插件配置比較繁瑣,所以筆者參考之前STM32CubeIDE + CLion的帖子,摸索著搭建了RT Thread Env + CLion的開發環境,實際使用起來也確實很方便,感興趣的讀者也可以嘗試使用此方式。

一、準備工具

1. Env + RT Thread v5.1

Env工具:https://github.com/RT-Thread/env
RT Thread:https://github.com/RT-Thread/rt-thread/tree/v5.1.0

此部分的安裝筆者就不詳細贅述了,由于筆者之前安裝過python、git等工具,所以也不清楚哪些是必要依賴,可以自行站內搜索或參考RTT官網,能夠使用鼠標右鍵打開ConEmu Here命令行就算成功。

2.CLion安裝

此部分可以參考視頻:https://www.bilibili.com/video/BV1Vd4y1t7aJ,2024.05測試仍有效。

3.編譯及下載工具

CLion中需要添加以下工具鏈來進行編譯和下載:
注:這些工具鏈只需要下載對應的Release壓縮包即可,親測不需要添加到windows系統環境變量,只用在CLion中指定工具路徑即可。

1.cmake:https://cmake.org/download/ (下載Binary distributions版本的windows壓縮包)
2.gcc-arm-none-eabi-gcc:https://developer.arm.com/downloads/-/gnu-rm
3.mingw64:https://github.com/niXman/mingw-builds-binaries/releases
注:此工具用于CLion的默認編譯配置,編譯一些x86平臺的代碼可以用,這里添加此工具,主要用來部署默認C\C++環境,提供代碼提示及跳轉等功能。i686-xxxx-release-win32-dwarf-rt-v10-rev3.7z為32位,x86_64-xxxx-release-win32-seh-rt_v10-rev3.7z為64位。
4.openocd:https://gnutoolchains.com/arm-eabi/openocd/ (用來調試程序)

下載完成后解壓,將文件夾名稱改的方便一點并存放到一個合適的路徑:
在這里插入圖片描述

二、新建Env工程

??在RT Thread內核目錄下的bsp目錄中,找到與自己使用的芯片相同的開發板,筆者使用的是STM32F103RCT6,就以stm32f103-yf-ufun這個開發板為例。右鍵此目錄,并選擇ConEmu Here打開Env命令行:
在這里插入圖片描述
輸入scons --dist命令,即可在本目錄下生成一個模板工程,將此模板拷貝到合適的位置并保存,后續就可以基于此工程進行開發:
在這里插入圖片描述
在這里插入圖片描述

三、CLion配置

??這里筆者將project工程拷貝,并復制了一份作為第一個demo示例,右擊此文件夾,選擇ConEmu Here打開命令行,輸入scons --target=cmake即可創建CMake工程:
在這里插入圖片描述
在這里插入圖片描述
再使用CLion打開此工程目錄,首次打開時,可以先修改編譯結果的保存目錄,到項目更目錄的build目錄下,方便后續管理,如果有彈窗提示配置工具鏈,可以先直接關閉,稍后一起配置。
在這里插入圖片描述
點擊CLion左上角的文件 --> 設置,在工具鏈選項中,新建一個工具鏈配置,將下載的相關工具鏈路徑填入:
在這里插入圖片描述
點擊項目右上角的編譯配置,新建一個配置:
在這里插入圖片描述
在這里插入圖片描述
這個面板配置文件可以在openocd目錄下的share\openocd\scripts\board找到一些芯片的配置,如果沒有自己需要的話,可能需要自行搜索一下,這里筆者使用的STM32F103RCT6沒有找到對應的配置文件,所以在st_nucleo_f103rb.cfg基礎上進行了修改,該配置文內容如下:

# SPDX-License-Identifier: GPL-2.0-or-later# This is an ST NUCLEO F103RB board with a single STM32F103RBT6 chip.
# http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF259875source [find interface/stlink.cfg]transport select hla_swdsource [find target/stm32f1x.cfg]#reset_config srst_only

可以看到該配置是通過st-link燒錄,使用的最終配置文件是stm32f1x.cfg(猜測同系列用的應該差不多),最后一行應該是和燒錄后重啟相關的配置,筆者查了一些帖子說是要注釋掉比較好(注釋后能正常運行,所以沒有和不注釋作對比),配置完這些后就可以通過CLion進行編譯、燒錄和debug:
在這里插入圖片描述
注:由于Env生成的項目,默認生成的是rtthread.elf和rtthread.bin文件,所以如果想生成hex文件,需要手動修改CMakeLists.txt中的規則,在項目頂層的CMakeLists.txt中添加如下命令:

ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O ihex ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.hex COMMAND ${CMAKE_SIZE} ${CMAKE_PROJECT_NAME}.hex)

在這里插入圖片描述
此規則會在每次重新項目時被覆蓋,所以每次需要手動添加,如果有更好的方法歡迎讀者指正。生成的二進制文件就在項目目錄下的build文件夾中。

四、運行測試

燒錄:
在這里插入圖片描述
調試:
在這里插入圖片描述
唯一的不足,燒錄和調試時的打印信息是紅色的,總給人一種下載失敗的錯覺。不過瑕不掩瑜,寫起代碼確實很舒服,還能使用一些ai代碼插件,還是挺不錯的,感興趣的讀者可以試試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12224.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot 表單提交參數綁定 List 下標越界,超過 256,報數組越界異常

文章目錄 》原因》解決方案 》原因 Spring Validation 的 org.springframework.validation.DataBinder 類中默認限制,表單提交 List 元素數量超過 256 時就會拋出異常 public class DataBinder implements PropertyEditorRegistry, TypeConverter {/** Default li…

JS算法-十大排序算法(上)

思想小劇場 如果我的相對論被證明是正確的,德國人就會說我是德國人,法國人會說我是一個世界公民;如果我的相對論被否定了,法國佬就會罵我是德國鬼子,而德國人就會把我歸為猶太人。—愛因斯坦 以下案例都是升序 const a…

《無畏契約》游戲畫面出現“撕裂感“,你清楚背后的原理嗎?

🌸個人主頁:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵?熱門專欄:🍕 Collection與數據結構 (91平均質量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

信息化總體架構方法_2.信息化工程建設方法

1.信息化架構模式 信息化架構一般有兩種模式,一種是數據導向架構,一種是流程導向架構。對于數據導向架構重點是在數據中心,BI商業智能等建設中使用較多,關注數據模型和數據質量;對于流程導向架構,SOA本身就…

黑馬程序員鴻蒙HarmonyOS端云一體化開發【13-15】

前置知識:arkts 一套開發工具,一套語言,搞定客戶端和云端兩個的編寫。其中application就是客戶端,cloudProgram就是云端。 開發人員->全棧開發工程師,降低了開發成本,且提供了很多現成的云服務&#xf…

AI原生實踐:測試用例創作探索

測試用例作為質量保障的核心,影響著研發-測試-發布-上線的全過程,如單元測試用例、手工測試用例、接口自動化用例、UI 自動化用例等,但用例撰寫的高成本尤其是自動化用例,導致了用例的可持續積累、更新和迭代受到非常大制約。長久…

Python并發編程 05 鎖、同步條件、信號量、線程隊列、生產者消費者模型

文章目錄 一、基礎概念二、同步鎖三、線程死鎖和遞歸鎖四、同步條件(event)五、信號量六、線程隊列(queue)1、常用方法2、queue模塊的三種模式(1)FIFO隊列(2)LIFO隊列(3&…

【JS面試題】原型原型鏈

一、面試真題展示: 1. 如何準確判斷一個變量是不是數組? ① 使用instanceof進行判斷:a instanceof Array ② 使用Array.isArray()進行判斷:Array.isArray(a) 2. 手寫一個簡易的jQuery,考慮插件和擴展性? …

內網工具之LDP的使用

LDP 是微軟自帶的一款活動目錄信息查詢工具,在域控的 cmd 窗口執行 ldp 命令即可打開 LDP 工具。普通域成員主機默認是沒有 LDP 工具的,可以自行上傳ldp.exe 工具上去查詢活動目錄信息。不在域內的機器,也可以通過上傳 ldp.exe 工具上去執行。…

tomcat--目錄結構和文件組成

目錄結構 目錄說明bin服務啟動,停止等相關程序和文件conf配置文件lib庫目錄logs日志記錄webapps應用程序,應用部署目錄workjsp編譯后的結果文件,建議提前預熱訪問 /usr/local/apache-tomcat-8.5.100/work/Catalina/localhost/ROOT/org/apac…

c++string類型

概述 string類型是c的字符串類型&#xff0c;其繼承自basic_string類。使用string需要導入頭文件#include <string>,并且在命名空間std下。cstring是否是寫時復制? (像Qt的string一樣)? 經過自己的測試&#xff0c;推斷&#xff0c;c的方式不是寫時復制&#xff0c;其在…

PingCAP 戴濤:構建面向未來的金融核心系統

作者&#xff1a;戴濤 導讀 近日&#xff0c;平凱星辰解決方案技術部總經理戴濤在 2024 數據技術嘉年華活動中&#xff0c;做了主題為“構建面向未來的金融核心系統”的分享&#xff0c;本文為戴濤演講實錄的全文。 文章分析了中國金融行業的發展趨勢&#xff0c;并且基于這…

在 Mac OS 上使用 Homebrew 打造便捷的軟件安裝體驗:apt-get install 就是brew install:

標題&#xff1a;在 Mac OS 上使用 Homebrew 打造便捷的軟件安裝體驗 在 Mac OS 系統中&#xff0c;雖然不支持 apt-get install&#xff0c;但我們有幸擁有 Homebrew 這樣出色的包管理器。它為我們在 Mac 上安裝各種所需軟件提供了極大的便利。 一、安裝 Homebrew 要安裝 Home…

算法提高之加成序列

算法提高之加成序列 核心思想&#xff1a;迭代加深 dfs 從上往下逐漸增大depth 這樣下面沒有用的方案就不用遍歷了 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 110;int n;int path[N];//當前求哪個位置…

PDF編輯閱讀器PDF Expert for Mac v3.10.1中文激活版

PDF Expert for Mac是一款易于使用的 PDF 編輯器和注釋器&#xff0c;專為 Mac 設備設計。它允許用戶輕松查看、編輯、簽名、注釋和共享 PDF。該軟件使用戶能夠向他們的 PDF 添加文本、圖像、鏈接和形狀&#xff0c;突出顯示和標記文本&#xff0c;填寫表格以及簽署數字文檔。它…

STL----resize

resize的作用 設置容器元素個數和初始值。 resize和reserve resize即改變容器元素個數&#xff0c;也改變容器容量。 reserve只改變容器容量&#xff0c;不改變容器元素個數。 reserve有什么用 reserve---存儲&#xff0c;容量&#xff0c;保留。 1&#xff0c;設置容器容…

Python實現麥克風錄音保存到wav

功能展示&#xff1a; 運行環境&#xff1a; Python: 3.10.4 64-bit 操作系統&#xff1a; 截圖環境&#xff1a;win10 64-bit 視頻錄屏環境&#xff1a;win10 64-bit 功能說明&#xff1a; 點擊界面開始按鈕開始錄音&#xff0c;點擊停止按鈕結束錄音。 源碼文件列表&…

十二生肖Midjourney繪畫大挑戰:釋放你的創意火花

隨著AI藝術逐漸進入大眾視野&#xff0c;使用Midjourney繪制十二生肖不僅能夠激發我們的想象力&#xff0c;還能讓我們與傳統文化進行一場新式的對話。在這里&#xff0c;我們會逐一提供給你創意滿滿的繪畫提示詞&#xff0c;讓你的作品別具一格。而且&#xff0c;我們還精選了…

掃碼槍與Input的火花

文章目錄 前言一、需求&#xff1a;交互細節二、具體實現兩個核心的函數&#xff1a;自動聚焦 三&#xff0c;擴展知識input 與 change的區別 前言 在瀏覽器掃描條形碼獲取條形的值&#xff0c;再操作對應的邏輯。這是比較常見的業務&#xff0c;這里記錄實際操作。 其中PC端…

2023年國賽高教杯數學建模C題蔬菜類商品的自動定價與補貨決策解題全過程文檔及程序

2023年國賽高教杯數學建模 C題 蔬菜類商品的自動定價與補貨決策 原題再現 在生鮮商超中&#xff0c;一般蔬菜類商品的保鮮期都比較短&#xff0c;且品相隨銷售時間的增加而變差&#xff0c;大部分品種如當日未售出&#xff0c;隔日就無法再售。因此&#xff0c;商超通常會根據…