如何刻录引导加载程序?


Answers:


15

引导加载程序是一个几乎总是在Arduino上的小程序。它管理着上载和开始制作的草图,并在电路板复位时使第13针LED闪烁。


刻录引导加载程序:

  1. 获取AVR ISPUSBtinyISPParallelProgrammer其他Arduino开发板。这将是您的ISP。
  2. 除非另有说明,否则将ISP连接到电路板上的ICSP引脚。
  3. 使用USB电缆或外部电源为电路板供电。
  4. 打开Arduino IDE。
  5. 确保Tools ► Board ►在IDE中选择了要刻录到的正确板。即使可以正确上传程序,也请仔细检查;上传并不总是需要合适的板。
  6. 在选择合适的编程器Tools ► Programmer ►
  7. 单击开始Tools ► Burn Bootloader,然后等待。它不应该超过一分钟,通常只需几秒钟。

资料来源:


1
在这一点上,AVRISP几乎是停产的。至少,您需要一个AVRISPmk2。还有许多其他更高级的工具(例如AVR One!)。您可能应该说{line 1} or other dedicated ISP programmer.
Connor Wolf

在像Arduino Yun这样的板上,每次“通过wifi上载”时,您都在烧写与您的草图合并的引导程序。这要归功于Linux CPU通过SPI连接到AVR MCU的事实,因此您可以使用软件模仿ISP。
Federico Fissore 2014年

@FedericoFissore-那为什么要花这么长时间?
TheDoctor 2014年

是的,而且GPIO比特跳动更慢。目前正在努力加快速度。
Federico Fissore 2014年

8

什么是引导加载程序?

引导加载程序到底是什么?

引导加载程序是驻留在程序存储器“较高”部分的一小段代码。通常,上传新草图时不会删除它。其目的是在复位后立即激活(熔丝配置为在引导加载程序地址而不是地址0x0000处开始代码)。引导加载程序将等待一小段时间(例如一秒钟),以查看“编程”数据是否已到达串行端口。

  • 如果是这样,它将读取该数据,并对其进行解码以对闪存的其余部分进行重新编程。与上传程序(通常为avrdude)配合使用,新草图通过串行端口发送。引导加载程序将擦除闪存页面,并用新代码替换它们。完成后,它将执行新代码。

  • 如果没有指令到达,则引导加载程序跳转到地址0x0000,以执行板上的现有草图。


如何更换引导程序

对引导加载程序进行编程的另一种方法是使用我之前写过的草图,该草图在以下位置运行:

  • Uno(或类似的名称,例如Duemilanove)
  • 列昂纳多
  • Mega2560

“编程”板运行该草图,其中包含用于许多硬编码到其中的板的引导程序。如图所示,用6条连接线将编程板连接到目标板(需要引导加载程序的板)。

Uno的Bootloader程序员

那张特定的照片说明了一个Uno正在编程另一张照片。

您运行草图(通过串行监视器进行操作以提供命令)。首先,它确定目标芯片:

Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F 
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF 
HFuse = 0xDE 
EFuse = 0xFD 
Lock byte = 0xCF 
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...
Type 'G' to program the chip with the bootloader ...

您按G进行编程。

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF 
HFuse = 0xDE 
EFuse = 0xFD 
Lock byte = 0xCF 
Done.
Type 'C' when ready to continue with another chip ...

对于Uno,这需要一秒钟。对Mega2560进行编程需要3秒钟。

Atmega引导加载程序程序员的详细说明

可以从Github下载代码:nickgammon / arduino_sketches


您是否必须选择要刻录到的芯片类型(工具->主板..)?当我将引导加载程序刻录为独立芯片时,应该选择哪个板?
卡米洛

您可以选择用于在IDE中刻录引导加载程序的板的类型。引导加载程序草图会自动检测目标板的类型。
尼克·加蒙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.