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代碼插件,還是挺不錯的,感興趣的讀者可以試試。