文章目录
- Arduino IDE 的使用
- 1. 使能编译以及烧录的`LOG`:
- 2. 下载配置
- 3. 下载
- Arduino指令
- 程序下载步骤
- 通过下载器下载
- 通过串口下载
- 关于`Arduino IDE`工程生成的二进制文件对比
- `Tools-->burn bootloader` 和 `ArduinoISP例程` 的区别
- 自带例程
Arduino IDE 的使用
1. 使能编译以及烧录的LOG:

2. 下载配置

上面的Board:"Arduino Nano"很重要,选不同的开发板,下面的选项也会不一样!
Programmer选项用于指定下载器的类型;
Burn Bootloader用于下载bootloader,这个过程必须使用下载器;有了这个bootloader后,就可以通过串口对MCU的application进行升级了;
3. 下载

Upload和Upload Using Programmer的区别:Upload是通过串口下载,Upload Using Programmer是通过下载器下载;Export Compiled Binary用于将编译后产生的二进制文件保存到源码目录下;Show Sketch Folder可以快速打开二进制文件所在的文件夹,如下图;

Arduino指令
参考:指令选项说明
- 通过使能烧录过程
LOG后,可以发现各种过程的指令如下(以下指令可能随IDE安装路径,工程路径,IDE版本等环境不同而不同,详情可以在Arduino IDE执行相关指令,查看输出日志):
# burn bootloader
C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -vvvvv -patmega328p -cusbtiny -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m
C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -vvvvv -patmega328p -cusbtiny -Uflash:w:C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex:i -Ulock:w:0x0F:m
# upload by programmer
C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -vvvvv -V -patmega328p -cusbtiny -Uflash:w:C:\Users\UserName\AppData\Local\Temp\arduino\sketches\A960C6A0514AE78FCA1E953ECC21/test.ino.hex:i
# upload by uart
C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude -CC:\Users\UserName\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -vvvvv -V -patmega328p -carduino -PCOM11 -b57600 -D -Uflash:w:C:\Users\UserName\AppData\Local\Temp\arduino\sketches\A960C6A0514AE78FCA1E953ECC21/test.ino.hex:i
上面burn bootloader的第一条指令主要是解锁对相关存储单元的写保护;
上面burn bootloader的第二条指令,就是烧录bootloader了。从中可以看到,bootloader文件的路径,在这个路径下,还有相应的源代码;
upload by programmer指令中,通过-cusbtiny指定了下载器;
upload by uart指令中,通过-PCOM11 -b57600指定了串口及波特率;
上面所有的指令中,都有一个-vvvvv,这个选项用于显示指令执行过程中的日志,v越多,日志越详细;
程序下载步骤
通过下载器下载
Tools --> Board:选择Arduino Nano(根据自己开发板而定);Tools --> Processor:选择ATmega328P(Old Bootloader)(根据自己开发板而定;确保上面的Board选对了,某些选项才会出现)Tools --> Programmer:选择USBTinyISP(根据自己下载器型号而定)Sketch --> Upload Using Programmer
通过串口下载
Tools --> Board:选择Arduino Nano(根据自己开发板而定);Tools --> Processor:选择ATmega328P(Old Bootloader)(根据自己开发板而定;确保上面的Board选对了,某些选项才会出现)Tools --> Programmer:选择USBTinyISP(根据自己下载器型号而定)Tools --> Burn Bootloader(这个步骤只能通过下载器进行)Sketch --> Upload(这里就是通过串口下载了)
关于Arduino IDE工程生成的二进制文件对比

通过以上二进制文件的对比发现,带有with_bootloader的hex文件和不带bootloader二进制文件的前面都是一样的,只是在0x7800地址处多了一些内容,这些内容就是实现串口下载功能的代码了。
Tools-->burn bootloader 和 ArduinoISP例程 的区别
- “Tools --> burn bootloader”:通过打开烧录过程日志(File–>preference),可以看到烧录的是哪一个bootloader文件;这个bootloader用于使用串口进行升级;
- “ArduinoISP例程”: 把板子作为下载器,给别的开发板下载程序;
自带例程
Arduino IDE中带了很多例程,可以直接使用;可在File-->Examples里面查看;Arduino IDE也可以开发STM32,不管需要安装相应MCU的支持库;



















