Banana PI BPI-Leaf S2,ESP32-S2 搭建 micropython 開發環境,韌體編譯,燒錄
簡述
micropython實現了大部分python 3 特性和語法,易學易上手,驗證程式效果無需編譯直接下載進晶片執行。有python基礎的自然知道好用,沒python基礎的,上手難度也絕對遠低於其他程式語言,在開源社群有多年積累的豐富資源,程式碼易讀性高,理解快,就如同python一樣擁有極強的生命力與應用價值。
micropython團隊在GitHub上的程式碼維護是很積極的,晶片支援,功能更新,BUG修復,所以掌握自行編譯最新的micropython韌體是很有必要的。
在此總結一番 micropython 開發環境的搭建,ESP32-S2 的韌體編譯,燒錄的一整套流程,以便大家上手應用。
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
git clone --recursive git://github.com/espressif/esp-idf.git --depth=1
進入esp-idf資料夾:
cd ~/esp/esp-idf
輸入以下命令安裝 ESP-IDF 使用的各種工具,比如編譯器、偵錯程式、Python 包等,可以一次單獨只為一個晶片型號配置,如
./install.fish esp32s2
,建議直接用以下命令全部安裝,一勞永逸:
./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-S2晶片的韌體編譯了。
在
ports/esp32
目錄可以找到一個
Makefile
檔案,前文中
make
命令就是直接執行其內部的命令,開啟它進行編輯。
第6行設定要編譯的型號,此處改成
ESP32_S2_WROVER
即可設定為ESP32S2了,此時儲存檔案後就可以去終端用
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-S2晶片,既支援通過晶片的USB介面來將韌體燒錄進flash,也支援通過uart串列埠來燒錄。
如果是使用樂鑫科技官方的FLASH下載工具 flash_download_tool 在Windows PC平臺則可以直接通過ESP32-S2晶片USB介面將韌體燒錄進flash。
無論用什麼方法,在對flash進行操作前,要保證晶片進入 韌體下載模式 ,對於ESP32-S2開發板,進入韌體下載模式的按鍵順序是:
按住BOOT鍵,按一下RESET鍵並鬆開,鬆開BOOT鍵。
其他裝置或是出現的問題則需要參考ESP-IDF程式設計指南中關於 燒錄過程中可能遇到的問題的描述或者是晶片手冊上的描述。
以下將簡述兩種燒錄方法。
Ubuntu終端make命令燒錄
燒錄前要確認一下系統是否識別到裝置,通常需要先在VMware虛擬機器中做好USB連線的相關設定才行。
在不接入待燒錄的裝置的情況下,先在終端中輸入以下命令檢視當前所有裝置:
ls /dev/tty*
接入裝置,再輸入此命令,正常的話可以看到多出一個USB裝置,如果僅有接入這一個裝置,通常就是
ttyACM0
,在
Makefile
檔案需要做出相應修改並儲存。
確認當前終端裡ESP-IDF執行中,且韌體編譯已經完成,ESP32-S2晶片處於韌體下載模式。
先用擦除命令擦除當前晶片的flash,再用燒錄命令將韌體燒錄進flash中。
make erase
make deploy
如果遇到許可權問題,使用如下命令獲取此USB介面的許可權:
sudo chmod 777 /dev/ttyACM0
Windows FLASH下載工具燒錄
將
firmware.bin
檔案從其對應的工程資料夾中拷貝出來,放到Windows系統下的資料夾裡。VMware虛擬機器拷貝檔案很容易,在Ubuntu裡選擇檔案並複製,再到Windows的資料夾裡貼上即可將其拷貝出來,可以修改一下檔名以便記錄是用於什麼晶片,在什麼時候編譯的。
開啟樂鑫科技的FLASH下載工具,選擇晶片,選擇燒錄介面的模式,這裡選擇USB。
在燒錄前先確認ESP32-S2晶片是否已經設定為韌體下載模式,ESP32-S2晶片是否已被Windows識別,可以到裝置管理器中檢視對應串列埠名,如果沒有則需要先排除一下是否自動連線到虛擬機器的系統裡了,如果有則要斷開其與虛擬機器的連線。
在晶片處於韌體下載模式的條件下,修改COM介面為對應的介面,新增韌體,對於ESP32-S2晶片要設定flash起始地址為
0x1000
,具體見下圖。
可以修改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~")
如果沒有得到類似上圖的資訊,亂碼或是無響應,則需要回頭去檢查編譯燒錄等各項設定流程是否有差錯了。
對本文有任何疑問的地方,歡迎留言提問,不一定及時回覆,但總會回覆的~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69966964/viewspace-2843922/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Banana Pi ESP32-S3 搭建 micropython 開發環境,韌體編譯,燒錄NaNS3Python開發環境編譯
- ESP32-S3 搭建 micropython 開發環境,韌體編譯,燒錄S3Python開發環境編譯
- arduino韌體燒錄UI
- qgroundcontrol開發環境搭建原始碼編譯開發環境原始碼編譯
- [編譯] 9、在Linux下搭建 nordic 最新基於 zephyr 的開發燒寫環境編譯Linux
- ISP方式燒錄韌體
- Android編譯環境搭建Android編譯
- openform環境搭建-編譯ORM編譯
- RK3288 Linux SDK 編譯開發環境搭建Linux編譯開發環境
- ESP32-MicroPython 開發環境Python開發環境
- 編譯環境 Golang開發環境 vscode+git編譯Golang開發環境VSCodeGit
- 搭建rust開發環境-記錄Rust開發環境
- 全志A40i開發板編譯環境的搭建編譯
- Linux 開發環境 -- C/C++開發環境編譯安裝Linux開發環境C++編譯
- Ubuntu18.04 搭建go編譯環境UbuntuGo編譯
- Pinpoint 編譯環境搭建(Pinpoint系列一)編譯
- CentOS7.3 編譯搭建 lamp 環境CentOS編譯LAMP
- 【記錄】WSL 下搭建前端開發環境前端開發環境
- i.MX6ULL開發板原始碼編譯燒錄原始碼編譯
- Flutter開發入門之開發環境搭建(VSCode搭建Flutter開發環境)Flutter開發環境VSCode
- CubeMX + VS Code配置環境代替Keil編寫燒錄除錯程式除錯
- Hi3861編譯燒錄更快捷編譯
- 1 – 搭建開發環境開發環境
- Androdi開發環境搭建開發環境
- Cordova 開發環境搭建開發環境
- GeoServer開發環境搭建Server開發環境
- Qt開發環境搭建QT開發環境
- 前端開發環境搭建前端開發環境
- QEMU 開發環境搭建開發環境
- 搭建go開發環境Go開發環境
- JAVA開發環境搭建Java開發環境
- 搭建VUE開發環境Vue開發環境
- lua 開發環境搭建開發環境
- Theia 開發環境搭建開發環境
- rollup 開發環境搭建開發環境
- Linux搭建開發環境Linux開發環境
- Docker環境編譯時的錯誤記錄Docker編譯
- [編譯] 7、在Linux下搭建安卓APP的開發燒寫環境(makefile版-gradle版)—— 在Linux上用命令列+VIM開發安卓APP編譯Linux安卓APPGradle命令列