用户工具

站点工具


knowledge:3d_print:2023021001

Marlin固件代码结构

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/src文件夹中仅有的 Marlin 的主要源文件,MarlinCore.cpp包含setup()loop(),以及MarlinCore.h头文件。

源代码的其余部分分为 10 个子文件夹,这些子文件夹还有进一步细分的二级目录。下面是这些文件夹的概述。

  • core:包含其他 Marlin 源文件始终需要的引用的头部文件,提供类型、宏、串行输出、实用函数等。大多数源文件将只包含inc/MarlinConfig.h以确保这些文件将按预期顺序包含。
  • feature:此文件夹包含可选功能的支持代码。有些功能很简单,仅添加 G 代码或在通用代码中插入更改。如果一个特性需要定义一个类或一组函数,那些额外的文件将放在这里。
  • gcode:包含GCodeParser类定义,所有 G 代码命令实现(有一些例外)包装在一个名为GcodeSuite.G代码实现中,这些文件被放置在多个类别的子文件夹中。文件命名为 G 代码,因此可以使用 IDE 的快速打开功能更快地找到它们。
  • HAL:每款控制器都提供控制硬件的功能,但并非所有控制器都使用相同的接口。硬件访问层定义了隐藏这些差异的函数,因此可以更通用地定义 Marlin 的其余部分。在撰写本文时,Marlin 拥有十个不同的 HAL。
  • inc:此文件夹包含定义 Marlin 版本、配置条件、过时选项检查以及合理设置的最终健全性检查的基本内容。请注意,每个 HAL 还包含自己的Conditionals*.hSanityCheck.h文件。
  • lcd:所有与 LCD、TFT、OLED、编码器、按钮和串行控制器相关的代码都存储在这里。语言翻译通常只适用于外部控制器,因此语言翻译也存储在这里。
  • libs:任何通用数学或硬件库代码都放在这里。所以这里有蜂鸣器代码、crc16 校验和、3×3 矩阵、数字到字符串的转换、用于二进制传输的 Heatshrink,甚至还有几个EEPROM。
  • module:机器设备的所有典型特征都在这里定义。这包括 3D 打印机可能拥有的所有东西,例如:加热器和传感器、热床探头、止动器、运动学、将命令转换为分段移动的高级运动功能、将毫米段快速转换为排队步进块的运动规划器变化,以及将块段转换为中断时序和 STEP 信号的步进 ISR。
  • pins:Marlin 的所有主板引脚定义都在此文件夹中。这些主板主要按架构划分,加上ramborampssanguino。每块主板都有自己独特的引脚文件,pins.h的设置基于MOTHERBOARD。由于pins.hMarlinConfig.h引用的文件之一,因此他未在其他地方被引用。
  • sd:在这里你可以找到文件和文件夹的所有高级文件系统代码。该类CardReader是 Marlin 的主要界面,用于导航目录、打开 G 代码文件以及从 SD 卡(或其他媒体)打印。自 Marlin 2.0.8 以来,所有媒体类型都派生自DiskIODriver抽象类。

配置和Include Tree

knowledge/3d_print/2023021001.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1