用Arduino板为另一块Arduino烧写(更新)BootLoader

作者:

手上有两块几年前买的arduino nano板子,这两天要用的时候发现用arduino IDE 1.8.11烧写的时候始终报错“上传失败”。查阅相关资料发现应该在 IDE–工具–处理器 中选择ATmega238P(Old Bootloader)即可上传成功。 这也侧面说明了我的板子的BootLoader已经旧了,不如顺便更新一下。 在这里插入图片描述

烧写BootLoader至少需要两块arduino板,其中一个作为ISP下载器,另一个则是需要被烧写的板子(它们的型号可以不一样)本例将用两块arduino nano ATmega238P(Old Bootloader) 互相依次更新为最新的BootLoader 过程

1. 将ISP下载器的程序烧录进第一块arduino板(下文将其称为 ISP板):

打开 arduino IDE – 示例 – 11.ArduinoISP 示例文件,并上传(烧录)进arduino板中,因为两块板子都是old BootLoader,所以应注意此时选择的处理器应为“ATmega238P(Old Bootloader)”才能成功上传。 在这里插入图片描述

2. 将第二块arduino板(被烧录板)与ISP板相连:

本例中使用的arduino nano 的ISP接口是D10~D13口,分别是SS, MOSI, MISO, SCK 在这里插入图片描述 将ISP板与被烧录板的MOSI(D11), MISO(D12), SCK(D13), GND, 5V 引脚相接,将ISP板的SS(D10)引脚与被烧录板的RST引脚相接

ISP板被烧录板MOSI(D11)MOSI(D11)MISO(D12)MISO(D12)SCK(D13)SCK(D13)GNDGND5V5VSS(D10)RST

注:由于不同型号的arduino板在引脚复用时对应的引脚不一样,所以括号内的引脚名称仅适用于arduino nano 和arduino UNO。若要使用arduino mega2560 等其他型号的板子时,注意对应的ISP接口与引脚号的对应与此表括号内的引脚号是不同的。

3. 进行BootLoader烧写 在 IDE–工具–处理器 中选择ATmega238P,选择没有括号的那个,作为要烧写进去的版本。 在这里插入图片描述 IDE–工具–编程器 中选择Arduino as ISP 在这里插入图片描述 点击“烧录引导程序”即可完成烧写。 在这里插入图片描述

至此第二块Arduino nano 板的BootLoader已经烧写(更新)为最新的了。而第一块nano板作为ISP下载器,其中的BootLoader并未更新。接下来对调两者的角色,再如法炮制即可。

需要注意的是,此时给第二块(已更新)的nano板烧录ISP程序时,在IDE–工具–处理器 中就应该选择 ATmega238P了,烧录好ISP程序后,然后再给第一块板烧录BootLoader。

常见报错

在烧录引导程序的时候有过这样的报错: avrdude: ser_open(): can't open device "\\.\COM10": ϵͳ�Ҳ���ָ�����ļ��� 错误原因是串口端口被占用,尝试关闭IDE或其他软件的串口监视器后重试。

还有报错: avrdude: Expected signature for ATmega328P is 1E 95 0F. Double check chip, or use -F 或: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. 在这里插入图片描述 解决方案: 在 IDE–文件–首选项 中把所有的调试信息(显示详细输出)打开,若显示Device signature = 0x000000或Device signature = 0xffffff等情况,其实不是真的芯片签名有误,而是电路连接有问题,再次检查接线是否接对。

总结

总体思路是:

上传例程“11.ArduinoISP”,将其中一块Arduino作为ISP烧写器。通过ISP引脚将两块板子相连。选择BootLoader版本并上传。

值得注意的有两点:

我们会在步骤1和步骤3,两次涉及到在 IDE–工具–处理器 中选择处理器型号。其中步骤1中选择的是上传程序的那块板子(跟电脑用USB连接的那块)的处理器(BootLoader)型号。步骤3中选择的是要被烧写BootLoader的那块板子(用引线连接的那块)的处理器(BootLoader)型号。这两块Arduino板的型号可以不一样,但要注意它们对应的ISP的引脚号也会不一样。不能单纯按照板子上印刷的引脚号相应连接,而应该找各个板子的PinMapping,找到对应的ISP的引脚。 ISP引脚nano和UNOmega2560SSD10D53MOSID11D51MISOD12D50SCKD13D52

觉得有用的话,不要吝惜评论点赞分享哦,希望大家多多包涵,有任何问题欢迎指正、讨论。 本文基于CC-BY-SA 4.0协议,欢迎转载 (博客看累了?去我的B站瞧一瞧?)

the end

免责声明:本文内容均来自互联网,但不代表简明教程的观点和立场.

已有 8620 次赞