開發環境
軟體:Ubuntu 18.04虛擬機
硬體:esp32s2開發板
ubuntu安裝編譯依賴環境:
sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial
如果已經安裝過了,不會再次安裝,另外1.15之后版本mpy依賴cmake,這個后面編譯遇到問題再講,
1.下載原始碼
創建作業目錄:
mkdir work
cd work
下載mpy原始碼:
git clone https://gitee.com/mirrors/micropython.git
下載IDF原始碼:
git clone https://gitee.com/EspressifSystems/esp-idf.git
為了快速下載我這邊都是從碼云鏡像下的,對于IDF來說下載下來后還需要更新大量子模組,這個IDF官方也給出了解決辦法,參考以下鏈接說明進行更新IDF子模組:
https://gitee.com/EspressifSystems/esp-gitee-tools/blob/master/docs/README-submodule-update.md
進入IDF切下分支,分支切完最好更新下子模組
cd esp-idf
git checkout v4.2
按照上面的方法在更新下子模組,然后下載IDF依賴工具,以及設定環境變數,
cd esp-idf
./install.sh
source export.sh
2.編譯韌體
2.1先嘗試編譯esp32韌體
編譯默認的esp32韌體,測驗下編譯環境是否可用,
cd micropython
make -C mpy-cross
cd ports/esp32
make submodules
make
如果能編譯過那可以進行下一步嘗試編譯esp32s2韌體了,當然也可能會遇到報錯,比如cmake版本不符合要求,下面講下如何更新符合要求的cmake版本,
2.2更新cmake
移除原有cmake:
apt remove cmake
安裝新cmake:
cd work
# 下載cmake
wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz
# 解壓:
tar zxvf cmake-3.12.2-Linux-x86_64.tar.gz
# 創建軟鏈接
# 注: 檔案路徑是可以指定的, 一般選擇在/opt 或 /usr 路徑下, 這里選擇/opt
mv cmake-3.12.2-Linux-x86_64 /opt/cmake-3.12.2
ln -sf /opt/cmake-3.12.2/bin/* /usr/bin/
然后執行命令檢查一下:
>>>cmake --version
cmake version 3.12.2
安裝完成
2.3編譯esp32s2韌體
更改ports/esp32/Makefile檔案
找到 BOARD ?= GENERIC
改為 BOARD ?= GENERIC_S2
重新make
這里出現報錯找不到tusb_cdc_acm.h檔案
IDF分支需要切到最新
cd esp-idf
git checkout v4.3
然后在更新下idf子模組,方法見上文
繼續make編譯韌體,可能會報錯某些python依賴包沒有或版本不對,自己按照提示手動pip安裝下對應版本的包就可以,然后在make編譯
3.韌體燒錄
我們可以直接在ubuntu上燒錄編好的韌體,將板子USB串口接入ubuntu虛擬機
查看是否接入成功
ls /dev/ttyUSB0
3.1燒錄方法一
擦除指令:make erase
自動燒錄:make deploy
3.2燒錄方法二:使用esptool.py燒錄
其實方法一本質也是在呼叫esptool燒錄只是具體的地址型號選擇不用你指定,
我們編譯好的韌體路徑位于:ports/esp32/build-GENERIC_S2/firmware.bin
sudo chmod 777 /dev/ttyUSB0
esptool.py -b 460800 -p /dev/ttyUSB0 erase_flash
esptool.py -b 460800 -p /dev/ttyUSB0 write_flash 0x1000 build-GENERIC_S2/firmware.bin
每次板子插拔都需要重新給ttyUSB0設定權限才能使用,比較麻煩,可以采用以下辦法一勞永逸:
將用戶添加到 dialout 組,來獲許讀寫權限:
sudo usermod -a -G dialout $USER
添加完需要重啟終端視窗生效
注意:終端視窗重啟過后idf的環境變數需要重新設定才能生效,這樣才可以再次編譯韌體
cd esp-idf
source export.sh
這個編出來的韌體適用于普通的esp32s2,帶有外部psram的esp32s2也可以使用,但記憶體仍只有那點,而且這個的repl默認開在esp32s2自身的USB口上的,而不是串口,這點需要注意,
下一章節,我們來繼續講解如何更改原始碼開啟psarm獲取更大記憶體,以及repl改回到串口,USB MSC功能的開啟,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290959.html
標籤:其他
上一篇:這個智能家居專案開源了!
下一篇:C51 串口
