86Duino Bootloader 介绍

86Duino 韧体系统包含一个 86Duino bootloader 程式,用于接收并执行使用者烧录的 sketch 程式。

Bootloader 的动作

目前 86Duino Zero、One、EduCake 使用的 bootloader 称为 HeHuan(未来其它型号的 86Duino 可能使用不同版本的 bootloader),它是 86Duino 开机后第一个执行的程式,会透过 USB Device/Programming Port 与 86Duino Coding 开发环境互动,接收使用者的 sketch 程式并储存至 86Duino 板上,以及执行该 sketch 程式。

当使用者接上 86Duino 电源或按下 RESET 按钮,HeHuan 会在开机后检查是否存在使用者烧录的 sketch 程式,如果存在,就立刻执行该程式;如果不存在,则停下来等待从 86Duino Coding 开发环境传送来的烧录要求。当 HeHuan 处于等待或接收使用者程式的状态,你会看到 86Duino 板子上标为 L 的 LED 灯持续以呼吸方式(渐亮渐灭)闪烁,如下图所示(您可据此判断 bootloader 是否正在执行):

breath_led

强制进入 Bootloader 的方法(86Duino Zero/One)

有时候使用者可能会写出有问题的 sketch 程式,使得 86Duino 当机或在开机后无法进入 bootloader,从而导致 86Duino Coding 开发环境的烧录功能失败,无法将新的 sketch 程式烧录到 86Duino 上。当发生这样的情况时,您可以使用下列方式强制进入 86Duino 的 HeHuan bootloader,来解决无法烧录 sketch 的问题:将 86Duino 的 SPICS 接地,再按下 RESET 按钮,即可强制进入 bootloader 并使其处于等待状态。以 86Duino Zero 为例,我们用一条导线将 SPICS 接至 GND,如下图所示:

special_mode

如此一来,HeHuan bootloader 便会在每次重新启动 86Duino(按下 RESET 按钮或重新上电)后,先进入等待烧录的模式,直到 8 秒后才执行 sketch 程式。注意,86Duino Zero 的 SPICS 针脚与 CPU 模组的散热外壳非常接近,接线时应做适当绝缘保护,避免短路到 CPU 散热外壳:

gap

另外也请注意,当 86Duino 正常运作时,建议不要随意启用强制进入 bootloader 的功能,因为启用这个功能将会大幅加长您 86Duino 的开机时间。

强制进入 Bootloader 的方法(86Duino EduCake)

从 86Duino Coding 105 版本以后才能使用这个功能(请参考下方 更新 bootloader 方法 来更新 EduCake 的 bootloader)。更新 EduCake bootloader 之后,准备一条导线,将 EduCake RS232 COM 埠上的 RTS 脚(PIN7)接到 RING 脚(PIN9),或者是将 DTR 脚(PIN4)接到 RING 脚(PIN9),然后重新开机,即可强制进入 bootloader 并使其处于等待状态,下面是 EduCake 的接线示意图:

educake_bootloader_link

实际接线图:

educake_bootloader_connect

如此一来,HeHuan bootloader 便会在每次重新启动 EduCake(按下 RESET 按钮或重新开机)后,先进入等待烧录的模式,直到 8 秒后才执行 sketch 程式。注意:当 EduCake 正常运作时,建议不要随意启用强制进入 bootloader 的功能,因为启用这个功能将会大幅加长您 EduCake 的开机时间。

更新 Bootloader 的方法

可以使用 SysImage 工具或直接从 86Duino Coding 开发环境来更新 86Duino 韧体系统里的 bootloader。利用 SysImage 更新 bootloader 的方法,可参考 SysImage 使用教学。下面描述从 86Duino Coding 开发环境更新 bootloader 的方法。

  • 1:将 86Duino 与 PC 连接并开启 86Duino Coding。
  • 2:选择功能列中的 Tools > Board(如下图),然后再选择您的 86Duino 板子。

86duino_select_board

  • 3:选择功能列中的 Tools > Burn Bootloader > 86Duino Bootloader(如下图),86Duino Coding 即会将 86Duino 板上韧体系统里的 bootloader 更换成 86Duino Coding 自带的 bootloader(注意,如果您使用较旧版 86Duino Coding,有可能因此将 86Duino 板上 bootloader 换成较旧的版本)。

burn_bld

  • 4:当 86Duino Coding 更新 bootloader 时,会在状态列上显示 Burning bootloader to I/O Board (this may take a minute)... 讯息,如下图所示:

burning_bld

  • 5:更新过程大约需要 15 ~ 20 秒,请耐心等待,在完成前请勿拔除 USB 连接线与电源,否则将使 bootloader 损毁。
  • 6:更新完毕后,状态列会显示 Done burning bootloader 讯息,并在讯息框内显示更新前后的 bootloader 版本资讯,如下图:

burn_bld_ok


新手上路主页面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.