当前位置: 首页 > news >正文

编译Marlin 1.1.9.1固件指南

编译 Marlin 固件是一个很常见的任务。下面我将为您提供一份详细、分步的指南,以编译 Marlin 1.1.9.1 版本。

方法概览

编译 Marlin 主要有两种方法:

  1. 使用 Arduino IDE (传统方法,适合初学者)

  2. 使用 PlatformIO (更专业、更强大的方法,是 Marlin 官方推荐的方式)

我将重点介绍 PlatformIO 方法,因为它更自动化,能更好地处理依赖库,并且是当前 Marlin 社区的主流选择。同时我也会简要介绍 Arduino IDE 的方法。


方法一:使用 PlatformIO (推荐)

PlatformIO 是一个嵌入在 VS Code 中的专业嵌入式开发平台,它可以自动下载编译器、工具链和所有必需的库,非常方便。

步骤 1:准备工作
  1. 下载 Marlin 固件

    • 访问 Marlin 的官方 GitHub 发布页面:https://github.com/MarlinFirmware/Marlin/releases

    • 找到 1.1.9.1 版本并点击 "Source code (zip)" 进行下载。也可以点击【Marlin-1.1.9.1.zip】进行下载。

    • 将下载的 ZIP 文件解压到一个你容易找到的文件夹中,例如 D:\Marlin-1.1.9.1\

  2. 安装 Visual Studio Code

    • 如果尚未安装,请从 https://code.visualstudio.com/ 下载并安装。

  3. 安装 PlatformIO IDE 扩展

    • 打开 VS Code。

    • 点击左侧活动栏的“扩展”图标 (或按 Ctrl+Shift+X)。

    • 在搜索框中输入 PlatformIO IDE

    • 找到由 PlatformIO 开发的扩展,点击“安装”。

    https://docs.platformio.org/en/latest/_images/install-platformio-ide-vscode-1.png

步骤 2:配置 Marlin

这是最关键的一步。你需要根据你的 3D 打印机主板来修改配置文件。

  1. 找到配置文件

    • 在解压的 Marlin 文件夹中,你会找到两个重要的 .h 文件:

      • Marlin/Configuration.h:主要硬件和功能设置。

      • Marlin/Configuration_adv.h:高级功能设置。

  2. 获取配置范例

    • 最佳实践:从你的主板供应商或打印机厂商提供的固件配置文件中开始。他们通常已经设置好了正确的引脚定义和基本参数。

    • 备用方案:Marlin 提供了官方范例。在 Marlin/config/examples 目录下,根据你的打印机品牌(如 CrealityAnet)和主板型号寻找最接近的配置文件,用它覆盖根目录下的 Configuration.h 和 Configuration_adv.h

  3. 编辑配置

    • 用 VS Code 或任何文本编辑器打开 Configuration.h

    • 必须修改:找到并修改 motherboard 的定义。例如:

      • 对于 Creality Ender 3 标配的 CREALITY V1.1.3 主板,你需要设置:

        cpp

        #define MOTHERBOARD BOARD_CREALITY_V1
      • 对于 SKR Mini E3 V1.2,你需要设置:

        cpp

        #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_2
    • 你必须根据你的实际主板型号来修改这个值。所有支持的主板定义可以在 Marlin/src/core/boards.h 文件中找到。

    • 根据你的需求调整其他设置,如温度传感器类型、步进电机驱动方向、加速度等。如果不确定,可以暂时保持范例文件的默认值。

步骤 3:编译固件
  1. 在 VS Code 中打开项目

    • 在 VS Code 中,选择 File > Open Folder...,然后选择你解压的 Marlin-1.1.9.1 文件夹。

  2. 使用 PlatformIO 编译

    • VS Code 加载项目后,你应该在底部状态栏看到 PlatformIO 的图标(一个小房子)。

    • 点击左侧活动栏的 PlatformIO 图标(蚂蚁头)。

    • 在 PIO 菜单中,展开 Project Tasks

    • 你会看到很多环境选项,它们对应不同的主板。你需要选择与你的 boards.h 中定义匹配的环境。例如:

      • env:STM32F103RC_btt (对于 BIGTTRECH 主板)

      • env:mega2560 (对于 Arduino Mega 2560 + RAMPS)

      • env:LPC1768 (对于 Smoothieboard 或类似)

    • 如果不确定正确的环境名,可以参考 Marlin-1.1.9.1/platformio.ini 文件,里面列出了所有环境及其对应的主板。

    • 找到正确的环境后,点击其下的 Build 任务。

    https://i.imgur.com/3l4QzJl.png

  3. 等待编译完成

    • PlatformIO 会自动下载所有需要的工具和库(第一次编译可能会较慢)。

    • 编译成功后,你会在终端窗口看到 SUCCESS 字样。

步骤 4:获取固件文件
  • 编译成功后,生成的固件文件(通常是 .bin 或 .hex 文件)位于 Marlin 项目目录下的 .pio/build/<环境名称>/ 文件夹中。

    • 例如:.pio/build/STM32F103RC_btt/firmware.bin

步骤 5:烧录固件
  • 将 SD 卡格式化为 FAT32 格式,容量不要太大(建议 8GB-16GB)。

  • 将上一步生成的 firmware.bin 文件复制到 SD 卡的根目录。

  • 断开打印机的电源,将 SD 卡插入主板。

  • 接通打印机电源,主板将自动检测并烧录 .bin 文件。烧录过程需要几十秒,完成后主板可能会自动重启。

  • 烧录成功后,SD 卡上的 firmware.bin 文件会被重命名为 FIRMWARE.CUR。这是一个烧录成功的标志。


方法二:使用 Arduino IDE

这种方法更手动,需要自行管理库文件。

  1. 安装 Arduino IDE:从 Arduino 官网下载并安装 1.8.x 版本。

  2. 添加主板支持:在首选项中添加你的主板对应的附加开发板管理网址(例如,对于 STM32,可能是 STM32duino 的网址)。

  3. 安装主板包:在“工具”->“开发板”->“开发板管理器”中,安装你的主板对应的包(如 STM32 Cores 或 Arduino AVR Boards)。

  4. 复制 Marlin 库:将 Marlin 源码目录中的 Marlin 文件夹覆盖 Arduino 库目录下的同名文件夹(通常位于 C:\Users\[用户名]\Documents\Arduino\libraries)。

  5. 打开项目:用 Arduino IDE 打开 Marlin.ino 文件。

  6. 选择板和端口:在“工具”菜单中正确选择你的主板型号、处理器型号、端口等。

  7. 编译和上传:点击“验证”(编译)以确保没有错误,然后点击“上传”将固件烧录到主板(通常需要通过 USB 线)。

注意:对于大多数现代 32 位主板(如 STM32、LPC1768),Arduino IDE 方法非常复杂且不推荐,PlatformIO 是绝对的首选。

常见问题排查

  • 编译错误:找不到 boardConfiguration.h 中的 MOTHERBOARD 定义与 platformio.ini 中的环境不匹配。请确保你选择的环境支持你定义的主板。

  • 编译错误:缺少库:PlatformIO 通常会自动处理。如果发生,尝试在 PIO 主页点击“Rebuild IntelliSense Index”或运行“Clean”后重新编译。

  • 烧录后打印机无反应

    • 检查主板型号选择是否正确。

    • 检查 SD 卡格式是否为 FAT32,并且文件放在根目录。

    • 尝试重命名 firmware.bin 为一个简单的名字,如 firmware1.bin

希望这份详细的指南能帮助你成功编译 Marlin 1.1.9.1!祝你成功!

http://www.xdnf.cn/news/1356499.html

相关文章:

  • 如何理解“向量”
  • 大数据、hadoop、爬虫、spark项目开发设计之基于数据挖掘的交通流量分析研究
  • 数据挖掘 4.1~4.7 机器学习性能评估参数
  • 【软考架构】云计算相关概念
  • 《CF1120D Power Tree》
  • Implementing Redis in C++ : E(AVL树详解)
  • 深入解析Apache Kafka的核心概念:构建高吞吐分布式流处理平台
  • 自动化运维之k8s——Kubernetes集群部署、pod、service微服务、kubernetes网络通信
  • Linux-函数的使用-编写监控脚本
  • Qt——网络通信(UDP/TCP/HTTP)
  • Linux学习-TCP网络协议
  • Linux shell脚本数值计算与条件执行
  • (计算机网络)JWT三部分及 Signature 作用
  • 如何在 IDEA 中在启动 Spring Boot 项目时加参数
  • [Windows] PDF-XChange Editor Plus官方便携版
  • 海盗王3.0客户端从32位升级64位之路
  • 操作系统文件系统
  • [e3nn] 等变神经网络 | 线性层o3.Linear | 非线性nn.Gate
  • Excel 转化成JSON
  • GPT 模型详解:从原理到应用
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2024年12月22日真题
  • 以国产IoTDB为代表的主流时序数据库架构与性能深度选型评测
  • 对象作为HashMap的key的注意事项
  • 30分钟通关二分查找:C语言实现+LeetCode真题
  • 机器学习算法-朴素贝叶斯
  • 优化OpenHarmony中lspci命令实现直接获取设备具体型号
  • 机械学习综合练习项目
  • 基于SpringBoot的新能源汽车租赁管理系统【2026最新】
  • Linux 系统管理核心概念与常用命令速查
  • 春秋云镜 Hospital