文章目录
- 资源
- Arduino IDE 的使用
- 1. 使能编译以及烧录的`LOG`:
- 2. 下载配置
- 3. 下载
- Arduino指令
- 程序下载步骤
- 通过下载器下载
- 通过串口下载
- 关于`Arduino IDE`工程生成的二进制文件对比
- `Tools-->burn bootloader` 和 `ArduinoISP例程` 的区别
- 自带例程
资源
- Arduino通过串口进行固件升级
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
的支持库;