嵌入式开发的环境配置取决于"目标芯片/板卡"和"操作系统(或无OS)"。以下是通用核心组件 + 分场景清单,你按需选一条路线即可。
🧱 一、所有路线都需要的"基础设施"
-
交叉编译工具链(最重要)
-
例如 ARM:
gcc-arm-none-eabi(MCU/裸机)、arm-linux-gnueabihf-*(Linux应用) -
RISC-V:
riscv64-unknown-elf-gcc/riscv64-unknown-linux-gnu-gcc
-
-
调试/烧录工具
-
硬件:J-Link、ST-Link、DAPLink、FTDI串口模块等
-
软件:OpenOCD、pyOCD、J-Link GDB Server
-
-
IDE / 编辑器 + 构建系统
-
IDE:VS Code + Cortex-Debug / PlatformIO;或商业 IDE(Keil、IAR、SEGGER Embedded Studio)
-
构建系统:CMake(推荐)、Makefile;RT-Thread/BSP 常用 scons/env.py
-
-
目标板通信
-
串口/UART:
minicom/screen(mac/Linux)、MobaXterm/PuTTY/WindTerm(Windows) -
网络:SSH/Telnet、TFTP/NFS(若跑 Linux)
-
-
工程基建(强烈建议尽早引入)
-
Git + 合适的分支策略(如 main/dev/feature)
-
包/依赖管理:虽不如 Web 成熟,但可用 Conan/vcpkg/manual vendor SDK
-
📍 二、按常见路线快速选配
A. STM32/Cortex-M MCU(裸机/FreeRTOS)
-
工具链:
arm-none-eabi-gcc+libnewlib-nano -
调试:ST-Link/V2/V3 + OpenOCD
-
固件库/框架:STM32CubeMX/LL/HAL,或 libopencm3/ch32v003-hal 等裸写寄存器方案
-
VS Code 插件:C/C++、Cortex-Debug、HexView
B. 嵌入式 Linux(树莓派/IMX6ULL/RK3568 等)
-
工具链:对应 SoC 的 Linaro/SDK 预编译链(如
arm-linux-gnueabihf-) -
构建:Buildroot/Yocto/OpenWrt(做根文件系统);内核用 Kbuild
-
调试:gdbserver 远程 attach、strace/perf/valgrind 定位问题
-
部署:scp/rsync/nfs;uboot/tftp 启动调试
C. RISC-V MCU(GD32V/ESP32-C3/K210 等)
-
工具链:SiFive/平头哥/官方 SDK 提供的 riscv-none-elf 或 riscv64-unknown-elf
-
调试:ft2232h/openocd/jtag 适配;部分开发板自带 USB-JTAG
-
IDE:VS Code + RISC-V 插件;PlatformIO 对 ESP32-C3 开箱即用
⚡ 三、STM32F103 最小可运行示例(Ubuntu/WSL/macOS)
# 安装工具链 & openocd
sudo apt install gcc-arm-none-eabi openocd
# 获取代码模板(带 Makefile+linker script)
git clone --depth 1 https://github.com/STMicroelectronics/STM32CubeF1.git
cd STM32CubeF1/Projects/YourBoard/Example
# 编译(确保 Makefile 里 CC=arm-none-eabi-gcc)
make -j$(nproc)
# 连接 ST-Link,openocd 监听 gdb
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg
✅ 四、怎么选更省心?
告诉我:芯片型号/板子名(如 STM32F407、树莓派 CM4) + 是否跑 Linux + 你最习惯的系统(Win/Mac/Ubuntu),我可以给你一套"复制粘贴就能跑通"的命令清单和目录结构。