ESP32-S3 搭建 micropython 開發環境,固件編譯,燒錄


上手了一塊樂鑫科技官方推出的ESP32-S3-DevKitC-1開發板,發現 ESP32-S3 的綜合性能較比前兩代有着非常明顯的提升,wifi與藍牙功能,更充足的外設擴展能力,可以看出其在未來物聯網開發應用中將占有更大的地位與應用場景。

micropython實現了大部分python 3 特性和語法,易學易上手,驗證程序效果無需編譯直接下載進芯片運行。有python基礎的自然知道好用,沒python基礎的,上手難度也絕對遠低於其他編程語言,在開源社區有多年積累的豐富資源,代碼易讀性高,理解快,就如同python一樣擁有極強的生命力與應用價值。

micropython團隊在GitHub上的代碼維護是很積極的,芯片支持,功能更新,BUG修復,所以掌握自行編譯最新的micropython固件是很有必要的。

在此總結一番 micropython 開發環境的搭建,ESP32-S3 的固件編譯,燒錄的一整套流程,以便大家上手應用。

Linux

Linux系統目前對於 micropython 來說是必須的。

如果已經有在用的Linux系統就可直接進行后續步驟,如果正在使用Windows系統則推薦一條上手Linux最便利的路徑,安裝 VMware虛擬機+Ubuntu系統 。

其他上手Linux的方法多不勝數,各種虛擬機,各色Linux發行版本百花齊放,但若說目前最低門檻我認為就是這條,僅需在搜索引擎里搜索 VMware Ubuntu 即可獲取很成熟的配置經驗與資源。

關於軟件本體及系統鏡像文件建議直接從各自的官方網站上獲取,安全可靠。

esp-idf環境搭建

ESP32系列芯片的開發絕大部分都是經由樂鑫科技提供的SDK軟件開發工具包 esp-idf 來進行的, micropython 也需要應用此SDK。

可以直接參考樂鑫科技的 esp-idf中文快速入門指南 來搭建。

以下是簡要匯總。

首先需要在home目錄下創建一個文件夾。

打開一個 Terminal 終端 輸入以下命令創建文件夾:

mkdir -p ~/esp 

進入這個文件夾:

cd ~/esp 

輸入以下兩個命令之中的一個,從github上克隆esp-idf到這個文件夾里,建議用后面一個命令, --depth=1 命令可以使得克隆時不用獲取歷史提交(commit),對於這樣一個大型項目來說可以極大減少下載時間。將 https 替換為 git 則有可能解決各種下載失敗的問題,如何還是不行則需要再另尋他方,網絡疑難雜症容易使人頭疼腦熱:(

git clone --recursive https://github.com/espressif/esp-idf.git 
git clone --recursive git://github.com/espressif/esp-idf.git --depth=1 

進入esp-idf文件夾:

cd ~/esp/esp-idf 

輸入以下命令安裝 ESP-IDF 使用的各種工具,比如編譯器、調試器、Python 包等,可以一次單獨只為一個芯片型號配置,如 ./install.fish esp32s3 ,建議直接用以下命令全部安裝,一勞永逸:

./install.sh all

如果遭遇網絡問題,多次嘗試無果后,也可以試試替換下載源到 Espressif 下載服務器:

cd ~/esp/esp-idfexport IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"./install.sh all 

倉庫克隆和工具安裝都弄好后,在需要運行 ESP-IDF 的終端窗口運行以下命令即可,例如在micropython開始編譯之前就必須要使其運行起來:

. $HOME/esp/esp-idf/export.sh 

運行后輸入命令 idf.py --help 可以查看幫助, idf.py --version 查看當前版本, idf.py --list-targets 檢查當前支持的芯片型號。

在Ubuntu中為esp-idf創建快捷命令

用命令來打開文件並修改對於不熟悉linux的生手來說還需要多加學習和適應,我們可以利用好 Ubuntu 比較完善的圖形化操作界面,如同在windows里修改文件一般來修改linux里的文件,為esp-idf創建快捷命令。

在Ubuntu桌面打開home文件夾(一般它的名字是你的用戶名),在右上角的選項欄中開啟顯示隱藏文件。

 

 

雙擊這個 .bashrc 文件,即可用文本編輯器打開它。

在其最后一行,輸入以下命令並保存文件。

# get run esp-idf alias get_idf='. /home/wind/esp/esp-idf/export.sh' 

 

 

打開一個終端,輸入以下命令使之生效:

source ~/.bashrc 

以后在任何終端中輸入以下命令即可運行ESP-IDF:

get_idf 

這比前文提到的要容易記憶很多,也可以自行替換成任何與其他命令不沖突的命令文本來使用。

micropython環境搭建

可以直接參考GitHub:micropython/port/esp32中的描述來搭建,以下是中文簡述,不想看英文的可以參考一下。

克隆micropython倉庫到本地,我選擇在 esp 文件夾中再創建一個 mpy 文件夾來放置。

在一個終端中打開要放置micropython的文件夾:

cd ~/esp/mpy 

輸入以下命令克隆倉庫:

git clone git://github.com/micropython/micropython --depth=1 

進入micropython目錄中:

cd micropython/ 

先輸入以下命令編譯一下 mpy-coress ,這是為了構建MicroPython交叉編譯器,以便將一些內置腳本預編譯為字節碼,這只需要做一次:

make -C mpy-cross 

再打開ESP32的目錄:

cd ports/esp32 

輸入以下命令初始化子模塊,這只需要做一次:

make submodules 

固件編譯

確認ESP-IDF已經運行后,在 ports/esp32 目錄中可以立即輸入以下命令嘗試編譯一個默認設置的ESP32的micropython固件出來:

make 

一切順利的話會在此目錄中出現一個 build-GENERIC 文件夾,且內涵一個 firmware.bin 文件,這就是適用於ESP32芯片的micropython固件。

如果並不順利,需要先檢查ESP-IDF是否啟動,檢查ESP-IDF是否是最新版,檢查ESP-IDF所用相關工具是否都安裝完備,極大部分問題都是由於ESP-IDF或其相關工具出問題所導致的。

選擇linux系統也有考慮這部分原因,ESP-IDF在linux系統中配置起來最輕松穩定不容易產生各種疑難雜症。

確認可以正常編譯后,就可以開始做ESP32-S3芯片的固件編譯了。

在 ports/esp32 目錄可以找到一個 Makefile 文件,前文中 make 命令就是直接執行其內部的命令,打開它進行編輯。

 

 

第6行設置要編譯的型號,此處改成 GENERIC_S3 即可設置為ESP32S3了,此時保存文件后就可以去終端用 make 命令開始編譯。

 

 

關於此 Makefile 文件,我們可以稍微再了解得細致一些,以便后續自行修改與使用。

第6行 BOARD ?= 指向的是 ports/esp32/boards 目錄下的文件夾名稱,打開后可以看到已經有不少micropython官方支持的板型,在 BOARD ?= 后面填入對應板型的文件夾名即可在終端使用 make 命令編譯適用於對應板型的固件。

 

 

第12行 PORT ?= 用於設置將要燒錄固件的設備接口。

第13行 BAUD ?= 用於設置波特率,這將改變燒錄速度,也可能對燒錄穩定性有影響。

建議在第33行下面增加一行代碼,這將在每次使用 make 命令編譯時,在最開始將應用ESP-IDF的 idf.py menuconfig 命令打開工程配置窗口,方便調整芯片的各項功能,在以后熟悉修改工程配置文件后可以刪除此行,如果編譯時不需要修改配置也可以直接按一下鍵盤的 esc 鍵退出,后續將自動完成編譯。

idf.py $(IDFPY_FLAGS) menuconfig

 

 

 

 

第44行后面的代碼比較容易直觀理解,例如在終端中使用 make clean 命令等同於 idf.py fullclean 命令,完全刪除工程文件夾內的所有文件。

固件燒錄

對於ESP32-S3芯片,目前ESP-IDF尚且不支持通過芯片的USB接口來將固件燒錄進flash,暫不知道為什么擦除flash卻可以,推測后期ESP-IDF的更新會支持,屆時本文也將更新相應內容。

如果是使用樂鑫科技官方的FLASH下載工具 flash_download_tool 在Windows PC平台則可以直接通過ESP32-S3芯片USB接口將固件燒錄進flash。

無論用什么方法,在對flash進行操作前,要保證芯片進入 固件下載模式 ,對於ESP32-S3-DevKitC-1開發板,進入固件下載模式的按鍵順序是:

按住BOOT鍵,按一下RESET鍵並松開,松開BOOT鍵。

其他設備或是出現的問題則需要參考ESP-IDF編程指南中關於燒錄過程中可能遇到的問題的描述或者是芯片手冊上的描述。

以下將簡述兩種燒錄方法。

Ubuntu終端make命令燒錄

目前在Ubuntu系統中使用終端命令的方法暫且只支持通過ESP32-S3芯片的UART串口燒錄固件到flash。通常需要一個 ch340 或 cp2102 芯片將UART串口轉換為USB與系統連接,ESP32-S3-DevKitC-1開發板自帶一個,通過其UART轉USB的接口與PC的USB接口連接即可。

燒錄前要確認一下系統是否識別到設備,通常需要先在VMware虛擬機中做好USB連接的相關設置才行。

在不接入待燒錄的設備的情況下,先在終端中輸入以下命令查看當前所有設備:

ls /dev/tty* 

接入設備,再輸入此命令,正常的話可以看到多出一個USB設備,如果僅有接入這一個設備,通常就是 ttyUSB0 ,在 Makefile 文件中無需修改接口名,若是別的就需要做出相應修改並保存。

確認當前終端里ESP-IDF運行中,且固件編譯已經完成,ESP32-S3芯片處於固件下載模式。

先用擦除命令擦除當前芯片的flash,再用燒錄命令將固件燒錄進flash中。

make erase 
make deploy 

如果遇到權限問題,使用如下命令獲取此USB接口的權限:

sudo chmod 777 /dev/ttyUSB0 

Windows FLASH下載工具燒錄

將 firmware.bin 文件從其對應的工程文件夾中拷貝出來,放到Windows系統下的文件夾里。VMware虛擬機拷貝文件很容易,在Ubuntu里選擇文件並復制,再到Windows的文件夾里粘貼即可將其拷貝出來,可以修改一下文件名以便記錄是用於什么芯片,在什么時候編譯的。

 

 

打開樂鑫科技的FLASH下載工具,選擇芯片,選擇燒錄接口的模式,這里就可以選擇USB,使用芯片自帶的usb接口燒錄,如果是ESP32-S3-DevKitC-1開發板就直接用USB口,而不用UART轉接出的USB。
QQ%E6%88%AA%E5%9B%BE20211117115008

在燒錄前先確認ESP32-S3芯片是否已經設置為固件下載模式,ESP32-S3芯片是否已被Windows識別,可以到設備管理器中查看對應串口名,如果沒有則需要先排除一下是否自動連接到虛擬機的系統里了,如果有則要斷開其與虛擬機的連接。

在芯片處於固件下載模式的條件下,修改COM接口為對應的接口,添加固件,對於ESP32-S3芯片要設置flash起始地址為 0x0 ,具體見下圖。

 

 

可以修改BUAD波特率加快下載速度,但對穩定性可能有影響。

設置好后,先點擊 ERASE 按鈕擦除flash,擦除完成后再點擊 START 燒錄固件進flash中。

簡單驗證固件是否有效

推薦使用 PuTTY 串口調試軟件,無論在Linux或是Windows中都可以下載使用,操作便捷。

在Linux系統如Ubuntu的終端里使用如下命令安裝PuTTY:

sudo apt-get install putty 

在終端輸入 putty 命令即可打開,也可直接在應用程序列表找到它。

在Windows系統中,可以在PuTTY官網下載到64位的 putty.exe 文件,運行即可,無需安裝。

PuTTY設置方法如圖:

 

 

需要注意前面編譯的micropython固件默認將調試信息輸出在芯片的USB接口而不是UART串行接口,所以此時需要將直連芯片的USB接口與PC連接。

在Linux中,此時的設備接口名稱應為 ttyACM0 ,而在Windows中則是一個COM端口,具體名稱需查看設備管理器再對於填入。

Speed 一定要設置為 115200 ,這是芯片設計決定的。

點擊 Open 即可打開一個窗口,一般此時並無信息,建議用組合按鍵 ctrl + D 軟件重啟micropython,可看到如下信息。

 

 

這就是micropython的 REPL交互式解釋器 。

可以直接在此處鍵入micropython代碼,例如:

print("Hello Wind~")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM