一、简介
Arduino的Bootloader是一段预装在Arduino板上微控制器中的小型程序,负责在上电或复位时初始化硬件,并允许通过串行通信将用户代码上传到板子上,无需外部硬件编程器。
本文详细地介绍了如何为空白的ATmega328p芯片烧录Bootloader,从而使ATmega328p芯片像Arduino一样可以直接上传程序!
换言之,就是介绍如何使用ATmega328p芯片制作Arduino Uno R3开发板的过程。
本教程已通过测试,请放心使用!
二、准备
1、硬件
本文不指定硬件的品牌,所提供的产品图片可供参考,硬件接口(引脚类型)一致即可相互替换。
为方便区分烧录Bootloader和上传程序两个概念,本文对烧录和上传两个名词的使用加以区分。
序号 | 名称 | 数量 | 作用 |
---|---|---|---|
1 | ATmega328PU | 1 | 运行程序,系本文的研究核心 |
2 | AVR ISP Shield | 1 | 扩展ATmega328PU芯片的引脚 |
3 | USBasp | 1 | 提供烧录Bootloader的ISP接口 |
4 | UART-USB | 1 | 提供上传程序的RX/TX硬件接口 |
(1)ATmega328PU
(2)AVR ISP Shield
(3)USBasp
(4)UART-USB
2、软件
本文仅提供Windows 11系统的实现方法,三个软件需要下载windows版本。
如果使用其它系统,请自行搜索相应的软件版本,并查看该系统环境下的软件使用教程。
序号 | 名称 | 作用 |
---|---|---|
1 | zadig | 提供USB驱动的安装 |
2 | avrdude | 烧录编译后的AVR程序 |
3 | optiboot | 提供Booloader文件 |
4 | Arduino IDE | 上传arduino程序 |
四个软件的官方下载链接如下。本文还提供了其中三个软件的下载链接(除Arduino IDE外),可以查看本文绑定的资源【ATmega328_Bootloader_Maker.zip】。
ZADIG 官方下载链接https://zadig.akeo.ie/AVRDUDE 官方下载链接
https://github.com/avrdudes/avrdude/releases/tag/v8.0OPTIBOOT 官方下载链接
https://github.com/Optiboot/optibootARDUINO IDE 官方下载链接Open-source electronic prototyping platform enabling users to create interactive electronic objects.
https://www.arduino.cc/en/software下载后,解压zadig、avrdude、optiboot,三者可以直接使用。Arduino IDE需要安装,建议安装到C盘。
在optiboot文件夹中找到optiboot_atmega328.hex文件,复制到avrdude文件夹中,如下图所示。
三、制作
为方便表述,以下将四类硬件简称如下。
原名 | 简称 |
---|---|
ATmega328PU | 芯片 |
AVR ISP Shield | 扩展板 |
USBasp | 烧录器 |
UART-USB | 串口模块 |
1、安装驱动
运行zadig软件,并将烧录器通过USB接入计算机。
选择Options,勾选List All Divices。
回到软件主界面,在第一个下拉框选中USBasp,在第二个下拉框选中libusb-win32。
点击Install Driver,完成后将显示以下图片,代表烧录器的驱动已经安装完成。
2、正确锁紧芯片
初始状态下,扩展板的压杆为抬起状态。
将芯片插入扩展板中,注意芯片带有半圆缺口的方向要朝向扩展板的压杆。如果装反,通电后可能烧坏芯片!
芯片插入扩展板后,按下扩展板的压杆,使芯片锁紧在扩展板上。
3、连接扩展板和烧录器
先将烧录器从计算机上拔出。
再将烧录器和扩展板相连接,注意烧录器上的MISO字样和扩展板上的MISO字样对应。如果接反,通电后可能烧坏芯片!
4、烧录Bootloader
通过USB接口,重新将烧录器插入计算机。
在avrdude文件夹中,点击鼠标右键并选择“在终端中打开”,如下图所示。
输入以下指令,给芯片烧录Bootloader。
./avrdude -c usbasp -p m328p -U flash:w:optiboot_atmega328.hex
当烧录完成后,终端将显示如下内容。只要提示Avrdude done则说明烧录成功,其它报错无需关注。
Reading 474 bytes for flash from input file optiboot_atmega328.hex
Writing 474 bytes to flash
Writing | ################################################## | 100% 0.38 s
Reading | ################################################## | 100% 0.26 s
474 bytes of flash verified
Avrdude done. Thank you.
5、连接扩展板和串口模块
要验证芯片是否已经烧录了Bootloader,最直接的方法就是使用Arduino IDE给芯片编程。
将串口模块和扩展板正确连接。注意,串口模块上有个跳帽,跳帽应该插到5V和GND上,代表对外输出5V电压。
此外,仔细观察串口模块上的6个接口要和扩展板上的6个接口相对应。如果插反,通电后可能烧坏芯片!
6、验证Bootloader
通过USB线,将串口模块插入计算机。
打开Arduino IDE软件,运行test.ino程序。
# test.ino
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello World!");
delay(500);
}
如果在串口监视器中观察到Hello World!字样,代表芯片已经烧录了Bootloader,并且能够像Arduino一样运行程序!
四、资源下载
ATmega328_Bootloader_Maker.zip
可从绑定资源下载,也可从百度网盘下载。
【百度网盘下载链接】
链接:https://pan.baidu.com/s/15xBEHhqqCWMXE_aWBScH_A?pwd=bagw
提取码:bagw