1. 配置开发环境与编译Marlin固件
任务说明
本案例目标是在本地搭建Marlin固件编译环境,完成一次基础配置并编译出可用于烧录的固件文件。以Creality Ender-3搭配8位板(如V4.2.2的32位板亦可,但需对应配置)为参考目标,但核心流程与配置方法适用于绝大多数Marlin支持的板卡。你需要完成:安装编译链、获取Marlin源码、选择并配置板卡型号、编译生成固件、烧录到开发板。
环境准备
推荐使用PlatformIO作为编译工具链,它随Marlin源码自动管理依赖,避免手动安装ARM/AVR交叉编译器的版本冲突。需要预先安装:
- Git(用于获取源码)
- Python 3.8+(PlatformIO依赖)
- VS Code(可选,但推荐,配合PlatformIO插件使用)
获取源码与配置
打开终端,执行以下命令获取Marlin 2.x稳定分支源码:
git clone https://github.com/MarlinFirmware/Marlin.git
cd Marlin
git checkout 2.1.x
进入config/examples目录,找到与你板卡匹配的示例配置。以Ender-3(8位板,如V1.1.4)为例:
# 将示例配置复制到Marlin根目录的Config文件夹
mkdir -p Config
cp -r config/examples/Creality/Ender-3/Config/* Config/
若使用其他板卡,请选择对应的config/examples子目录。复制后,Config/下应包含Configuration.h和Configuration_adv.h两个文件。
关键配置项检查
打开Config/Configuration.h,确认以下关键项与你的硬件一致:
MOTHERBOARD:板卡型号宏,例如BOARD_RAMPS_14_EFB(RAMPS 1.4)或BOARD_CREALITY_V4(V4.2.2板)。#define SERIAL_PORT 0:USB串口编号,通常为0。#define BAUDRATE 115200:与上位机通信波特率。#define TEMP_SENSOR_0 1:热敏电阻类型,Ender-3通常为1(EPCOS 100K)。
若不确定具体值,保持示例配置默认即可,多数情况下能直接编译通过。
编译固件
在Marlin根目录打开终端,执行:
platformio run
首次编译会自动下载工具链与依赖库,耗时较长。编译成功后,固件文件位于.pio/build/<环境名>/firmware.bin(32位板)或firmware.hex(8位板)。环境名对应platformio.ini中default_envs指定的值,例如STM32F103RET6或mega2560。
烧录固件
8位板(AVR):使用USBasp或Arduino作为ISP,通过avrdude烧录hex文件。以USBasp为例:
avrdude -c usbasp -p m2560 -U flash:w:.pio/build/mega2560/firmware.hex
32位板(STM32):将firmware.bin复制到MicroSD卡根目录,改名为firmware.bin,插入板卡SD卡槽,重新上电即可自动烧录。
验证与判定标准
烧录完成后,通过USB连接板卡与电脑,打开串口监视器(波特率115200),观察启动信息。满足以下条件即判定成功:
- 串口输出Marlin版本号、板卡型号、编译日期等启动横幅。
- 发送
M115命令,返回固件版本信息。 - 发送
M503命令,能回显当前配置参数。
若串口无输出,检查波特率、板卡供电、USB驱动;若编译报错,优先检查MOTHERBOARD宏是否与板卡匹配。
常见问题排查
- 编译报错“board not found”:检查
MOTHERBOARD宏拼写,对照boards.h中定义。 - 烧录后无反应:确认板卡供电(USB或12V),检查串口驱动(CH340/CP2102等)。
- PlatformIO下载慢:可设置国内镜像源,在
platformio.ini中添加extra_configs = https://mirrors.tuna.tsinghua.edu.cn/help/platformio/。
完成上述步骤并观察到串口正常输出后,本案例目标即达成。后续案例将在此环境基础上进行源码级功能定制。