开源改变世界

带有 Optiboot 的 Arduino Nano #759

推推 grbl 3年前 (2023-01-22) 68次浏览

打开
chamnit 打开了这个问题 2015 年 7 月 10 日 · 10 条评论
打开

带有 Optiboot 的 Arduino Nano#759

chamnit 打开了这个问题 2015 年 7 月 10 日 · 10 条评论

注释

带有 Optiboot 的 Arduino Nano #759
成员

我接触了几个 Arduino Nano,并一直在考虑摆脱它使用的 2.0KB Duemilanove 引导加载程序,并用更小的 0.5KB Uno Optiboot 代替它。这基本上意味着您将能够比以前多向 Nano 中塞入 1.5KB。这很重要,因为 Grbl 恰好位于 Duemilanove 的 30KB 闪存限制的边缘,而 Uno 有 31.5KB。

我已经设法将 Optiboot 刻录到我的 Nano 上以释放额外的空间。有人知道这样做有什么问题吗?

这就是我的做法,我对可能发生的事情不承担任何责任,即使它看起来完全无害。

  • 将 Nano 和 AVR 编程器连接到我的电脑,同时 AVR 编程器连接到 Nano 的 ICSP 接头。(您也可以使用另一个 Arduino 作为 AVR 编程器。)
  • 启动 Arduino IDE。
  • 在工具->板下拉菜单中选择“ARDUINO UNO”作为板类型。不是阿杜诺纳米。
  • 在“工具”下拉菜单中单击“刻录引导加载程序”。

然后,这会将 Optiboot 刻录到 Nano 上,释放 1.5KB 闪存空间,现在将作为 Arduino Uno 运行。确保从那时起选择 Arduino Uno 作为开发板类型。

带有 Optiboot 的 Arduino Nano #759

应该注意的是,所讨论的大小(即 2KiB 与 512 字节)由保险丝设置决定,而不是由上传的 .hex 图像的物理大小决定;-) 这意味着,新的较小图像实际上会给您带来任何好处,您必须确保已对​​正确的保险丝进行编程,以便 AVR 本身知道“特殊”区域现在只有 512 字节。

带有 Optiboot 的 Arduino Nano #759
成员作者

@csdexter:是的,保险丝设置 2KB 和 0.5KB 大小是正确的。但是,我很确定“Burn Bootloader”工具会在 Optiboot 闪烁之前正确设置这些保险丝。此外,Arduino IDE 在 Uno 和 Duemilanove/Nano 的“boards.txt”文件中设置了闪存限制。不确定,但这表明 Arduino IDE 将检查并防止您超过此限制,具体取决于您使用的是哪个板。

带有 Optiboot 的 Arduino Nano #759
成员作者

@csdexter: 我检查了保险丝,只是为了确定。Arduino IDE (1.6.5) 在刷新引导加载程序之前会烧掉保险丝。

带有 Optiboot 的 Arduino Nano #759

@chamnit– 效果如何?你有没有发现任何问题?如果没有,我也会这样做。

带有 Optiboot 的 Arduino Nano #759
成员作者

@109JB: 到目前为止,一切都很好。我已经将母排针焊接到几个 Nanos 和 3d 打印的外壳中,大小与一包口香糖差不多。在过去的几天里,它们一直是我专用的开发板,我还没有发现任何明显的问题。尽管其中一个没有很好地闪烁并且在串行终端中返回了很多垃圾。不确定那里发生了什么,但再次烧录引导加载程序将其恢复。

带有 Optiboot 的 Arduino Nano #759

/usr/share/arduino/hardware/arduino/bootloaders/optiboot

README optiboot.c 等看起来很有用

几个可配置的选项:

/* LUDICROUS_SPEED:                                       */
/* 230400 baud :-)                                        */

/* TIMEOUT_MS:                                            */
/* Bootloader timeout period, in milliseconds.            */
/* 500,1000,2000,4000,8000 supported.                     */
带有 Optiboot 的 Arduino Nano #759

“不确定,但这表明 Arduino IDE 会检查并防止您超过此限制,具体取决于您使用的是哪个板。”

这是报告使用的闪存的 %age 所必需的。我不确定 IDE 是否足够智能以防止下载对于目标来说太大的图像。

我听说如果图像太大,您可能会破坏引导加载程序。我自己没有做过任何破坏测试;)

带有 Optiboot 的 Arduino Nano #759
成员作者

这是与 Uno 的 Optiboot 一起运行的 Arduino Nano 的更新。我偶尔会遇到闪烁程序无法正常工作的问题。它会给出超时而不是闪光。解决方案是在闪烁例程开始后立即硬重置 Nano。掌握正确的时机需要一些练习,但它确实有效。所以如果有人遇到这个问题,这是一个解决方案。

带有 Optiboot 的 Arduino Nano #759

如果你切断链接以防止它在每次重置串行链接时重新启动,这听起来就像你必须在 Uno 上做的事情。IIRC,avrdude 切换其中一条串行线以强制重置,如果您切断 UNO 上的链接,您必须在正确的时间进行手动重置。看来你必须在大约半秒钟内把它弄好。所以,正如你所说,它需要一些练习。

带有 Optiboot 的 Arduino Nano #759

@chamnit你用这个线程节省了我几个小时的睡眠时间——在烧掉 optiboot 之后,我无法将草图上传到我的 nano——不知道我必须选择新板作为 Uno 而不是 nano……非常感谢 :)

喜欢 (0)