Marlin 是一个非常复杂的 Arduino 程序。对于开发人员来说,该导航和对于可能想要进行小改动的新用户来说一样复杂。本文档旨在成为一份简明指南,帮助您了解 Marlin 代码库并了解该程序的工作原理。
本文档提供了结构细节和程序流程的高级概述。到最后你应该知道在哪里(以及如何)找到你的所想要的。其他细节,如 Marlin 编码风格,在编码标准页面上为那些可能想要贡献的人提供了更详细的描述。
MarlinFirmware
:根文件夹,仅包含需要位于此处的文件。当您使用 PlatformIO 构建 Marlin 时,它会在.pio
此处创建一个文件夹,而在 shell 中使用 git 时,这应该是您当前的工作目录。buildroot
:包含开发人员的帮助脚本、字体工具、CI 测试、Marlin 徽标和其他数据。buildroot/share/PlatformIO
:电路板定义、变体、链接描述文件和构建脚本都存储在这里。该文件夹经常被ini
文件夹中的构建环境引用。ini
:此文件夹包含按 MCU 类型组织的所有 PlatformIO 环境设置。该platformio.ini
文件将这些拉入以提供 PlatformIO 的构建/上传/调试设置。一个文件非常有用:Marlin 的自定义构建脚本features.ini
在构建开始时用于根据启用的功能过滤源文件,因此构建完成得更快。Marlin
:首先,这是构建 Marlin 时需要的主要配置文件所在的位置。Arduino 项目文件在Marlin.ino
这里。cd Marlin
而且,如果您想使用make
(仅支持与 Arduino IDE 兼容的目标)进行构建,您应该在 shell 中。Marlin/src
:包含 Marlin 应用程序(“草图”)。主程序开头MarlinCore.cpp
包含使 Marlin 成为 Arduino 程序的setup()
和函数。loop()
该文件夹的内容将在下一节中详细介绍。
Marlin/src
文件夹中仅有的 Marlin 的主要源文件,MarlinCore.cpp
包含setup()
和loop()
,以及MarlinCore.h
头文件。
源代码的其余部分分为 10 个子文件夹,这些子文件夹还有进一步细分的二级目录。下面是这些文件夹的概述。
inc/MarlinConfig.h
以确保这些文件将按预期顺序包含。GCodeParser
类定义,所有 G 代码命令实现(有一些例外)包装在一个名为GcodeSuite.G
代码实现中,这些文件被放置在多个类别的子文件夹中。文件命名为 G 代码,因此可以使用 IDE 的快速打开功能更快地找到它们。Conditionals*.h
和SanityCheck.h
文件。rambo
、ramps
和sanguino
。每块主板都有自己独特的引脚文件,pins.h
的设置基于MOTHERBOARD
。由于pins.h
是MarlinConfig.h
引用的文件之一,因此他未在其他地方被引用。CardReader
是 Marlin 的主要界面,用于导航目录、打开 G 代码文件以及从 SD 卡(或其他媒体)打印。自 Marlin 2.0.8 以来,所有媒体类型都派生自DiskIODriver
抽象类。