注释
它不是最新的,应该更新。
目录结构取决于目标编译器/IDE 要求,文件命名与其他驱动程序一致。至少一个
是和否 –提供的模板适用于基本驱动程序,请查看(或使用)实际驱动程序以获得想法。驱动程序的复杂性可能会有很大差异,如果对于单个板/单个配置,它可能相对简单 – 如果需要支持很多,它可能会变得复杂。
不——从那以后增加了很多。但是架构基本相同,大量使用函数指针将所有内容粘合在一起。
不,但我认为它不会受到太大影响,因为代码的关键部分是从中断中运行的。我有一块 STM32F756 Nucleo-144 板,我打算为其编写驱动程序,这将作为 FreeRTOS 任务运行核心,并具有网络支持,包括用于运行 ESP32 WebUI 的 http 协议。当我开始写这篇文章时,进行基准测试可能是个好主意。
使用 RTOS 时添加网络协议可能更容易。除此之外,我不太愿意让处理器承担其他任务,例如保持 UI 更新。将此类任务卸载到第二个处理器会更好吗?但是,复杂的设计可能不需要会影响中断延迟并因此影响目标应用程序的步进速率/抖动的处理器容量…… |
好啦2040 评论 2021 年 4 月 6 日
感谢您回答这些问题。在决定支持哪个 IDE/dev 环境后,我将开始着手开发一个端口。向 Arduino 提供的工具链学习。我已经将我的嵌入式开发迁移到在 docker 容器中运行。抓住你的电子邮件地址,也得到了。 |
好啦2040 评论 2021 年 6 月 16 日
我的 Teknic ClearCore 端口即将推出。我已经实现了流和 nvs 存储。HAL 文档有什么进展吗?谢谢。 |
特热约 评论 2021 年 6 月 17 日
到目前为止,在我的脑海中——我已经为一项相当大的任务做好了准备,这取决于我如何确定它的范围。最近,我扩展了 ABC 电机的辅助 I/O 支持和简化的引脚映射,包括重新映射到联动/平方轴。当这完成后(一些测试仍然存在)我真的应该开始写文档了…… 结合用户代码可以“挂钩”到 HAL 和部分核心这一事实,意味着可以将整体视为一种可由用户代码利用的操作系统。所以我必须决定如何处理文档,仅针对驱动程序开发人员或通常也可能使用现有驱动程序并添加自己的代码(插件)的开发人员?你怎么看? |
特热约 评论 2021 年 6 月 17 日
好啦2040 评论 2021 年 6 月 17 日
经过漫长的一天,这里已经很晚了。我早上会看看这个。 我将回答您关于谁是文档的目标受众的问题。我怀疑更多的开发人员会想要使用 grblHAL 进行端口修改和自定义。如果文档对他们没有帮助,该组将更大,并且很可能会产生更多问题。 像我一样的端口开发人员,具有一般的 grbl 内部知识,只需要了解回调需要完成什么以及核心将如何使用它。 我真的很累,现在要关机了。 |
好啦2040 评论 2021 年 6 月 18 日
您的原始文档是一个好的开始。使用 doxygen 也很好,因为它可以理解的源代码嵌入在代码中,也可以在那里阅读。我会复习一下 doxygen 的使用情况并将其添加到我的端口中。 |
特热约 评论 2021 年 6 月 18 日
很可能就像我相信在其他地方的 C 代码文档中看到的那样。我不知道这将如何与 HAL 函数指针一起工作。以后有待调查。 请注意,今天是我第一次接触这个工具,所以我非常处于学习阶段。我每隔几分钟推送一次更新,看看我添加的详细信息如何显示…… 顺便说一句,您希望我首先扩展文档的任何部分吗? |
好啦2040 评论 2021 年 6 月 18 日
对于作为端口开发人员的我个人而言,我希望将 HAL 回调函数记录到驱动程序中。 |
好啦2040 评论 2021 年 6 月 18 日
至于我的doxygen知识,我可能比你知道的少。 |
对我来说,从核心到驱动程序的调用不是回调,从驱动程序返回到核心的调用是。 一个示例可能是即将完成的限制 API。 我的思维方式和语言使用方式有问题吗?我不是以英语为母语的人… |
好啦2040 评论 2021 年 6 月 18 日
好的,我对回调的看法正好相反。由于核心是主要的执行循环,driver_init 中的驱动程序将核心的函数指针设置为回调到驱动程序以获取更多信息/执行。 例如, 我的端口实现了核心调用的serialGetC,所以它是一个回调。这是我对“回调”一词的理解。 |
特热约 评论 2021 年 6 月 18 日
我的理解是相反的,回调通常是异步发生的,例如对中断处理程序的调用。grblHAL 中的大多数回调实际上是由中断触发的,但是有些用于枚举核心无法直接访问的数据。例如,enumerate_pins 处理程序使用回调来获取枚举数据,而无需构建大型数据结构来保存它。 当一个调用被发出并立即返回一个结果时,它不是一个回调,即使它是在一个函数指针上。 因此,IMO 上面链接中的这一说法显然是错误的:
指向驱动程序的函数指针可能是简单的静态调用,但代价是失去了在运行时切换功能的自由。通过函数指针传递调用并不会神奇地将它们更改为回调。 |
好啦2040 评论 2021 年 6 月 18 日
我明白你的意思。最终,内核和驱动程序之间的交互是通过函数指针完成的,这对于 C 语言来说是很正常的。让我们继续进行更重要的工作。感谢您的讨论。请关闭此问题。 |
特热约 评论 2021 年 6 月 18 日
好的,那么我想现在应该继续从上到下在 hal.h 文件中添加文档。其中一些会带我进入其他文件,因此需要一些时间。如果有什么不清楚的请大声说出来。 |
好啦2040 评论 on 5 Apr 2021
几年来我一直在关注 grblHAL 的进展。我正在考虑为使用 M4 SAM E53的 Teknic ClearCore 控制器https://www.teknic.com/products/io-motion-controller/启动一个端口。
terjeio/grblHAL 自述文件指出“如果您愿意,甚至可以添加自己的驱动程序。” 此模板链接已关闭https://github.com/terjeio/grblHAL/blob/master/templates/arm-driver
wiki 中的 HAL 开发参考,https://github.com/terjeio/grblHAL/wiki/Hardware-Abstraction-Layer- (HAL)—-developer-reference是 18 个月大。有没有计划更新的?或者这仍然是最新的。
我了解未决的 grblHAL 行动正在进行中,并且端口处于不同的发展阶段……
谢谢你的时间。