当用isp给arduno下载程序之后,板子上的bootloader将会丢失,所以要重新烧录bootloader,既然要烧录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个.HEX之类的文件。
但是,bootloader文件从哪来呢?在Arduino软件安装目录中的hardwarearduino中。此文件夹下的“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文件在bootloadersoption文件夹中,“uno.bootloader.file=optiboot_atmega328.hex”文件名就是optiboot_atmega328.hex,这就是接下来需要烧录到AVR单片机中的程序。用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arduino的AVR就做好了。。。