Arduino上传机制介绍

作者:头像   段 森宝   

在Arduino核心MCU的Flash存储上,通常分有两个区域——应用程序区(Application)引导程序区(Boot)

应用程序区存放着用户应用程序,即开发者通过IDE编写的代码编译生成的程序,其功能由开发者定义和实现;

引导程序区,通常存放有一段启动加载程序(bootloader),该程序可以将PC发送来的应用程序,存储到应用程序区中。

Arduino每次启动后,都会先运行bootloader程序,如果PC没有向Arduino传输新的应用程序,Arduino则会很快开始运行现有的用户应用程序。

因此要更新Arduino上的程序,就要先将Arduino复位,让其运行bootloader,以备接收新上传的应用程序。

在Arduino UNO/Mega上串口芯片DTR引脚和AVR RST引脚间串联了一个100nf的电容,Arduino IDE在上传程序前,会通过发送串口DTR脉冲让Arduino开发板复位,进而让Arduino运行bootloader。然后Arduino IDE再按照规定的协议传输应用程序,即可在bootloader的协助下,将应用程序写入到应用程序区中。

对于不同的Arduino开发板,其上传与复位方式不同,如Leonardo、Due都带有原生的USB端口,可以模拟成串口设备和PC通信。其上传程序是通过DFU(Device Firmware Upgrade)模式进行的。当PC以1200波特率打开设备串口时,Arduino即会切换到DFU模式,接收PC传来的应用程序。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注