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.