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 来构建这种抽象层,但有太多反对意见: