2. 开发环境搭建:Arduino IDE配置、PlatformIO环境搭建、编译与烧录第一个固件

说实话,很多新手在Marlin配置上栽跟头,不是代码看不懂,而是环境没搭好。我见过太多人花了一周时间研究配置,结果编译报错,最后发现是工具链版本不对。所以这一章,咱们先把地基打牢。

Marlin的编译环境主要有两条路:Arduino IDE 和 PlatformIO。我个人更推荐后者,但Arduino IDE对初学者更友好。两条路我都会带你走一遍,你自己选。

Marlin 开发环境搭建路线 开始 Arduino IDE 路线 适合初学者 PlatformIO 路线 推荐进阶使用

2.1 Arduino IDE 配置

Arduino IDE 的好处是简单。下载、安装、选板子、点上传,完事。但Marlin项目比较大,Arduino IDE处理起来有点吃力。我早期做第一个Marlin固件时用的就是它,编译一次要等两三分钟,那时候我还以为这是正常的……后来换了PlatformIO,才知道什么叫效率。

2.1.1 下载与安装

  1. 去 Arduino 官网下载最新版 IDE(我建议用 1.8.x 系列,2.x 虽然新但有些插件兼容性还没跟上)。
  2. 安装时一路默认就行,记得勾选「安装USB驱动」那个选项。
  3. 安装完成后,打开 IDE,进入 文件 → 首选项。

2.1.2 添加开发板支持

Marlin 主要跑在 AVR(如 Mega2560)和 ARM(如 STM32、LPC1768)平台上。你需要添加对应的开发板包。

关键操作:在「附加开发板管理器网址」中填入:

https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_sanguino_index.json
https://raw.githubusercontent.com/ultimachine/ArduinoAddons/master/package_ultimachine_index.json

然后去 工具 → 开发板 → 开发板管理器,搜索并安装你需要的板型。比如 Mega2560 选「Arduino AVR Boards」。

我的小技巧:如果你用的是 32 位主板(比如 SKR 系列),建议直接跳过 Arduino IDE,用 PlatformIO。Arduino IDE 对 32 位板的支持比较折腾,我曾经在配置 STM32 环境时浪费了一整个下午。

2.1.3 配置参数与编译

打开 Marlin 源码,找到 Marlin/Configuration.h 和 Configuration_adv.h。这两个文件就是你的战场。

  • 选择正确的开发板:工具 → 开发板 → 你的板型
  • 选择处理器:一般默认就行
  • 选择端口:插上 USB 后能看到
  • 点击「验证」开始编译

注意:如果编译报错提示「内存不足」,别慌。这是 Arduino IDE 的常见问题。你可以尝试关闭其他窗口,或者把 Configuration.h 中不需要的功能先注释掉。我曾经遇到过因为开启了太多高级特性导致编译失败,最后发现是缓冲区溢出了。

2.2 PlatformIO 环境搭建

PlatformIO 是 VS Code 的一个插件,也可以独立使用。它的好处是:自动管理依赖、编译速度快、支持几乎所有的单片机。说白了,它就是嵌入式开发的瑞士军刀。

2.2.1 安装 VS Code 与 PlatformIO

  1. 下载安装 Visual Studio Code(免费,微软出品)。
  2. 打开 VS Code,点击左侧扩展图标,搜索 PlatformIO IDE,安装。
  3. 安装完成后重启 VS Code,你会看到底部多了一个小蚂蚁图标(PlatformIO 的 logo)。

嗯,这里要注意:第一次安装 PlatformIO 会下载一些工具链,大概几百兆,网速慢的话可能要等十几分钟。我建议你泡杯咖啡,或者先去干点别的。

2.2.2 导入 Marlin 项目

PlatformIO 用 platformio.ini 文件来管理项目配置。Marlin 官方已经帮你写好了这个文件,你只需要做两件事:

  1. 用 VS Code 打开 Marlin 源码文件夹(文件 → 打开文件夹)。
  2. 找到 platformio.ini,修改 default_envs 为你对应的主板型号。

举个例子:如果你用的是 SKR Mini E3 V2.0,配置应该是:

[platformio]
src_dir = Marlin
boards_dir = buildroot/share/PlatformIO/boards
default_envs = STM32F103RC_creality

其他主板型号可以在 platformio.ini 的 [env:] 段落中找到。

2.2.3 编译与烧录

  • 编译:点击 VS Code 底部状态栏的 ✔ 图标,或者按 Ctrl+Alt+B(Windows/Linux) / Cmd+Alt+B(Mac)。
  • 烧录:点击 → 图标(向右的箭头),或者按 Ctrl+Alt+U。

我第一次用 PlatformIO 编译 Marlin 时,只用了 30 秒就完成了。当时我就想:以前用 Arduino IDE 等两分钟的日子,到底是怎么熬过来的?

避坑指南:如果你烧录时提示「无法连接」,先检查 USB 线。我曾经遇到过一根只能充电不能传数据的线,折腾了半小时才发现。另外,有些主板需要按住复位键再上电才能进入烧录模式。

2.3 编译与烧录第一个固件

环境搭好了,咱们来走一遍完整流程。以最常见的 Mega2560 + RAMPS 1.4 为例。

2.3.1 准备工作

项目 说明
硬件 Arduino Mega2560 或兼容板 + USB 线
软件 Arduino IDE 或 PlatformIO(二选一)
源码 从 Marlin 官网下载最新稳定版(建议用 bugfix-2.1.x)

2.3.2 修改关键配置

打开 Configuration.h,找到以下几项并修改:

// 主板型号(Mega2560 + RAMPS 用这个)
#define MOTHERBOARD BOARD_RAMPS_14_EFB

// 串口波特率(一般 250000 没问题)
#define BAUDRATE 250000

// 温度传感器(根据你的实际硬件设置)
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_BED 1

// 热端最大温度(安全起见,先设 260°C)
#define HEATER_0_MAXTEMP 260

安全第一:温度设置一定要保守。我曾经见过有人把 HEATER_0_MAXTEMP 设成 300°C,结果热端真的烧到了 300°C,差点把打印头融了。第一次调试,建议设低一点,跑起来再慢慢调。

2.3.3 编译与烧录

  1. 连接主板到电脑,确认驱动已安装(Windows 下会自动识别为 COM 口)。
  2. 在 IDE 中选择正确的端口和板型。
  3. 点击「编译」—— 等进度条走完,没有红色报错就成功了。
  4. 点击「上传」—— 看到「上传完成」的提示,恭喜你,第一个固件已经烧进去了。

烧录完成后,打开串口监视器(波特率设成你刚才配置的值),你应该能看到 Marlin 的启动信息。如果看到 Marlin x.x.x 的版本号,说明一切正常。

我的经验:第一次烧录成功后,别急着装到打印机上。先用手转动步进电机,看看方向对不对。如果电机反转,在 Configuration.h 里把对应的 INVERT_X_DIR 改成 true 或 false 就行。这个坑我踩过,当时没检查方向,直接装上去,结果撞到限位开关还继续跑,差点把皮带崩断。

好了,环境搭好了,固件也烧进去了。接下来你就可以开始真正地配置 Marlin 了。记住,开发环境只是工具,真正的功夫在后面的配置细节里。