可视化编译烧录 · 串口/MQTT 调试 · 字模生成 · 固件分析 跨平台桌面应用(Windows / macOS / Linux),面向嵌入式开发的一体化工具箱。
MCU工具箱是一个基于 Electron + Vue 3 + Vite 的桌面应用,把嵌入式开发常用的零散命令行工具整合成统一可视化界面。开箱即用,自动按平台下载工具链,无需手动配置环境。
| 工具 | 功能 | 后端 |
|---|---|---|
| 🔧 烧录工具 | STM32 编译烧录(Makefile/Keil/CubeMX 工程识别) | pyOCD / OpenOCD / Keil UV4 |
| 🟢 StcGal | STC 8051 系列单片机烧录 | stcgal(Python) |
| 📡 ESP32 烧录 | ESP32 系列芯片烧录 | esptool(Python) |
| 🔌 硬件调试 | 调试探针命令交互 | pyOCD cmd |
| 📝 内存日志 | 读取设备 RAM 日志 | 串口/探针 |
| 🔍 固件分析 | ELF/HEX 固件解析(段、符号、大小) | arm-none-eabi 工具链 |
| 收发 / HEX / 快捷指令 / 循环发送 | serialport | |
| 💬 MQTT 调试 | 多连接 · 订阅/发布 · JSON 高亮 | mqtt.js |
| 🅰 字模生成 | 点阵字模(PCtoLCD2002 风格) | Canvas 光栅化 |
| 🧮 校验工具 | Checksum / CRC8 / CRC16 / CRC32 | 前端算法 |
- 主进程:Electron 35 + Node.js(CommonJS)
- 渲染进程:Vue 3 + Element Plus 2.9 + Vite 5
- 原生依赖:serialport 13(串口)、mqtt 5(MQTT)
- 打包:electron-builder 25(跨平台 NSIS/DMG/AppImage)
- 按需引入:unplugin-auto-import + unplugin-vue-components(Element Plus 组件/样式按需打包)
- Node.js ≥ 18
- Python 3(用于本地 pyOCD / stcgal / esptool 虚拟环境)
- Windows 用户:自动下载 busybox + ARM GCC;macOS/Linux 使用系统自带命令
npm installnpm start拉起 Vite dev server(5173 端口)后启动 Electron,渲染层经 http 加载,HMR 可用。
npm run start:prod| 命令 | 说明 |
|---|---|
npm run dist:win |
Windows x64(NSIS 安装包 + 便携版) |
npm run dist:mac |
macOS Intel (x64) .dmg |
npm run dist:mac-arm |
macOS Apple Silicon (arm64) .dmg |
npm run dist:mac-all |
macOS universal(Intel + Apple Silicon 通用) |
npm run dist:linux |
Linux(AppImage/deb/rpm) |
npm run dist:all |
Windows + macOS + Linux 全平台 |
npm run pack |
仅打包不制作安装包(调试用) |
所有 dist:* 命令会先执行 vite build 构建渲染层,再调用 electron-builder。产物输出到 dist/。
npm test # 运行 node:test 单元测试(tests/ 目录)
npm run lint # ESLint 代码检查
npm run check # 测试 + lint + 渲染层生产构建测试覆盖:工具链版本、flash 解析、固件分析、OpenOCD 路径、ESP32、构建系统、Makefile 启动修复、STM32 目标、平台工具链、配置、工具函数、pyOCD 诊断、硬件调试、内存日志、bus 事件等。
burningTool/
├── packages/
│ └── flash-core/ # 共享编译烧录核心(无 Electron,桌面端与 VS Code 扩展共用)
├── plugins/
│ └── vscode-stm32-flash/ # VS Code 扩展:STM32 编译烧录
├── src/main/ # Electron 主进程(CommonJS)
│ ├── index.js # 生命周期、路径注入、日志 sink、IPC 装配
│ ├── ipc/ # 按领域注册 IPC
│ ├── core/ # 配置、窗口相关桌面核心
│ ├── toolchain/ # 兼容 re-export → packages/flash-core
│ ├── flash/ # STM32 兼容 re-export;stc51/esp32 仍在此
│ ├── devices/ # 串口、MQTT
│ ├── firmware/ # 固件分析
│ └── ramlog/ # 内存日志
├── src/preload/index.js # contextBridge 安全 API
├── renderer/src/
│ ├── App.vue # 根布局、页面状态装配
│ ├── views/ # 每个工具一个页面组件
│ ├── composables/ # 每个领域一个状态/业务组合函数
│ ├── components/ # 跨工具通用组件
│ └── styles/ # base、layout 与 tools/* 页面样式
├── tests/ # node:test
├── docs/
│ ├── README.md # 文档索引
│ └── architecture.md # 架构与目录职责
├── assets/icons/ # 应用图标
├── scripts/ # 开发/停止/扩展同步打包脚本
├── package.json
├── vite.config.mjs
└── eslint.config.mjs
详细职责说明见 docs/architecture.md。
toolchain/、tools/、node_modules/、dist/、renderer/dist/、*.vsix、plugins/**/vendor/均为本地依赖或生成物,不入版本库。默认工具链在运行时按平台下载;打包配置明确排除resources/,仓库不再维护重复工具链副本。
npm run ext:sync # packages/flash-core → plugins/.../vendor
npm run ext:package # 同步 + 自动递增版本号 + 生成 .vsix
# npm run ext:package -- --minor|--major|--no-bump┌─────────────────────────────┐ IPC (ipcMain.handle)
│ 渲染进程 (Vue 3 + Element) │ ←─────────────────────→ ┌──────────────────────────┐
│ window.api.* │ contextBridge 安全暴露 │ 主进程 (Electron/Node) │
│ composables/*.js │ │ src/main/* │
│ 经 Vite 构建 → renderer/dist│ │ 调用 pyOCD/OpenOCD/串口 │
└─────────────────────────────┘ └──────────────────────────┘
- 渲染层通过 src/preload/index.js 暴露的
window.api调用主进程,contextIsolation: true+nodeIntegration: false保证安全。 - 每个工具对应一个
composable(如 useFlash.js),状态与逻辑封装在组合式函数中,App.vue 只做工具切换编排。 - 日志/进度经 core/bus.js 事件总线,子模块复用同一套 sink 推送到渲染端,渲染端按
key原地更新进度行,不刷屏。
主进程入口只负责装配,src/main/ipc/ 按 core/toolchain/project/flash/debug 五个领域注册 ipcMain.handle。串口/MQTT 继续由各自设备模块注册。主要通道:
| 通道 | 用途 |
|---|---|
select-directory / check-dir |
选择/检测工程目录 |
build / flash / build-and-flash |
编译烧录 |
generate-makefile |
CubeMX → Makefile 重生成 |
install-default-toolchain |
自动下载工具链 |
check-probe / read-chip-info |
探针/芯片探测 |
analyze-firmware / read-ram-log |
固件分析/内存日志 |
flash-stc51 / flash-esp32 |
51/ESP32 烧录 |
serial-* / mqtt-* |
串口/MQTT 全套 |
src/main/toolchain/platform-toolchains.js 定义三平台下载计划:
- Windows:busybox(rm/mkdir 等命令)+ ARM GCC + make + OpenOCD + pyOCD venv 全部下载
- macOS:使用系统自带命令,下载 ARM GCC + OpenOCD,pyOCD 用 venv
- Linux:使用系统自带命令,下载 ARM GCC + OpenOCD,pyOCD 用 venv
配置按平台隔离路径(platformPaths[platformId]),切换系统自动重匹配,避免 Windows 路径残留导致跨平台失效。
配置写入 app.getPath('userData')/config.json(core/config.js),含:工具链路径、目标芯片、烧录方式、串口/MQTT 连接、快捷指令分组、窗口位置等。reset-config 恢复默认但保留历史项目。
- 主进程使用 CommonJS(
require),渲染层使用 ESM(import)。 - 新增 IPC 通道:① 在 src/preload/index.js 暴露 → ② 在 src/main/ipc/ 对应领域 registrar 注册 → ③ 渲染端对应 composable 调用。
- Element Plus 组件/样式按需自动引入,无需手动 import;新增组件直接用标签即可(
unplugin-vue-components自动解析)。 - 调试探针枚举、芯片识别等耗时操作有缓存(如
_pyocdTargetOk),避免重复探测。 - 字模生成编辑框默认为空,输入后实时生成点阵预览与代码。
- 原生模块
serialport打包时 electron-builder 会npmRebuild自动重编译对应平台二进制。 asarUnpack: ["**/*.node"]确保原生.node文件解包到磁盘可执行。- macOS 需
icon.icns、Windows 需icon.ico,图标源在 assets/icons/。 - 首次打包某平台会下载该平台预编译二进制,耗时较长。
- 版本号:1.0.0
- appId:
com.ruixin.mcutoolbox - 版权:Copyright © 2026 锐新网络科技有限公司
私有项目,版权归锐新网络科技有限公司所有。