2. 开发环境搭建:工欲善其事,必先利其器

说实话,做嵌入式开发这么多年,我见过太多因为环境没搭好就急着写代码的案例。结果呢?编译报错找不到头文件、Git 提交把二进制文件也推上去了、Python 脚本跑不起来…… 这些坑我基本都踩过。所以这一章,咱们老老实实把环境搭好,后面才能专心搞业务逻辑。

这一节我们要搞定四样东西:Git、Python、VS Code、交叉编译工具链。顺序不重要,但缺一不可。我习惯先装 Git 和 Python,因为它们是最基础的依赖。

核心思路: 开发环境 = 版本管理(Git)+ 脚本语言(Python)+ 编辑器(VS Code)+ 编译工具(交叉编译链)。四者协同,缺一不可。

2.1 安装 Git:版本管理的基石

Git 这东西,说白了就是个后悔药。你改错了代码,它能帮你回退;你写崩了功能,它能帮你切分支。我在项目中遇到过最惨的一次,是同事直接在产品分支上改代码,结果上线前发现改错了,又没法回退…… 从那以后,我要求团队所有人必须用 Git,而且必须用分支开发。

安装步骤很简单:

  1. 去 Git 官网下载对应操作系统的安装包(Windows 选 .exe,macOS 选 .dmg,Linux 用包管理器)。
  2. 一路默认安装,但注意几个关键选项:
    • 选择默认编辑器: 我建议选 VS Code,别选 Vim,除非你真的很熟 Vim。
    • 调整 PATH 环境: 选 "Git from the command line and also from 3rd-party software"。
    • 换行符转换: Windows 选 "Checkout Windows-style, commit Unix-style line endings"。
  3. 安装完成后,打开终端(CMD 或 PowerShell),输入 git --version 验证。
# 验证 Git 安装
git --version
# 输出示例:git version 2.39.2.windows.1

# 配置用户名和邮箱(必须做)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
小技巧: 我个人习惯把 user.name 设成中文全名,这样提交记录里一眼能看出是谁改的。邮箱用公司邮箱就行,别用个人邮箱。

2.2 安装 Python:自动化脚本的引擎

Python 在固件开发里主要干三件事:写编译脚本、做自动化测试、处理数据。你想想看,每次编译完都要手动改配置文件?那太累了。用 Python 写个脚本,一键搞定。

安装建议:

  • 版本选择: 我推荐 Python 3.10 或 3.11,别追最新版,有些库还没适配。也别用 Python 2.7,那东西已经退休了。
  • 安装时勾选: "Add Python to PATH" —— 这个必须勾,不然你后面在命令行里敲 python 会找不到。
  • 验证安装:
# 验证 Python 安装
python --version
# 输出示例:Python 3.11.4

# 验证 pip(Python 包管理器)
pip --version
# 输出示例:pip 23.1.2 from ...
注意: 如果你电脑上同时有 Python 2 和 Python 3,建议用 python3 和 pip3 来区分。我曾经因为没注意版本,用 Python 2 跑了个只支持 Python 3 的脚本,排查了半天…… 嗯,这种低级错误犯一次就够了。

2.3 安装 VS Code:不只是编辑器

VS Code 现在基本是嵌入式开发的标配了。它轻量、插件丰富、对 C/C++ 和 Python 支持都很好。我刚开始用的时候还觉得它不如 IDE 专业,后来发现…… 真香。

安装步骤:

  1. 去 VS Code 官网下载安装包,选 "System Installer" 版本(稳定,权限问题少)。
  2. 安装时建议勾选:
    • "Add 'Open with Code' action to Windows Explorer file context menu"
    • "Add 'Open with Code' action to Windows Explorer directory context menu"
    • "Register Code as an editor for supported file types"
  3. 安装完成后,安装几个必备插件:
    插件名称 用途 备注
    C/C++ (by Microsoft) 代码补全、调试、语法高亮 必装
    Python (by Microsoft) Python 开发支持 必装
    GitLens Git 历史、代码责任人查看 强烈推荐
    Markdown All in One Markdown 编辑预览 写文档用
    YAML YAML 语法支持 配置文件常用
我的习惯: 我会把 VS Code 的终端默认设为 Git Bash,这样在编辑器里就能直接敲 Git 命令,不用来回切换窗口。设置方法:Ctrl + Shift + P → 搜索 "Terminal: Select Default Profile" → 选 "Git Bash"。

2.4 配置交叉编译工具链:打通 PC 到嵌入式设备的桥梁

交叉编译,说白了就是在你的 PC 上编译出能在嵌入式设备上运行的代码。为什么不能直接在设备上编译?因为嵌入式设备性能太弱了,编译一个 Linux 内核可能要几个小时,而 PC 上只要几分钟。

我以 ARM Cortex-M 系列为例,演示如何配置 GCC 交叉编译工具链。其他架构(RISC-V、Xtensa 等)原理类似。

2.4.1 下载工具链

推荐使用 ARM 官方提供的 GNU Arm Embedded Toolchain。去官网下载对应操作系统的版本:

  • Windows: .exe 安装包或 .zip 压缩包
  • Linux: .tar.bz2 压缩包
  • macOS: .pkg 安装包

2.4.2 解压并配置环境变量

以 Windows 为例,假设你解压到了 C:\arm-gcc-toolchain:

# 将工具链的 bin 目录添加到系统 PATH
# 路径示例:C:\arm-gcc-toolchain\bin

# 验证安装
arm-none-eabi-gcc --version
# 输出示例:arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)
避坑指南: 我曾经遇到过一个问题:明明装了工具链,但编译时提示 "arm-none-eabi-gcc: command not found"。排查了半天,发现是 PATH 路径写错了,多了一个空格。所以配置完环境变量后,一定要新开一个终端窗口再验证,因为环境变量只在新的进程中生效。

2.4.3 编写一个简单的测试程序

写一个最简单的 C 程序,交叉编译看看能不能通过:

// test.c
#include <stdio.h>

int main() {
    printf("Hello from ARM!\n");
    return 0;
}
# 交叉编译
arm-none-eabi-gcc -c test.c -o test.o

# 查看生成的目标文件信息
arm-none-eabi-objdump -f test.o
# 输出中应该包含:architecture: arm

如果能看到 architecture: arm,说明交叉编译工具链配置成功了。你生成的 test.o 是 ARM 指令集的目标文件,不能在 PC 上直接运行,但可以链接到嵌入式固件中。

2.5 本章知识体系总览

下面这张图把本章的核心内容串起来了。你可以把它当作一个检查清单,看看自己有没有遗漏什么。

开发环境搭建知识体系 开发环境搭建 - 知识体系 开发环境搭建 Git 版本管理 Python 脚本引擎 VS Code 编辑器 交叉编译工具链 安装与配置 用户信息设置 版本选择(3.10/3.11) pip 包管理 必备插件安装 终端配置(Git Bash) 下载与解压 PATH 环境变量 编译测试验证 四者协同:版本管理 → 脚本自动化 → 编码 → 编译

2.6 环境验证清单

全部装完后,我建议你做一个快速验证。下面这个表格可以帮你检查每一项是否到位:

组件 验证命令 预期输出 状态
Git git --version git version 2.x.x ✅ / ❌
Python python --version Python 3.x.x ✅ / ❌
pip pip --version pip 23.x.x from ... ✅ / ❌
VS Code code --version 1.x.x ✅ / ❌
交叉编译链 arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Arm Embedded Toolchain ...) ✅ / ❌

如果所有项都打上了 ✅,恭喜你,开发环境搭建完毕。如果某一步卡住了,别急,回头看看对应的章节,大概率是 PATH 没配好或者安装包版本选错了。嗯,这些坑我都踩过,你肯定能绕过去。