編譯ESP32 MicroPython韌體

編譯ESP32 MicroPython韌體需要安裝下列工具軟體:

安裝必要的工具軟體

ESP-IDF是上海樂鑫科技官方提供的ESP32開發工具軟體,從專案原始碼網站的所有分支(branch)看來,目前最新版是4.3。ESP32 MicroPython專案說明頁面指出,目前的MicroPython韌體版本支援採用ESP-IDF v4.0.2, v4.1.1或v4.2編譯。

底下使用Windows 10 Linux子系統示範編譯ESP32 MicroPython。安裝ESP-IDF的過程會用到Python,首先確認Linux系統安裝的Python版本。筆者的Linux系統是Ubuntu 20.04 LTS,系統預先安裝了Python 3.8.5版:

python -V

如上圖所示,在這個Linux系統啟動Python直譯器的命令是“python3”。然而,ESP-IDF的安裝腳本將執行“python”命令而非“python3”,所以我們需要替python3命令設定一個名叫“python”的軟連結(相當於Windows的「捷徑」),避免發生「找不到python命令」之類的錯誤。

首先透過whereis命令確認python3的所在路徑,在筆者的電腦系統上,此路徑是“/usr/bin/python3”:

whereis python3

終端機操作畫面:

whereis python3

接著執行ln命令(代表“link”,連結)和-s參數,在“/usr/bin/”路徑建立一個名叫“python”的軟連結(symbolic link)

sudo ln -s /usr/bin/python3 /usr/bin/python

sudo ln -s /usr/bin/python3 /usr/bin/python

如此一來,無論執行python或python3命令,都能啟動Python 3直譯器。

筆者使用的Ubuntu 20.04 LTS系統,預設並沒有安裝pip套件管理工具和virtualenv模組,需要執行底下的命令進行安裝:

sudo apt install python3-pip
pip3 install virtualenv

終端機操作畫面:

sudo apt install python3-pip
pip3 install virtualenv

最後執行底下的命令安裝CMake工具,前置作業就準備好了:

sudo apt install cmake

編譯與安裝ESP-IDF工具

首先把ESP-IDF工具的原始碼複製到使用者家目錄,筆者複製的是v4.2分支:

cd ~
git clone -b v4.2 --recursive https://github.com/espressif/esp-idf.git

複製完成後,執行底下的命令編譯與安裝它:

cd esp-idf
./install.sh
source export.sh

./install.sh安裝腳本只需執行一次,但日後再次編譯ESP32韌體時,都要在esp-idf目錄底下執行一次source export.sh,因為這個腳本包含系統變數的設定敘述,例如,把ESP-IDF工具的所在路徑設定給IDF_PATH環境變數,將來編譯MicroPython韌體時,會透過這個變數執行ESP-IDF。

下載與編譯ESP32 MicroPython原始碼

執行底下命令,在使用者家目錄中新增一個esp32目錄,然後在其中複製、儲存MicroPython主分支(master)的原始碼:

cd ~
mkdir esp32
cd esp32
git clone -b master https://github.com/micropython/micropython.git

切換到micropython路徑,編譯交叉編譯器(cross compiler)

cd micropython
make -C mpy-cross

最後,執行底下的命令複製並編譯“esp32”版本的子模組(submodules),然後建立ESP32 MicroPython韌體:

cd ports/esp32
make submodules
make

編譯完成的firmware.bin韌體檔將存放在~/esp32/micropython/ports/esp32/build-GENERIC/路徑裡面。執行底下的命令將它複製到Windows的D磁碟根目錄:

cp ~/esp32/micropython/ports/esp32/build-GENERIC/firmware.bin  /mnt/d/

使用Thonny Python IDE燒錄ESP32 MicroPython韌體

燒錄ESP32韌體可以使用樂鑫科技的Flash下載工具(Flash Download Tool,參閱:使用ESP32控制板(二):燒錄MicroPython韌體),本文使用Thonny Python IDE示範。

選擇Thonny主功能表的「工具→選項」,切換到「直譯器」標籤頁,從中選擇 “ESP32 (MicroPython)” 直譯器以及連接埠,然後點擊右下角的「安裝或更新韌體」:

Thonny選項

在底下的面板中,選擇開發板的序列埠(Port)、韌體檔(firmware.bin)的路徑和檔名,“Flash mode(快閃記憶體模式)”選擇Dual I/O,並且勾選“Erase flash before installing”(安裝前先清除快閃記憶體)選項:

燒錄ESP32韌體

韌體燒錄完畢後,關閉上面的面板,EP32開發板將會重置(reset),接著在互動環境(Shell)顯示MicroPython韌體的基本訊息。

在互動環境(Shell)顯示MicroPython韌體的基本訊息

Posts created 470

2 thoughts on “編譯ESP32 MicroPython韌體

  1. 老師我照著實做後,自製的韌體會出現無法啟動wifi,以及無法使用webrepl。

    韌體版本:1.16
    esp-idf :4.2

    使用esp-idf v4.2 & micropython 1.16 編譯自訂韌體,發生以下錯誤(使用官方韌體沒有此錯誤情形):
    MicroPython v1.16-135-gaecb697c7 on 2021-08-11; ESP32 module with ESP32

    Type “help()” for more information.
    WebREPL is not configured, run ‘import webrepl_setup’ —-flash中有webrepl_cfg.py檔案
    正在連線中
    Traceback (most recent call last):
    File “boot.py”, line 41, in
    File “boot.py”, line 31, in do_connect
    OSError: Wifi Internal Error
    正在連線中
    Traceback (most recent call last):
    File “main.py”, line 2, in
    File “tbs/tbs1fsh.py”, line 64, in
    File “tbs/tbs1fsh.py”, line 42, in do_connect
    OSError: Wifi Internal Error —–無法啟動Wi-Fi
    MicroPython v1.16-135-gaecb697c7 on 2021-08-11; ESP32 module with ESP32
    Type “help()” for more information.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top