ESP32學習筆記(一) 環境搭建與下載
作者:Nevel 博客:nevel.cnblogs.com 轉載請保留出處
前幾天剛入手了ESP32模塊,趁着放假有時間,我們先把ESP32的編譯環境搭建好
一.官方固件包的安裝與配置.
首先,我們把ESP32模塊連接上電腦,如果沒有ESP32底板的話,則需連接一個usb轉ttl模塊,接下來我們下載好兩個壓縮包:
Msys32為ESP32的下載工具鏈和仿真環境,可以從如下網址下載
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20160816.zip
esp32_idf為官方的固件包 可從git上同步
我們將msys32解壓后放在c盤根目錄,運行msys32 目錄下的 msys2_shell.cmd
我們進入了一個類似命令行的頁面,其實官方提供的這個下載和仿真工具其實是MSYS 因為之后的開發需要在Shell中執行一些linux下的命令 所以使用這樣一個工具模擬一個unix的模擬環境。
注: MSYS 是用於輔助 Windows 版 MinGW 進行命令行開發的配套軟件包
接下來我們正式進入命令行操作:
1.創建文件夾,同步固件包(已經下載好固件包的可直接解壓到c盤根目錄,並跳過此步)
輸入 mkdir esp32_idf,在c盤根目錄創建 esp32_idf 文件夾,
輸入 cd /c/esp32_idf/ ,將目錄換到該文件夾
2.克隆 idf 固件庫
之后輸入 git clone --recursive https://github.com/espressif/esp-idf.git
這個需要一定時間,中途可能會報錯,但是並沒有什么影響。
添加編譯所需的環境變量
打開 C:\msys32\etc\profile.d\esp32_toolchain.sh(使用記事本打開),添加export IDF_PATH="C:/esp32_idf/esp-idf"一行,保存並退出。
3.配置MENU CONFIG
該步驟中我們將進行一些編譯有關的參數配置,ESP32官方提供了一個圖形化配置界面,我們將使用他
我們先輸入cd /c/esp32_idf/esp-idf/examples/01_hello_world
以為01_hello_world為根目錄,對官方提供的hello world這個項目進行編譯配置。
輸入 make menuconfig ,等待界面出現
選擇" Serial flasher config"並按下回車鍵
接下來選擇 Default Serial Port 的時候繼續按回車
輸入COM15 (我的電腦為串口15,連接到其他串口修改為自己的串口號。可先使用串口助手確定ESP32所連接到的串口號)。
其他的不用修改
輸入后用向右方向鍵選擇下方的exit,回車之后再選擇exit 回車后即可退出。最后還按一次回車保存設置參數。
4.進行編譯與下載
輸入 make flash 編譯程序,程序編譯完成后自動進入下載環節。當出現如下窗口時說明已經下載成功。然后按下復位鍵即可運行程序。
此時我們輸入cat COM15 打開串口觀察到:
出現我們想要看到的hello world
到此基本的 Linux 仿真環境和交叉編譯工具鏈的配置已經完成
但是我們需要的不僅僅是一個編譯下載工具,我們還需要一個ide才能開發
接下來的我們安裝eclipse。
二. Eclipse的安裝與配置
安裝環境:win7 x64
我們先安裝好jre(java的運行包)(jre_8u101_windows_i586_8.0.1010.13.exe)
再從eclipse官網上下載好eclipse C/C++ 編譯器的安裝包(eclipse-cpp-neon-R-win32.zip),並將安裝包解壓到c盤根目錄,打開eclipse。
1. 關閉歡迎界面,點擊左側project Explorer 右鍵選擇new —>makefile project ... 那一項
選擇 C/C++下面的 Existing code ad Makefile Project,單擊 Next。
2.選擇 Browse,然后選擇 c 盤根目錄自己建立的 esp32_idf 文件夾,不要選擇 esp-idf目錄,esp-idf 目錄只有官方的 sdk 沒有應用程序。
3.選擇編譯工具鏈:Cross GCC,然后選擇 Finish
4.接下來需要設置工程的一些參數了。
選擇 C/C++ Build 頁面下的 Environment 選項卡,
A)單擊 Add 按鈕,在 name 欄輸入 V,value 欄輸入 1;
B)再次單擊 Add 按鈕,在 name 欄輸入 IDF_PATH,value 輸入 esp-idf 固件庫的目錄。C:/esp32_idf/esp-idf,分清楚,這里選擇的是 idf 固件庫的目錄;
需要注意的是,此處是/不是\,否則編譯會找不到正確的路徑。
C)修改 PATH:刪除原來的內容,然后輸入C:\msys32\usr\bin;C:\msys32\mingw32\bin;C:\msys32\opt\xtensa-esp32-elf\bin
(前提是你按照教程解壓的官方工具鏈文件)。
輸入完成后單擊 OK。
5.選擇 C/C++ Build 選項,然后將 "Use default build command"選項前面的標記取消,Build command
選項就處於可編輯的狀態了,輸入bash ${IDF_PATH}/tools/windows/eclipse_make.sh 然后點擊OK。
6.進入 "C/C++ General" -> "Preprocessor Include Paths" 選項,然后選擇"Providers" 頁面。
選擇下拉列表中的 "CDT Cross GCC Built-in Compiler Settings" ,
在下方會出現一個"Command to get compiler specs" 的可輸入窗口,使用 xtensa-esp32-elf-gcc 替換
${COMMAND},或者直接輸入 xtensa-esp32-elf-gcc ${FLAGS} -E -P -v -dD "${INPUTS}"。
7.進入 "C/C++ General" -> "Preprocessor Include Paths" 選項,然后選擇"Providers" 頁面。
選擇下拉列表中的 " CDT GCC Build Output Parser",在 Compiler command pattern 輸入框中的開始位置插入 xtensa-esp32-elf- 。
最后改輸入框內容為 xtensa-esp32-elf-(g?cc)|([gc]\+\+)|(clang)
單擊 OK 結束配置。
8. 右鍵 example 目錄下的工程目錄(01_hello_world),選擇 Make Targets->creat,在彈出的對話框中輸入 flash,如圖所示。輸入完成單擊 OK。
9.工作做到現在已經完成了 90%。先要暫停一下,不要着急着編譯,因為你編譯也會卡主 的。工程編譯必須先進行 config 才行,否則無法編譯通過。
這時候要打開 msys32_shell.cmd, 進入 01_hello_world 目錄,輸入 make menuconfig,進行串口設置(詳細步驟請參考上一章 節內容)
10.確保你的模塊已經連接到電腦上,等待上位機鏈接,下載程序。
11.就差最后一步了。。。鼠標單擊 esp32_idf 文件夾,使其處於選中的狀態。一定要保證
esp-idf 是被選中的!點擊菜單欄的 Project->Make Targets->Build。在彈出的對話框中選擇
Target 欄下的 flash,然后單擊下方的 Build,此時就是等待(開始可能會卡一分鍾左右)編譯器編譯完成,並自動下載。
編譯完成后會在 esp-idf-template->build 目錄下生成很多編譯輸出的文件。我們需要用的是
bootloader->bootloader.bin,app-template.bin 和 partitions_singleapp.bin 三個文件。
將這三個文件通過官方提供的下載工具下載至芯片即可
15、等待下載完成后按下復位鍵即可運行。打開串口調試助手。
選擇正確的串口,波特率115200,即可在串口調試助手上看到輸出信息。
16、大功告成!
第三篇 Arduino 環境配置篇
0、電腦環境:Win10x64 and Win10x86
1、基於你已經完成第一篇的工作。
2、去百度網盤下載我打包好的工具https://pan.baidu.com/s/1kVdiCYV#list/path=%2F&parentPath=%2FESP32
3、解壓 03.固件庫&Windows 環境目錄下的arduino-nightly.zip 到 c 盤根目錄(或者其他目錄
都可以)。
4、設置環境變量,如下圖
5、已經完成了, 打開 Arduino.exe。配置下基本的一些設置工具-> 開發板->ESP32 Dev
Module(其他的也行只要是 ESP32 的就可以);FlashFrequency 選擇 40Mhz;UploadSpeed 選擇
921600;端口選擇正確的串口;和板子相關的已經選擇完了。
6、打開個示例代碼試下吧文件->示例->WiF(i 注意一定要是 Examples for ESP32 分欄下面的)
->WiFiClient(或者其他的例程也行),打開之后編譯。成功通過。點擊上傳即可。
注:第二三篇部分源於網絡,有刪改