Mist SDK Tools 是一个面向 Mist SDK / Zephyr 项目开发的 VS Code 扩展,提供应用与板卡选择、构建、烧录、Source 产物定位、配置管理和 CI/CD 辅助能力。
主要功能
Application 视图
- 在 Mist SDK Tools 活动栏中提供自定义 Webview 侧边栏。
- 默认根节点为
APP,支持根节点行内重命名。
- 支持选择 MIST 目录、应用、板卡和额外编译参数。
- 应用和板卡列表支持搜索选择。
- 支持执行额外命令,适合运行与当前 MIST 目录相关的临时命令。
Refresh UI 会清空内存缓存、重新扫描目录,并写入 <MIST>/.cache/mist-sdk-cache.json。
Compile Application 执行 west build,输出目录为 build/<root-name>。
Rebuild 会先删除对应 build/<root-name> 目录,再重新构建。
Debug 视图
- 在 Mist SDK Tools 容器内显示每个 APP 配置对应的 build 目录。
- 提供
West Flash 按钮,执行 west -v flash -d build/<root-name>。
- 提供
Ozone 按钮,查找并使用 Ozone 打开当前 build 目录下的 .jdebug 工程。
- 提供常用 build 按钮:
initlevels、ram_report、rom_report、dashboard、traceconfig、dtdoctor。
- 支持单独刷新 Debug 视图。
Source 视图
- 解析工程入口文件、编译相关 PROJECT 文件和已生成 build 目录中的 OUTPUT 产物。
- 支持普通 build 和 sysbuild 多 domain 输出。
- Entry 包含应用目录中的
CMakeLists.txt、Kconfig、prj.conf、main.c,所选板卡列表项对应的 .dts、.yaml、.yml、*_defconfig、*_deconfig,以及应用 boards 目录下对应的 .conf、.overlay 文件。
- PROJECT 按依赖文件的最长公共目录生成资源管理器树,展示应用编译用到的所有可定位文件,数据来自 Entry、
compile_commands.json 和 ninja -C <build-dir> -t deps。
- PROJECT 标题栏提供搜索按钮,可在 Source 视图内展开 PROJECT 内容搜索框,只在 PROJECT 当前文件列表中搜索。
- OUTPUT 包含
.dts、zephyr/include/generated/zephyr/autoconf.h、kconfig-trace.md、zephyr.map、zephyr.lst 等文件。
- 板卡路径优先从
<MIST>/.cache/mist-sdk-cache.json 中解析,cache 不可用时回退扫描 boards 下 yaml/yml 的 identifier。
- 支持过滤搜索;搜索时会自动展开包含匹配文件的 APP 和 Entry/PROJECT/OUTPUT 分区。
- 记住展开状态、过滤文本和当前打开文件的 active 状态;当打开文件属于 PROJECT 时,会自动展开并选中对应节点。
- 标题栏按钮支持全部收缩/全部展开,并根据状态切换图标。
配置和默认目录
- 默认 MIST 目录保存到 workspace setting:
mist-sdk-tools.projectDir。
- 启动时会优先识别当前 workspace 是否为
mist / zns,或 workspace 下是否存在 mist / zns 子目录。
- 每个 root 可独立保存应用、板卡和额外命令;未配置 root 专属目录时会回退到默认 MIST 目录。
- Add Config 和 CICD 面板会自动填充默认 MIST 目录。
命令执行与日志
- 构建、烧录和额外命令输出到 VS Code Terminal Pseudoterminal,支持 ANSI 彩色日志。
- 同名日志终端会复用,不会每次执行命令都新建终端。
Compile Application、Rebuild 和 west build -t 目标复用 Mist SDK Build 终端。
West Flash 使用 Mist SDK Flash 终端。
- 历史日志可使用 VS Code Terminal 自带的清理功能处理。
- 命令执行时会注入常见彩色输出环境变量,如
FORCE_COLOR、CLICOLOR_FORCE、TERM=xterm-256color 等。
- 虚拟环境通过
VIRTUAL_ENV 和 PATH 注入,不执行 PowerShell Activate.ps1。
CI/CD 面板
- 通过 Webview 选择 Mist 目录、应用、固件并填写 commit hash。
- 可执行后端脚本并查看日志。
- 固件列表会读取
<MIST>/.cache/mist-sdk-cache.json。
使用指南
安装后,活动栏会出现 Mist SDK Tools 容器,内部包含三个视图:
也可以通过命令面板执行扩展命令,例如 Add Config、CICD、Refresh UI、Mist SDK: Compile Application。
配置 MIST 目录
首次使用时,扩展会尝试自动查找 workspace 中的 mist 或 zns 目录,并写入 workspace setting:
{
"mist-sdk-tools.projectDir": "d:/code/mist/project/mist"
}
如果自动识别失败,可以点击 Application 视图标题栏的文件夹按钮,或执行 Select Mist Directory 手动选择。
选择应用和板卡
- 在
Application 视图展开 APP 节点。
- 点击应用或板卡分区右侧搜索按钮进行 Quick Pick 搜索。
- 选择后,当前 root 会保存
selectedAppRelativePath 和 selectedBoardName。
编译和重新编译
选择应用和板卡后,可以在 Application 视图中点击:
Compile Application:执行普通构建。
Rebuild:先删除对应构建目录,再执行构建。
Extra Command:在当前 MIST 目录下执行额外命令。
构建命令格式:
west build -b <board> <app> -d build/<root-name> [extraCommand]
构建成功后,扩展会更新 clangd.arguments 中的 --compile-commands-dir=<absolute build dir>。
Debug 视图
Debug 视图按 root 展示当前配置对应的 build 目录,并提供烧录、报告和 Ozone 入口。
| 按钮 |
作用 |
终端 |
West Flash |
对当前 root 的 build 目录执行 west -v flash |
Mist SDK Flash |
initlevels |
执行 west build -t initlevels |
Mist SDK Build |
ram_report |
执行 west build -t ram_report |
Mist SDK Build |
rom_report |
执行 west build -t rom_report |
Mist SDK Build |
dashboard |
执行 west build -t dashboard |
Mist SDK Build |
traceconfig |
执行 west build -t traceconfig |
Mist SDK Build |
dtdoctor |
执行 west build -d build/<root-name> -- -DZEPHYR_SCA_VARIANT=dtdoctor |
Mist SDK Build |
Ozone |
查找并打开当前 build 目录中的 .jdebug 工程 |
独立启动 Ozone |
West Flash 执行的命令格式:
west -v flash -d build/<root-name>
常用 build target 的命令格式:
west build -d build/<root-name> -t initlevels
west build -d build/<root-name> -t ram_report
west build -d build/<root-name> -t rom_report
west build -d build/<root-name> -t dashboard
west build -d build/<root-name> -t traceconfig
west build -d build/<root-name> -- -DZEPHYR_SCA_VARIANT=dtdoctor
Ozone 按钮会在当前 root 的 build 目录中查找 .jdebug 工程;如果找到多个,会弹出列表选择。默认使用 PATH 中的 Ozone.exe,也可以配置 Ozone 安装目录或 Ozone.exe 完整路径:
{
"mist-sdk-tools.ozonePath": "D:/Program Files/SEGGER/Ozone"
}
查看 Source 产物
在 Source 视图中可以查看当前 build 目录解析出的:
Entry:
- 应用目录:
CMakeLists.txt、Kconfig、prj.conf、main.c
- 所选板卡列表项:对应
.dts、.yaml、.yml、*_defconfig、*_deconfig
- 应用
boards 目录:所选板卡对应 .conf、.overlay
Source 不会在 settings 中保存板卡路径;板卡路径来自 cache,或通过扫描 yaml/yml 的 identifier 解析。
PROJECT:
- 以依赖文件的最长公共目录生成资源管理器树;如果涉及多个磁盘卷,则每个卷各自回落到对应公共目录。
- 优先展示本次 build 实际用到的所有可定位文件,不按 workspace 或 MIST 目录边界过滤。
- 文件来源包括 Entry 文件、
compile_commands.json 中的编译单元,以及 ninja -C <build-dir> -t deps 输出的依赖文件。
- 文件名右侧会虚显文件大小;如果能从
zephyr.map 和编译数据库建立 source/object 映射,还会显示源文件对应的 flash/ram 占用。
- 头文件没有独立 object,占用无法精确归属;如果能从
ninja -t deps 解析依赖关系,会显示 used by <n> obj 作为影响范围参考。
- 相对路径优先按 build 目录解析,找不到时再按 MIST 目录解析;不存在的文件不会展示。
- 如果 build 目录、
compile_commands.json 或 ninja 不可用,会自动降级为能解析到的 Entry/编译单元文件。
- 目录展开状态会随 Source 视图状态一起保存;过滤时会自动展开命中的目录链。
- 当前编辑器打开的文件如果属于 PROJECT,会自动展开目录并选中对应节点。
- 点击 PROJECT 标题栏搜索按钮会在 Source 视图内展开内容搜索框,搜索范围严格限定为 PROJECT 当前文件列表;支持区分大小写、全字匹配和正则表达式,命中行会显示在匹配文件节点下方,可点击跳转到对应文件行号。
OUTPUT:
.dts 文件
zephyr/include/generated/zephyr/autoconf.h
kconfig-trace.md
zephyr.map
zephyr.lst
点击文件项会在编辑器中打开对应文件。过滤框支持快速定位,并会自动展开命中的分区。
设置示例
{
"mist-sdk-tools.projectDir": "d:/code/mist/project/mist",
"mist-sdk-tools.ozonePath": "D:/Program Files/SEGGER/Ozone",
"mist-sdk-tools.roots": [
{
"name": "APP",
"selectedAppRelativePath": "applications/demo_app",
"selectedBoardName": "demo_board",
"extraCommand": "--pristine"
}
]
}
常用命令
| 命令 |
说明 |
Add Config |
打开配置管理面板 |
CICD |
打开 CI/CD 面板 |
Select Mist Directory |
设置 workspace 默认 MIST 目录 |
Refresh UI |
刷新 Application 视图并更新 cache |
Mist SDK: Search Applications |
搜索并选择应用 |
Mist SDK: Search Boards |
搜索并选择板卡 |
Mist SDK: Set Extra Command |
设置当前 root 的额外编译参数 |
Mist SDK: Extra Command |
在当前 MIST 目录下执行额外命令 |
Mist SDK: Compile Application |
编译当前 root 的应用 |
Mist SDK: West Flash |
烧录当前 root 的 build 产物 |
Mist SDK: Open Ozone |
使用 Ozone 打开当前 root 的 .jdebug 工程 |
Mist SDK: Select Application |
选择指定应用 |
Mist SDK: Select Board |
选择指定板卡 |
Refresh Debug |
刷新 Debug 视图 |
Refresh Source |
刷新 Source 视图 |
Collapse Source / Expand Source |
收缩或展开 Source 视图 |
项目结构
mist-sdk-tools/
├─ commands/ # 命令处理模块
├─ lib/ # 共享工具和业务辅助模块
│ ├─ buildUtils.js # build/source 路径和产物发现工具
│ ├─ common.js # 通用校验与搜索辅助
│ ├─ mistDir.js # 默认 MIST 目录解析与持久化
│ ├─ projectExplorer.js # PROJECT 依赖文件树构建
│ ├─ projectMetrics.js # PROJECT 文件大小和编译占用指标
│ ├─ scanner.js # 应用、板卡、固件扫描
│ └─ utils.js # 命令执行、终端日志等工具
├─ providers/ # VS Code WebviewView provider
│ ├─ debugWebViewProvider.js # Debug WebviewView
│ ├─ explorerWebViewProvider.js # Application WebviewView
│ └─ sourceWebViewProvider.js # Source WebviewView
├─ resources/ # 图标等资源
├─ views/ # Add Config / CICD Webview HTML
├─ extension.js # 扩展入口与命令注册
└─ package.json # VS Code 扩展贡献点
注意事项
mist-sdk-tools.projectDir 是 workspace 级默认 MIST 目录。
mist-sdk-tools.roots 保存 APP/root 配置,包括应用、板卡和额外命令;不保存板卡文件路径,Source 会从 cache 或 yaml/yml identifier 中解析。
- 缓存文件位于
<MIST>/.cache/mist-sdk-cache.json,包含应用、板卡和固件扫描结果,可删除后通过 Refresh UI 强制重建。
- 构建目录约定为
build/<root-name>,root 名称中的空格会转换为 _。
- 彩色日志需要命令本身输出 ANSI 颜色;扩展会尽量设置相关环境变量。
- VSIX 打包内容由
.vscodeignore 控制,仓库元数据、VS Code 本地配置、测试和 demo 文件不会进入发布包。