Learning Examples | Foundations | Hacking | Links
关于Bootloader是什么,和我们为什么使用Bootloader,请参考此页。
如果你想使用芯片Flash的全部空间,或者想避免Bootloader带来的延迟,则可以使用别的[编程器]来烧写程序。
为了烧写Bootloader,需要购买一个AVR-ISP (在线编程器)、USBtinyISP或做个并口编程器。编程器连至ICSP管脚(2至3脚)----请确保连接正确无误。Arduino板必须由外接电源或USB口供电。
请确保选择了Tools | Board中的正确菜单项,然后直接运行Tools > Burn Bootloader菜单中的对应命令。烧写Bootloader需要花费大约15秒或更长时间,请耐心等待。
以下是如何为Mini烧写Bootloader的说明(多谢Gian Pablo Vilamil):
Windows XP可能会轮询并口从而干扰Bootloader的烧写过程,因此请为注册表添加以下内容:registry patch:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport\Parameters] "DisableWarmPoll"=dword:00000001
See this forum thread for details.
Bootloader有各种各样的版本----因为要在各种不同的硬件上运行,也因为本身在不断地升级、变化。
Diecimila和NG(ATmega168)Bootloader的当前版本(如Arduino 0009版自带的)几乎完全相同。以上两者的Bootloader均在19200的波特率下工作,并且占用ATmega168上2K的Flash内存。仅有的区别,就是Bootloader等待新程序到来的时间和开始运行时13脚上LED闪烁的次数。由于Diecimila的自动重启,其Bootloader仅需要等待非常短的时间(少于一秒)----为了节约时间,并且仅闪烁13脚LED一次。NG的Bootloader需要等待6至8秒,并且闪烁3次。
Arduino NG自带的Bootloader有一点点不同。它启用了6脚的内置上拉电阻,而没有启动RX脚的内置上拉电阻。因此,若在重启NG之后,就立即向它发送数据,会导致它无法正常启动板上的程序,也不会因为收到无效数据就超时退出。
Arduino BT的Bootloader会做一些蓝牙模块的初始化工作。
ATmega8的Bootloader仅占用1K的Flash空间。当它收到无效数据时不会超时退出,因此需要确保在Bootloader运行的6至8秒中,不能向它发送数据。
一些早期的Bootloader版本运行在9600波特率下(而不是19200)。为了正常下载程序,需要修改preferences file文件中的serail.download\_rate参数值为9600。
一些第三方团体也在开发 Bootloader,他们的工作请参考[这个链接]
Arduino IDE菜单里的"Burn Bootloader"命令使用的是一款开源工具----avrdude,共有4步:
以ATmega8为例,决定以上步骤的设置是:
以ATmega168为例,决定以上步骤的设置是(<BOARD> 表示"diecimila" 或"ng"):
从此处访问Bootloader源代码。