如何烧录 arduino 的 bootloader

如题所述

为了恢复Arduino的功能,必须得重新给ATMega328P单片机里烧写bootloader(其实Arduino就是在AVR单片机中预置了一个bootloader程序,这样再配合Arduino开发环境就是所谓的Arduino了,但Arduino这个词本身只留给官方使用)。当然在淘宝上也能买到已经烧写好的AVR单片机,只是自己手上已经有了AVR单片机,就没必要去花那冤枉钱了。
于是马上打开万能的百度,输入关键字“Arduino bootloader”果然,一大堆乱七八糟相关的问题就出来了,经过一轮的筛选,发现许多说的也并不是很清晰,不过让我明白了个大概:一个普通的AVR单片机确实能烧写bootloader之后作为Arduino使用。那么问题来了,如何把bootloader烧录到AVR单片机中去了?这的确是个问题,反正对于不懂AVR开发的我来说是个问题。不过还好之前在淘宝上买了一个USBASP下载器,跟之前擦除bootloader一样,也要用到progisp软件(因为此时的ATMega328P只是一个普通的AVR单片机,用Arduino开发软件是烧写不进去的)。
既然要烧录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个.HEX之类的文件。但是,bootloader文件从哪来呢?继续百度。。。找到了,在Arduino软件安装目录中的hardware\arduino中。此文件夹下的“boards.txt”文件很重要,是很重要,其他的或许都可以在百度上找到,但因为这个文件折腾了我大半个晚上,百度上也没有明确的说明。打开文件,找到自己对应的Arduino版本,因为我的是“Arduino Uno”,于是锁定“uno.name=Arduino Uno”区域的说明,因为看上去很乱,一定要仔细去看。找到“uno.bootloader.low_fuses=0xff"指编程熔丝低位为FF,”uno.bootloader.high_fuses=0xde“指编程熔丝高位为DE,”uno.bootloader.extended_fuses=0x05“指扩展位为05。这三个值非常重要,是决定你烧录bootloader成功的关键。至于这三个值具体是什么意思,我也不是很不清楚,但AVR单片机的烧录时需要设置熔丝位,而且不能乱设置,这也是AVR跟51单片机的不同之处。
用progisp软件把这三个熔丝位的值写入到AVR单片机中,然后继续浏览”boards.txt“文件往下看,找到”uno.bootloader.path=optiboot“这就是说要烧录的bootloader文件在bootloaders\option文件夹中,“uno.bootloader.file=optiboot_atmega328.hex”文件名就是optiboot_atmega328.hex,这就是接下来需要烧录到AVR单片机中的程序。用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arduino的AVR就做好了。。。
其实这个问题本身不难,但对于没接触过AVR的人来说,还是要花许多时间的,中间也会存在许许多多各种各样的问题。至于progisp的使用方法很简单,百度上的教程也很多,还有手上必须有一块可以烧录AVR单片机的下载器。我当时就是忽略了那三个熔丝位的值,所以反反复复也没有成功,百度上面也没有对”boards.txt“文件做详细的解释。没设置熔丝位程序是可以正常的烧录进去,但Arduino是不能用的,所以必须要按照官网给出的说明操作。我当时大多数时间主要花在两个问题上,一个是.HEX文件具体位置,因为Arduino有不同的版本,所以.HEX文件也不同,还有一个就是熔丝位上。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何给Arduino芯片烧入bootloader
(1). 打开Arduino的示例文件ArduinoISP将其上传到作为Programmer的那块板(假设你已经知道怎么上传了);(2). 上传完毕后,选择工具 --> 程序员--> Arduino as ISP,因为用的是中文版,程序员选项就是工具栏中倒数第二个,最后点击工具栏中最后一个选项”烧录引导程序”,然后等待烧录完成就好了,如...

如何烧录 arduino 的 bootloader
打开文件,找到自己对应的Arduino版本,因为我的是“Arduino Uno”,于是锁定“uno.name=Arduino Uno”区域的说明,因为看上去很乱,一定要仔细去看。找到“uno.bootloader.low_fuses=0xff"指编程熔丝低位为FF,”uno.bootloader.high_fuses=0xde“指编程熔丝高位为DE,”uno.bootloader.extended_fuses=0x...

使用Arduino 烧录全新的 ATmega328P
烧写 Bootloader 的步骤如下:1. 将 Arduino IDE 自带的 “ArduinoISP” 代码下载到 Arduino Uno 中,将 Arduino Uno 转变为编程器。2. 将 Arduino Uno 作为编程器时,硬件连线需参照图示,确保目标板的 RESET 脚连接至 Arduino Uno 的第10脚。选择 Arduino 作为编程器,并将开发板选择为“Arduino ...

基于ATmega 328p的ARDUINO UNO bootloader 烧写(ATmega32U4也有补充...
1. 使用progisp烧写:下载1.72版本,设置好芯片和烧写器,输入熔丝位并烧写optiboot_atmega328.hex文件。2. 或者使用AVRDUDESS烧写:选择USBasp,设置熔丝配置并烧写Caterina-Leonardo.hex文件(ATmega32U4)。六、验证 使用Arduino IDE,烧写示例代码验证bootloader是否成功,如LED灯闪烁。补充说明:ATmega32U4烧...

求助自制arduino烧写bootloader有困难
具体的接线说明,在ArduinoISP程序的注释段中有描述。3、准备烧写 当准备好ISP烧写设备,正确连接ISP接口的6根线后,就可以开始烧写Bootloader了。首先打开Arduino IDE开发环境,在工具->板卡的子菜单中选择正确的板卡型号。具体选择什么板卡,应该按照准备烧写Bootloader的板子的MCU型号来确定。然后在工具->...

求助自制arduino烧写bootloader有困难
具体的接线说明,在ArduinoISP程序的注释段中有描述。3、准备烧写 当准备好ISP烧写设备,正确连接ISP接口的6根线后,就可以开始烧写Bootloader了。首先打开Arduino IDE开发环境,在工具->板卡的子菜单中选择正确的板卡型号。具体选择什么板卡,应该按照准备烧写Bootloader的板子的MCU型号来确定。然后在工具->...

如何利用Arduino作为AVR ISP烧录bootloader
一、首先安装AVRISP mkⅡ的驱动程序 二、进入AVRstudio 选择tools下的 device programming 选择AVRISP mkⅡ Device选择对应板子的芯片,我这是uno选择Atmega328p 单击Apply 出现以下画面 单击read 出现以下画面,显示出当前系统电压和设备标示号 三、烧录bootloader 选定Memories 选择需要烧如的文件。用写字...

Arduino生成bin文件,使flash_download_tool烧录到ESP32
1. 打开Flash_download_tool工具,如果没有,可从乐鑫官网下载。2. 选择ESP32型号,并选择build文件夹中所需的bin文件。3. 填写正确的烧录地址:xxx.ino.bootloader.bin烧录至0x000,xxx.ino.bin烧录至0x10000,xxx.ino.partitions.bin烧录至0x8000。4. 按下“START”按键开始烧录。5. 烧录完成后,...

用Uno 当烧录器给 atmega328 烧录 bootloader
将 Uno 和 atmega328 通过 MOSI、MISO、SCK、5V、GND 相连,同时将 Uno 的 10 引脚接到 atmega328 的 RES(RESET)上。随后,在 ArduinoISP 程序中验证上传至 Uno,完成固件的编译与上传。在菜单栏中显示详细输出并勾选上传选项,再尝试获取详细信息。选择 Arduino as ISP 作为编程器,执行烧录引导...

如何用USBasp给ATmega8烧写Arduino的Bootloader?
我的最小系统单片机焊好之后,用AVR_fighter烧写程序时,如果最小系统上拨(9)一般情况下不要设置熔丝位把RESET引脚定义成I\/O使用(如设置ATmega8

相似回答