开源改变世界

ARM讨论 #67

推推 grbl 3年前 (2023-01-21) 135次浏览
打开
chamnit 打开了这个问题 2016 年 12 月 15 日 · 314条评论
打开

ARM讨论#67

chamnit 打开了这个问题 2016 年 12 月 15 日 · 314条评论

注释

ARM讨论 #67
贡献者

在 Grbl 的 ARM 平台上自由讨论您的意见,在 v1.1 之后继续前进。

ARM讨论 #67
贡献者

我认为 Grbl 的成功部分归功于 Arduino 的标准化。在全世界很容易买到一个 Arduino。这允许使用 Grbl 轻松输入。
所以我的问题是,什么样的主板配备合适的硬件才能满足未来的需求。我还没有花太多时间考虑这个问题,但如果有人有任何好主意,我很感兴趣。
就像 Teensy 3.5/6,但据我所知,这些板不是 FOSS。这对某些人来说可能是个问题。Arduino Due 只有 M3 和@Strooom建议将某些东西与 M4F 一起使用以进行更快的浮点数学运算。
我只是认为一开始有一个通用平台来开发和测试并了解它是否有效会很好。
下一个问题是将其连接到步进驱动器结束停止按钮显示等 pp 有多容易。

ARM讨论 #67
贡献者作者
香奈儿 评论了 2016 年 12 月 16 日  

关于 Grbl 将要做什么以及它将如何进入 ARM 世界存在很多问题。过去几十次,今天又一次来自(@alpharesearch@Strooom). 我认为现在是时候开始公开谈论 Grbl 的长期战略了,因为 v1.1 终于出来了。

我非常反对具有非常大的代码库的单片处理器模型,在一个芯片上支持所有内容。这做了两件事:

  • 即使它被设计成模块化的,将代码移植到另一个处理器上也要困难得多,无论它是更新的、更快的、更好的,还是具有新的内置技术。
  • 您经常需要担心会破坏某些东西或破坏核心运动过程的关键时间。这是我想避免的一个令人头疼的问题,也是我从未接受 pull requests 的主要原因。

要改善每个人都想要的核心运动控制问题,关键是要随时严格控制处理器的工作。所以,我认为 Grbl 应该在某种程度上保持与噪声的独立性,并为其提供一组高带宽通信方法,而不仅仅是 USART 串​​行。这将允许 Grbl 继续开发运动控制问题。

至于 Grbl ARM 使用什么处理器,我个人认为这并不重要。原因如下:

  • Grbl 在慢速 16Mhz 8 位 328p 处理器上运行良好,适用于绝大多数 CNC 应用程序,然后是一些。据报道,新的激光模式可以以 700 像素/秒的速度执行 0.1 毫米像素的光栅作业。我听说过一个报告,32 位 ARM 100MHz Cortex M3 上的 Smoothie 只能以 500 像素/秒的速率处理 0.5mm 像素。我知道这并不完全是苹果对苹果,只有一个数据点,但令我惊讶的是 Smoothie 的运行速度并没有快至少 10 倍。似乎这只是一个很小的速度改进。
  • 如果 Grbl 的代码如此高效,那么 Grbl 应该可以在任何选定的 ARM 处理器上运行并且运行良好。即使 Grbl 使用便宜得多的 Cortex M0 处理器,理论上它也比 328p 快 4 到 10 倍。如果 M0 上的 Grbl 在现实世界中的性能可以提高 2-3 倍,这仍然可以满足现在和将来几乎所有的 CNC 需求。
  • 根据我作为研究人员的经验,开发快速高效的代码和算法总是胜过使用更快的处理器。我认为 M0 上的 Grbl 会很好。Cortex M4F 上的 Grbl 可能有点矫枉过正。
  • 如果 Grbl ARM 被编写为小巧、便携且独立于外围设备支持,那么选择的处理器应该无关紧要。如果需要,它应该很容易通过设计移植到 Cortex M4F 或任何制造商。

@alpharesearch:我完全同意你的看法,Grbl 之所以成功,是因为使用 Arduino 轻松尝试 CNCing,并且能够通过 IDE 轻松编译自定义版本或新版本。我认为 Teensy 是一个很好的平台,但由于引导加载程序问题,它对 OEM 来说不是很好。这就是我瞄准 SAMD21 Cortex M0 系列的原因。在我的测试中,它足以满足我短期内打算做的所有事情。由于平台越来越受欢迎,它保留了使 Grbl 易于访问的核心原则。

至于支持外围设备,我认为这确实需要一个单独的社区项目,MIT 许可,并在一个单独的 MCU 上作为协处理器模型直接连接到 Grbl ARM。这将引起原始设备制造商的兴趣和帮助,并允许用户帮助完成该项目。不用担心会破坏运动控制器的时序和关键流程。协处理器的想法并不是什么新鲜事,但我认为它确实需要得到推广并得到官方支持。

ARM讨论 #67

我已经完成了 1.1e 到 stm32F103RBT6 的初始移植,可以在这里查看https://github.com/usbcnc/grbl
主轴控制移植应该在下周完成。(我这周有点忙)。
它确实使用 USB VCP。它确实在我的台式机 CNC 3020 上运行。

我使用免费的 coocox IDE 来编译和编程 (STlinkV2)。
我是 CNC 新手,无法判断性能差异。如果有更多人感兴趣,我会更有动力。

ARM讨论 #67

@alpharesearch我认为GRBL的成功在于:

  • 在价格便宜且可用的标准 Arduino Uno 上表现良好
  • 由于大量配置设置,在各种硬件上运行良好

不过,我认为它使(恕我直言)成为入门级 CNC 控制器。经过几年的经验,您可能想要功能更多、性能更高的东西:

  • 更多的轴、更多的限位开关、三阶速度曲线、更大的缓冲区……(仅举一些我想要的)。

由于 Arduino 上的 GRBL 在入门级上已经做得很好,我认为 ARM 版本应该朝着“入门级之后的下一个”控制器的方向发展。当您构建第一台机器时,GRBL 仍将存在。

当您使用这种控制器升级 CNC(或其他机器)时,只有升级硬件才有意义。(电机控制器 – 主轴 – 轴承 – …)所以在总体情况下,控制器板的成本非常小,不应发挥重要作用。

@chamnit我同意 GRBL 在 16 MHz 328P 上做得很好,但是(恕我直言)这是以代码的复杂性为代价的:为了适应 ROM/RAM/CPU 周期,功能以巧妙、智能的方式实现方式,但不容易理解,当然也不容易修改或扩展。其他示例是缓冲区大小,由于 Arduino 上的资源有限(例如,其 Rx 缓冲区对于 GCode 最大块大小 256 字节来说太小)。转向 ARM 应该(恕我直言)也放宽了这些限制。通过拥有“大量”的 ROM/RAM/CPU,我认为代码可以更加模块化和更简单,并有更多的人参与其中。

我不知道 Teensy 引导加载程序问题:我通过 Arduino IDE 对其进行编程,我同意您需要手动将其置于程序模式 – 恕我直言,带来的不便。

关于 Teensy SW 未开放——我也不知道——想了解更多信息。总的来说,我认为 ARM sw 库的质量比 Arduino 好……

感谢您的精彩讨论!

@Stroom, 只有一个@Strooom:-)

ARM讨论 #67
贡献者作者

@Strooom @usbcnc: Grbl ARM 不会是 Grbl 在 328p 上的直接端口。出于同样的原因(一个也是唯一的)@Strooom说。由于闪存、内存和速度限制,Grbl 的代码之所以如此。您根本无法在不影响其中任何一个的情况下对事物进行模块化。至于复杂,对我来说并不复杂!:) 但别担心,我计划重新编写一些东西,使其具有更实用的编程风格,以便更容易测试和移植。

@Strooom:我听到了所有这些事情:更多的轴、更高阶的运动控制、更多的输入和更大的缓冲区。所有这些都可以容纳在 SAMD21 系列上。有一个具有 64 个引脚的 J 变体。万一它不够用,可以很容易地移植到 STM 或 Freescale,因为@usbcnc和其他人已经表明。

计划一直是至少要成为 LinuxCNC 的替代品。需要首先弄清楚实时进给保持和覆盖等问题。他们现在有。接下来是高阶运动控制,以及更多的轴。高阶运动控制问题的症结已经解决。现在是实施。一个更好的流媒体接口也已经在计划中,以消除流媒体限制,尤其是在高数据速率下。

就像我之前说的,我不接受拉取请求在很大程度上是因为在不影响性能的情况下保持无抖动的步进输出的敏感性。如果使用和创建一个单独的协处理器模型,Grbl 的主机(将直接流式传输到它并支持 LCD、游戏杆、SD 卡、Wifi、BLE、本机 USB 等)可以由每个人贡献。无需担心因更改代码而破坏运动控制器。您只需为 Grbl ARM 维护一个动作流即可执行。就像你说的,微控制器的成本不算什么。因此,拥有一个 Grbl ARM 控制器和一个 Grbl Host 控制器是完全可行的,也是解决此问题以进行未来验证的正确方法。

至于 Teensy,Teensy 的引导加载程序芯片是专有的,每片 8 美元。这使得它对 OEM 或硬件人员非常不利,但它也可以保护 Teensy 免受完全正确的克隆。我理解为什么 Paul 有这个模型,但是公司使用 Teensy 并不理想,这就是为什么你看不到很多基于 Teensy 的硬件。

此外,我仍然不打算使用任何 Arduino 或 Teensy 库,Grbl 从来没有。事情是建立在制造商的现有软件框架上的,这些框架不是基于 GPL 的。

ARM讨论 #67
贡献者

我更多地考虑的是仅适用于最终用户的参考设计(现在是 Arduino 系列)。我想如果可以回收某些现有组件(例如步进驱动器)并且可以使用其他组件(例如来自其他系统的显示器和按钮),那将是一个加号。我只是认为,如果人们可以主要使用现成的部分并轻松快速地创建一个系统,那就太好了。

@Strooom我认为是 Teensy HW 是唯一没有打开的东西,但是 SW 应该都很好。顺便说一句,我个人对此没有任何问题。

@chamnit如果我在贸泽四处寻找 M0 和 M4F 开发板,看起来两者都有很多选择,而且许多价格相同(10 美元至 40 美元)。您是否有考虑到 M0 的特定开发板?

ARM讨论 #67
失误 评论了 2016 年 12 月 16 日  

SAMD21 示例是 Arduino 零。Sparkfun 还有一个 SAMD21G 板。最好的例子是 Atmel SAMD21 Xplained 板。它价格低廉,有一个 J 芯片,带有完整的 64 引脚。板上还有一个硬件调试接口,这使它成为 IMO 开发的唯一选择。

让驱动程序等远离 Grbl 板。如果您不这样做,那么无论该设计是什么,您都会陷入困境。无需更改引脚、添加/更改接口等。保持您的硬件设计模块化。

要记住的一件事是 ARM 仅指定核心 cpu 和极少数外围设备。(例如中断控制器)。USB、I2C、SPI、Can 等所有其他东西都取决于芯片供应商。在大多数情况下,他们都以不同的方式做到这一点。因此,仅仅说 M0 ARM 是不够的,您需要选择供应商才能获得详细信息。

ARM讨论 #67
贡献者作者

因此,我今天花了一些时间重新分析我对 SAMD21 的决定,并对重要指标进行了一些基准测试。虽然 SAMD21 确实至少比 328p 快 3 倍,但我又开始怀疑它了。它肯定会在短期内起作用,但它可能太短了。我将陷入另一种 328p 的情况。(令人惊讶的是,stm32F103RBT6 的速度仅为 SAMD21 的两倍。好但不是很好。)

这让我想起了青少年。有一段时间我致力于 Teensy 3.x 系列,但引导加载程序问题是主要问题。有人对此有解决方法吗?

ARM讨论 #67

Teensy 的引导加载程序芯片是专有的,每片 8 美元

我不知道这一点。
从个人的角度来看,8 美元看起来很合理。从 OEM 的角度来看,我知道这可能是个问题。
我是“公平份额”的捍卫者:为了取得长期成功,所有贡献者都需要获得公平份额的利润和信用。因此,当考虑将 Teensy 作为 GRBL 未来的候选者时,我们需要与 Paul Stoffregen 和前 5 位“客户”(Carbide3D、Inventables、Openbuilds 等)讨论这个问题

这是一件非技术性的事情,但解决它也很重要,最好尽早解决。

ARM讨论 #67
贡献者

我只是想了解一下情况,如果我有错误的假设,请指正。
据我所知,使用 Teensy 进行开发首先会将 Grbl 锁定到飞思卡尔 Kinetis K64 ARM MCU。Teensy 有一个专有的编程接口(这也是一个引导加载程序吗?),可以与 Arduino IDE 一起使用。这允许以前使用过 Arduino 的任何人轻松入门。
原始设备制造商现在是否从头开始创建自己的电路板?Freescale Kinetis K64 ARM MCU 还存在哪些其他编程接口/引导加载程序(从我的简短谷歌搜索来看,似乎有一个“FRDM-K64F:Kinetis K64、K63 和 K24 MCU 的自由开发平台”,带有开源硬件和引导加载程序)?
我猜 OEM 是否有多种选择,包括原始的 Teensy 和他们的产品,或者制作自己的编程接口/引导加载程序,或者使用 FRDM-K64F 设计和引导加载程序。
我今天才第一次注意到 FRDM-K64F 板,这会是一个参考设计选项吗?

ARM讨论 #67

@alpharesearchFRDM-K64F 看起来很有趣。将在周末研究其规格。

ARM讨论 #67

似乎大多数讨论都是关于使用什么平台的。作为一个终端用户,他绝不是编程、微控制器等方面的专家,我只能说上传 Grbl 固件的方法应该很容易,否则我认为你会赶走一群潜在用户。当前通过 Arduino IDE 上传的方法非常简单且用户友好。我并不是说必须采用这种方法,但最好还是采用同样简单的方法。也许一旦选择了平台,这里的一位专家就可以创建一个简单的上传界面。

我对该平台唯一的其他评论是它应该有足够的输入和输出引脚以允许未来扩展。4 个或更多轴、与原位开关、主轴编码器、轴编码器分开的限制,所有这些都会浮现在脑海中。

至于 Grbl 的非平台特定增强功能,我最大的投票是用于车床螺纹加工和铣削刚性攻丝的主轴反馈 – 缺乏在车床上加工螺纹的能力使得 Grbl 在车床上几乎无用,因为螺纹加工对于车床操作非常普遍。在工厂里,这没什么大不了的,但绝对是一个好处。我相信由于几个原因,这种限制会让很多潜在用户离开。拥有车床的人不想来回切换他们使用的控制器,因此会选择其他东西,如 linuxCNC 或 Mach3/4,然后在他们的工厂里,他们可能会使用相同的程序,而不必学习另一个程序. 此外,一些仅使用铣床的人也会通过将卡盘安装到铣床主轴来将它们用于车床操作。我自己不时这样做。在这种情况下能够同步和线程也很棒。这当然需要添加反馈以及用于螺纹加工的 G 代码命令。

ARM讨论 #67
贡献者作者

行。我想我在 Teensy 或 SAMD21 的替代品上有点仓促行事。我想起了一项长期计划,该计划使 MCU 的速度变得不那么重要。但是,我认为将 Teensy(或其他更快的 MCU)作为备份是明智的。我将确保解耦所有 MCU 进程以促进这一点。

@109JB:至于引脚数,SAMD21 J 变体有 64 个引脚。大量用于 4 个以上的轴和限位销。即使是普通的 G 变体也足够(38 个 I/O,总共 48 个),但它们通常没有全部连接或用于专用 SPI、USB 串口等。

我听到你在车床上穿线。这实际上是一件很容易做到的事情。另一方面,刚性攻丝有点困难,因为您需要一个能够精确同步运动的主轴。

ARM讨论 #67
贡献者
质子 评论了 2016 年 12 月 17 日 通过电子邮件
喜欢 (0)