用户工具

站点工具


knowledge:3d_print:2023021101

Marlin的硬件访问层

硬件访问层(Hardware Access Layer)简称“HAL”。通过为定时器、串行端口、i2c 和 SPI 总线、EEPROM、SDIO 等低级资源提供通用接口,使 Marlin 可以在各种主板上运行。

为什么Marlin要使用HAL

Marlin 最初于 2011 年从Sprinter和GRBL衍生而来。最初,Marlin 只能在 Arduino 的 AVR 主板上运行,但很快就移植到了 DUE 上。很快我们就看到了基于 LPC1768/9 的电路板出现,还有一个基于 Grbl 的固件称为Smoothieware。

另一款 ARM 处理器 STM32 有望成为新的领跑者,因此我们集思广益,选择了扩展硬件支持的方式。我们决定不从头开始重建 Marlin,而是通过添加一个抽象层来保持与现有硬件的兼容性。

HAL的替代品

我们本可以选择使用 RTOS 来构建这种抽象层,但有太多反对意见:

  • 我们希望与 AVR 和小主板保持兼容。这排除了RTOS。
  • 虽然可以将 AVR 版本分开,但保留单一代码库要简单得多,这样每个人都可以获得最新的功能、补丁,并且所有平台都可以从改进中受益。当我们在更多架构上运行相同的代码时,我们也会更快地发现错误。
  • Marlin 被设计为使用直接中断,因此保持相同设计所需的工作量最少。额外的好处是 Marlin 继续直接运行硬件中断。Marlin 的目标是使用最少的功耗在主板上获得最佳性能。
knowledge/3d_print/2023021101.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1