Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
vscode插件
RT-Thread项目助手v0.2.0 - 支持Env Windows
发布于 2025-01-16 09:21:14 浏览:30
订阅该版
[tocm] # RT-Thread项目助手v0.2.0 - 支持Env Windows ## 更新日志 ### 2025-01-16 - v0.2.0 - 新增 支持Env Windows(v1.x和v2.x): - 支持菜单配置面板; - 支持scons方式编译; - 支持在终端执行scons、pkgs、menuconfig命令; - 支持在资源管理器上右键,选择“在此处打开ConEmu”。 - 新增 路径规则支持用`${userHome}`表示当前用户的主目录。 - 新增 搜索RT-Thread Studio安装目录下的调试器路径时,添加搜索openocd。 - 新增 RT-Thread Studio类型的项目支持在资源管理器右键菜单: 添加到头文件搜索路径。 - 新增 扩展设置项: - Env方式支持自定义下载和调试时所用的产物路径。 - 使用Env方式时,保存配置时是否自动更新软件包。 - 自定义任务和终端中额外的环境变量(如果相同则覆盖)。 - 状态栏图标是否显示标题。 > **说明** > > 如果状态栏的按钮过多,可关闭此设置。或者,右键隐藏不常用的按钮。 - 新增 将状态栏的所有按钮的命令导出,支持通过命令面板(`Ctrl+Shift+P`)运行 - 优化 扩展设置项除了“RT-Thread Studio”安装路径以外,都允许在账户云同步。 - 优化 如果在vscode设置修改了扩展设置,提示是否重新加载vscode窗口或重新生成配置。 - 移除 引用用户主目录使用`~`的方式(请改成`${userHome}`)、引用环境变量使用`${VAR_NAME}`的方式(请写成`${env:VAR_NAME}`) **(破坏性变更)** 。 ## 验证条件 v0.2.0的主要工作是,把[kconfiglib.py](https://github.com/ulfalizer/Kconfiglib)库使用typescript重写以支持菜单配置(考虑Linux和MacOS),已在`stm32f407-atk-explorer`对比验证解析、加载、写入Kconfig的效果,7663个配置项的输出完全一致。 - BSP:正点原子探索者[stm32f407-atk-explorer](https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f407-atk-explorer),使用RT-Thread Studio(scons --dist)将以下版本转为RT-Thread项目框架后测试: - RT-Thread v3.1.5(2021-05-28,提交号92beddf3bccf6346e26aa097f82464456fb8e6bd) - RT-Thread v4.0.3(2019-12-20,提交号64945ba882d651a14933eb4e7b3d93d10d6daae1) - RT-Thread v5.0.0(2023-01-08,提交号897ba365baa1cb2105b46964082d378e7b14b47b) - RT-Thread v5.2.0(2025-01-14,提交号4e370473c5f9c52c22310fd97598fc436e1b7856) Env版本测试了[ENV-Windows v2.0.0版本发布](https://club.rt-thread.org/ask/article/af8952fcf0ca464b.html)帖子中的网盘的各个版本;v2.x版本还测试了离线环境(安装在`C:/env-windows`)、联网环境(安装任意位置)和powershell脚本(安装在`~/.env`)方式安装的。 结果: | Env \ RT-Thread | v3.1.5 | v4.0.3 | v5.0.0 | v5.2.0 | | -------------- | ------------- | ------------- | ------- | ------------- | | v1.2.0 | ×
1
| ×
1
| √ | ×
2
| | v1.2.4 | ×
1
| ×
1
| √ | ×
2
| | v1.3.5 | ×
1
| ×
1
| √ | ×
2
| | v1.5.0 | ×
1
| ×
1
| √ | ×
2
| | v1.5.2 | ×
1
| ×
1
| √ | ×
2
| | v2.x | √ | √ | √ | √ | 1. 在RT-Thread Env v1.x版本中编译时报错,其它操作正常。 ```sh scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... scons: *** [applications\main.c] ValueError : unsupported pickle protocol: 4 scons: building terminated because of errors. ``` 2. RT-Thread版本 > v5.1.0与RT-Thread Env v1.x不兼容,清除和编译都报错,其它操作正常。 ```sh scons: Reading SConscript files ... ImportError: No module named gcc: ... File "rt-thread\components\dfs\dfs_v1\SConscript", line 2: from gcc import * ``` ## 操作步骤 ### 先决条件 1. 已安装好Env Windows。(对于Env v2.x联网环境方式,需要先启动一次env.exe以下载相关依赖。) 2. 支持scons方式编译的项目。 ### 扩展激活 启用扩展后,当工作区文件夹中(第一级)有`.cproject`文件或`rt_config.py`文件时,扩展会自动激活。 打开BSP的所在文件夹(`BSP_DIR`),例如: - 第一种:已经是RT-Thread标准项目框架的: ```sh stm32f407-atk-explorer/ # BSP_DIR ├── applications/ ├── packages/ # PKGS_DIR (PKGS_ROOT) ├── rt-thread/ # RTT_DIR ├── ... ├── Kconfig ├── SConscript ├── SConstruct ├── rtconfig.h └── rtconfig.py ``` - 第二种:是RT-Thread仓库下的某个BSP: ```sh rt-thread/ # RTT_DIR ├── bsp/ │ └── stm32/ │ ├── libraries/ │ ├── ... │ └── stm32f407-atk-explorer # BSP_DIR │ ├── applications/ │ ├── packages/ # PKGS_DIR (PKGS_ROOT) │ ├── ... │ ├── Kconfig │ ├── SConscript │ ├── SConstruct │ ├── rtconfig.h │ └── rtconfig.py ├── ... ├── src/ ├── tools/ └── Kconfig ``` ### 生成配置 1. 点击状态栏的“导入”图标按钮,弹出配置面板: ![1735660800032.png](https://oss-club.rt-thread.org/uploads/20250116/ac7030c933aaff75f59b69ece1a69e07.png.webp) - **Env工具路径**:`ENV_ROOT`,即`tools`文件夹的所在文件夹。例: - `c:/env-windows`(v2.x 离线环境方式安装) - `E:/BaiduNetdiskDownload/env-windows-v2.0.0/env-windows`(v2.x 联网环境方式安装) - `C:/Users/jswyll/.env`或`${userHome}/.env`(v2.x [powershell方式安装](https://github.com/RT-Thread/env)) - `E:/BaiduNetdiskDownload/env_released_1.3.5_gcc10_python2/env-windows-v1.3.5`(v1.x 无需虚拟环境) - **RTT根目录**:`RTT_DIR`,RT-Thread源码的主目录。以前面的BSP`stm32f407-atk-explorer`为例,第一种填`rt-thread`,第二种情况填`../../..`。 2. 其它选项与RT-Thread Studio的配置方式一致。 3. 点击“生成”按钮并等待生成完毕。 如果操作无误状态栏应显示“配置”和“终端”图标按钮: ![1735660800033.png](https://oss-club.rt-thread.org/uploads/20250116/f82a4f25cbbdf000a36dc60b7ddbdd94.png) ### 菜单配置 > **说明** > > 对于Env v2.x,安装好依赖后,除非本扩展无法正常使用,否则 **无需** 且 **不建议** 运行`${ENV_ROOT}/env.ps1`或`${ENV_ROOT}/.venv/Scripts/Activate.ps1`激活虚拟环境。 1. 点击状态栏的“配置”图标按钮,弹出菜单配置面板: ![1735660800034.png](https://oss-club.rt-thread.org/uploads/20250116/43f99929b460bb5ae8af031751f85bde.png.webp) 2. 单击菜单项的标题(或最左边侧的图标)可以展开或折叠菜单,有几类配置项: - 整数(`int`) - 十六进制数(`hex`) - 字符串(`string`) - 布尔(`bool`) - 单项选择(`choice`) ![1735660800035.png](https://oss-club.rt-thread.org/uploads/20250116/b7741697850b1bc8641ea8525f71e46a.png.webp) 3. 可以在搜索框中输入关键词搜索配置项(或菜单项): ![1735660800036.png](https://oss-club.rt-thread.org/uploads/20250116/032a0b7dc36a60383b3bf2ff90e02c2a.png.webp) 关键词可以是以下之一中的字词: - 名称,例如`RT_NAME_MAX` - 标题,例如`The maximal size of kernel object name`, - 帮助,例如`Each kernel object, such as thread, timer, semaphore etc, has a name,the RT_NAME_MAX is the maximal size of this object name.` - 翻译后的标题,例如`内核对象名称的最大大小` - 翻译后的帮助,例如`每个内核对象,如线程、定时器、信号量等,都有一个名称。 RT_NAME_MAX是该对象名称的最大大小。` 4. 如果修改了Kconfig文件,可以点“重新加载”按钮来刷新菜单配置。 5. 点击“保存”按钮保存配置,默认自动更新软件包: ![1735660800037.gif](https://oss-club.rt-thread.org/uploads/20250116/e0bd73dba8c9f1e0e8ce4bd1d4c1a63a.gif) > **说明** > > - 可以在 菜单栏 -> 终端 -> 运行任务... 手动运行该任务: > > ![1735660800038.png](https://oss-club.rt-thread.org/uploads/20250116/f1ade042d7221b9bc50e824ab957054d.png.webp) > > - 可以在扩展设置中关闭保存配置时自动更新软件包。 ### 终端任务 清除、构建、下载、调试的操作方式与RT-Thread Studio类型的一致。本质上是运行定义的`tasks.json`中的任务,可以通过点击状态栏图标按钮、菜单栏、配置快捷键、使用任务扩展等方式运行终端任务。 ![1735660800039.png](https://oss-club.rt-thread.org/uploads/20250116/76d58ef4674faf7d4c9d2322b1ae8888.png.webp) ### 终端集成 - 点击状态栏的“终端”图标按钮,弹出终端面板。可以使用scons、pkgs命令。 ![1735660800040.png](https://oss-club.rt-thread.org/uploads/20250116/a4ced6dba18e88234307cae5cc75fad8.png.webp) menuconfig也勉强(见[使用限制](#使用限制))可以使用: ![1735660800041.png](https://oss-club.rt-thread.org/uploads/20250116/509459423de1e52181e8f90496d1c777.png.webp) - 也可以通过点击终端面板右上角的下拉图标来打开终端。 ![1735660800042.png](https://oss-club.rt-thread.org/uploads/20250116/624779c20aa779b994b21f9921d5b599.png.webp) ### 原始方式 由于还未能和官方取得联系,对接RT-Thread Env方式实现方法是我通过试用各个Env-Windows版本来推测的,如果存在问题,欢迎反馈。 可以在vscode资源管理器上(文件或文件夹)右键,选择“在此处打开ConEmu”,使用原始方式开发: ![1735660800043.png](https://oss-club.rt-thread.org/uploads/20250116/d029e17cbf6fc677e14169fb4319a144.png) ![1735660800044.png](https://oss-club.rt-thread.org/uploads/20250116/041fa24ddfc791cf8ad6c5dca6f7e3ca.png.webp) > **说明** > > - ConEmu启动的版本是生成配置时所选择的Env路径下的。 > > - ConEmu启动的工作目录是在vscode右键时的文件夹。 ## 使用限制 - RT-Thread Env方式暂不支持生成浏览代码的`.vscode/c_cpp_properties.json`。可以使用`scons --target=vsc`相关命令生成,然后(打开一个`.c`文件)在状态栏右下角切换C/C++配置为`rt-thread`。 - 如果在工作区启用Python扩展激活了虚拟环境且虚拟环境的python版本和选择的RT-Thread Env(v1.x是Python2.7)中的(大)版本不一致,很可能导致终端出错,因为Python扩展激活的Python的优先级更高。出现错误请修改Python扩展的设置关闭激活虚拟环境,或(在工作区)禁用Python扩展。 - 在vscode打开的主目录必须是BSP主目录或RT-Thread Studio项目的主目录。如果不是,可参考[子文件夹](#子文件夹)执行操作。 > **说明** > > BSP的Kconfig中的路径可能是导入后的,如果在RT-Thread主仓库中的BSP开发,可以尝试使用RT-Thread Studio导入项目或使用`scons --dist`相关命令生成标准的目录结构。 - 切换选择的Env版本后,可能需要再导入一次,否则python可能会报错。 - 终端集成: RT-Thread Env 2.x的menuconfig不支持用上下左右箭头来移动,这是[kconfiglib.py](https://github.com/ulfalizer/Kconfiglib)本身的特征(需要`curses`之类的模块来支撑)。进入子菜单请用`Enter`或`L`键;返回上一级请用`ESC`或`H`键;上、下请用`K`、`J`键。 RT-Thread Env 1.x的menuconfig如何上下移动尚未清楚。 - 旧版本RT-Thread Studio内置的`J-Link/v7.50a`不支持解析elf文件,如果使用RT-Thread Env方式,请使用以下方式之一解决: - 使用RT-Thread Studio的SDK管理器安装高版本的J-Jlink - 升级RT-Thread Studio - 下载[新版本的Segger Jlink](https://www.segger.com/downloads/jlink)并在生成配置时选择 - 修改编译脚本(例如`rt_config.py`)使它生成`.hex`文件,然后在扩展设置中填入`.hex`文件的路径。 - 作者还不了解其它平台的Env安装与用法,Env方式暂未支持MasOS和Linux。 ## 更佳实践 团队协作中,不同成员的工具安装目录等配置很可能不同。虽然可以通过把`.vscode`、`*.code-workspace`加入`.gitignore`中来屏蔽不同团队成员的配置,但那样也损失了可共享的公用配置,如果没有完善的文档,若干年之后再`git clone`用起来或许连自己都要折腾几番。个人认为更好的方式是: - 不把`.vscode`、`*.code-workspace`加入`.gitignore`忽略规则; - 如果在不同项目中是通用的,有差异的设置保存在“用户”域中; - 如果在不同项目中不是通用的,每个成员在系统中创建环境变量; - 把剩余的小部分不可通用的(没有同步到远程仓库的)所需配置或产生配置的方式写在项目文档中。 例如,`stm32f407-atk-explorer-v5.0.0`项目决定用Env v2.0版本,每个成员把具体的Env版本的所在文件夹设为环境变量`RTT_ENV_V2`,然后在生成配置时“Env工具路径”填写`${env:RTT_ENV_V2}`、“GCC编译器路径”填写`${env:RTT_ENV_V2}/tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-gcc`。 ## 子文件夹 如果想在子文件夹进行本扩展的相关功能,可以按照下面的步骤转换为vscode[多根工作区](https://code.visualstudio.com/docs/editor/multi-root-workspaces)。 假设当前打开的文件夹的目录结构如下: ```sh rt-thread/ # opened this folder ├── bsp/ │ └── stm32/ │ ├── libraries/ │ ├── ... │ └── stm32f407-atk-explorer # BSP_DIR │ ├── applications/ │ ├── packages/ │ ├── ... │ ├── Kconfig │ ├── SConscript │ ├── SConstruct │ ├── rtconfig.h │ └── rtconfig.py ├── ... ├── src/ ├── tools/ └── Kconfig ``` 1. 如果还不是vscode工作区(`xxx.code-workspace`):在vscode打开父级目录`workspace`;点击 vscode菜单栏 -> 文件 -> 将工作区另存为...,在弹出的保存窗口中填工作区的名称和位置,然后点击“保存”按钮就生成了一个vscode工作区(`xxx.code-workspace`)。 ```sh rt-thread/ # .code-workspace root1 ├── bsp/ │ └── stm32/ │ ├── libraries/ │ ├── ... │ └── stm32f407-atk-explorer # BSP_DIR │ ├── applications/ │ ├── packages/ │ ├── ... │ ├── Kconfig │ ├── SConscript │ ├── SConstruct │ ├── rtconfig.h │ └── rtconfig.py ├── ... ├── src/ ├── tools/ └── Kconfig ``` 2. 点击 vscode菜单栏 -> 文件 -> 将文件夹添加到工作区...,选择那个子文件夹(`BSP_DIR`); ```sh rt-thread/ # .code-workspace root1 ├── bsp/ │ └── stm32/ │ ├── libraries/ │ ├── ... │ └── stm32f407-atk-explorer # BSP_DIR │ ├── applications/ │ ├── packages/ │ ├── ... │ ├── Kconfig │ ├── SConscript │ ├── SConstruct │ ├── rtconfig.h │ └── rtconfig.py ├── ... ├── src/ ├── tools/ └── Kconfig stm32f407-atk-explorer # .code-workspace root2 (BSP_DIR) ├── applications/ ├── packages/ ├── ... ├── Kconfig ├── SConscript ├── SConstruct ├── rtconfig.h └── rtconfig.py ``` 3. 点击状态栏的子模块图标来选择当前的工作区文件夹为上一步加入多根工作区的文件夹(`.code-workspace root2`)。 > **说明** > > 以后在vscode打开步骤1的`xxx.code-workspace`。 4. 在`.code-workspace root1`继续后续操作。(在`.code-workspace root2`当然是可以的,它的物理路径和`.code-workspace root1`中的那个子文件夹的是一样的。) ## 已知问题 - 扩展会在以下情况自动关闭ComEmu: - 先后两次导入项目(生成配置)如果选择的RT-Thread Env的路径不一样,且之前打开的ComEmu没有关闭; - 关闭扩展时之前打开的ComEmu没有关闭。 但其中的cmd没有被关闭: ![1735660800045.png](https://oss-club.rt-thread.org/uploads/20250116/60281dc25ff02673b2db6c98e3014f1c.png) 手动关闭即可。 - 导入项目(生成配置)时,如果选择的调试服务器是Segger Jlink,由于Jlink不直接支持`--version`参数,校验表单时需要多等待约3秒的时间。 - 如果之前的构建任务启动失败(例如Makefile构建目录不存在),下次运行会一直弹出等待进度。 - 快速连续多次点击状态栏按钮启动构建任务时,如果之前的任务启动失败,任务报告统计可能错乱。 ## 未完待续 - 引用`Serial Monitor`扩展,提供监视功能并在运行时发生(硬件)错误时显示对应的源码文件位置。 - 研究MacOS、Linux的Env安装与使用。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
聚散无由
https://jswyll.com/
文章
3
回答
11
被采纳
5
关注TA
发私信
相关文章
1
RTT-VSCODE插件编译RTT工程与RTT Studio结果不符
2
RT-Thread Studio For Vscode占满上行网络
3
linux下使用RT-Thread Studio插件如何进行stlink下载
4
vscode编译rtt工程报错
5
求助一下,vscode插件提示“未搜索到设备”,无法连接
6
vscode使用rtt插件编译空白芯片工程报错
7
vscode中studio插件编译报错
8
vscode RT Thread micropython 插件找不到串口
9
vscode插件如何更改Target interface
10
vscode下RT-thread插件出现SyntaxError问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部