目 录CONTENT

文章目录

创想三维Ender-3S打印机Marlin固件编译

成培培
2026-01-20 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

之前想给我创想三维Ender-3S打印机升级Klipper固件,但是由于出场的ATmega1284P主控芯片没有预烧录Bootloader,所以无法通过串口线刷固件,准备后续给他手动刷入Bootloader,不过在此之前准备先编译一个我的打印机可用的Marlin固件,以防以后刷到Klipper不好用没法刷回来。

准备编译环境

我这里是使用Macbook,下载安装vscode,安装PlatformIO插件,
https://www.chengpei.top/upload/PlatformIO.png
这一步比较简单,就不细说了,PlatformIO就是提供一套嵌入式开发工具链和管理系统的插件,可以帮我们自动安装编译器,解析 platformio.ini,库依赖管理什么的,有了它后续才能编译。

获取Marlin源码

github地址:
https://github.com/MarlinFirmware/Marlin
https://github.com/MarlinFirmware/Configurations
其中Configurations项目里面是适用于各种机器的示例配置,后续需要找到我的型号的打印机主板相关的配置文件复制到源码下覆盖
我这里分支的选择,Marlin用的是lts-2.0.9分支,没有用选择太新的版本,因为我的打印机是ATmega1284P主控,据说2.1.x版本已经放弃了8-bit的板子。

替换配置文件

Configurations用的是bugfix-2.0.x分支,这里注意不能用release-2.0.9分支,我一开始用release-2.0.9分支编译报错:

Marlin/src/HAL/shared/../../inc/SanityCheck.h:603:4: error: 
#error "MIN_ARC_SEGMENTS is now MIN_CIRCLE_SEGMENTS." 

大概是说Marlin检测到 宏定义结构不一致,直接拒绝编译,说明release-2.0.9分支里面的Configuration_adv.h文件有问题,反正我换了分支就好了。
换到bugfix-2.0.x分支,进入config/examples/Creality/Ender-3/CrealityV1这个文件夹下有4个文件,复制这4个文件,覆盖粘贴到Marlin源码的Marlin目录下,因为我这里是创想三维Ender-3s打印机,并且主板版本是v1.1.3,所以我复制的是这个目录下的,如果你的打印机是不同品牌及型号,需要找到自己的打印机对应的文件覆盖过来。

修改配置文件

本来可以直接编译的,但是由于我的打印机改过BMG挤出机,所以有些参数需要调整:

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 393.9 }
#define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 20 }
#define X_BED_SIZE 220
#define Y_BED_SIZE 220

第一行定义了 X、Y、Z、E 四个轴,每移动 1 mm 所需的步进脉冲数(steps/mm),我改了最后一个参数挤出轴E,这个参数是BMG挤出机卖家提供的,
第二行定义了各轴允许的最大运动速度(mm/s),用于限制 G-code 中的运动指令,防止机械结构或电机超出能力范围,这里AI建议我降低挤出轴E的最大速度,原参数是25
第三四行是XY轴上最大有效打印宽度,不知道为什么官方提供的参数是235,我的打印机外壳上标注的就是220220250,这里不对就顺手改了

编译

替换修改完配置后,还需要修改一下platformio.ini文件,第16行:

default_envs = melzi_optiboot_optimized

default_envs 用来告诉PlatformIO默认使用哪一个“编译环境(Environment)”来编译 Marlin,melzi_optiboot_optimized是 Marlin 专门为 Melzi 主板(ATmega1284P)准备的“极限精简编译环境”。
https://www.chengpei.top/upload/platformio_bianyi.png
最后点击Build All开始编译即可,成功编译会在.pio/build/melzi_optiboot_optimized下面生成firmware.hex固件文件

0

评论区