注:此文档为老陈利用业余时间谷歌翻译自官方文档,方便无法访问外网的同学,因为是机翻,很多地方翻译不准确,
有条件的可以自行查看英文原文档,附上地址: https://github.com/grblHAL/core
GRBL的介绍
grblHAL 是针对 32 位处理器的 grbl 1.1 的重写。引入了硬件抽象层 (HAL),以便将核心 grbl 代码与处理器/硬件特定代码(驱动程序编码器)完全分离。驱动程序代码通过函数指针从内核访问,驱动程序通过这些函数指针和 HAL 结构中的标志宣布实现的功能。
这种方法产生了一个“干净”的 grbl 内核,不会被任何处理器/硬件特定代码“污染”。因此,对核心的更改/错误修复可立即提供给所有驱动程序,无需触摸它即可进行更新…
目前有超过 13 个适用于一系列处理器的驱动程序可用,这些驱动程序具有不同的功能,具体取决于可用资源,如 GPIO 引脚和处理器外设的数量。驱动程序通过 HAL 结构“告诉”内核什么是可用的,内核会相应地进行自我调整。编写额外的驱动程序相对容易,因为无需修改核心 – 驱动程序可能在单个单独的文件中实现。
使用函数指针有一些不错的(副作用),一个是驱动程序可以更改指针以动态地指向不同的代码。一个例子是流处理:通常驱动程序提供用于通信的标准串行流,但可能会在运行中将其更改为例如。而是从 SD 卡读取数据。这也可用于提供额外的流,例如通过蓝牙、Wifi 或以太网 – 所有这些都无需更改核心。
HAL API 还提供可选的函数指针条目(挂钩),允许驱动程序扩展设置、添加驱动程序特定的 M 代码、扩展实时报告、添加实时处理等。同样,核心没有变化为此需要。
越来越多的插件使用 HAL API,例如 SD 卡流、Trinamic 驱动程序支持、键盘和编码器支持等等。
还提供了一些模板代码,这适用于那些希望编写新驱动程序或使用自定义功能扩展 grblHAL 的人。