ubuntu系統搭建ESP32 開發環境


前言

ESP32 可以說是物聯網市場一款比較精悍的芯片了。集成了BLE和802.11b Wi-Fi。低功耗、同時處理速度還挺強的。目前自己也是剛入手ESP32。可是在裝環境的時候,踩了不少坑。
當然ESP32 支持的開發方式挺多的。例如在 arduino開發,windows下的msys32加esp-idf的開發環境(因為msys32 是虛擬一個linux環境,所以這種方式編譯程序會比較慢),也可以用Eclipse IDE+CMake+esp-idf開發,還有可以使用linux 系統下的GNU Make + esp-idf 開發。
本人使用的是linux系統下的開發環境。這里就不扯了,下面開始填坑之路。
環境的安裝主要參考<樂鑫官網>
(注意:因為在安裝環境的過程中需要下載比較多的庫和工具,所以要保證網絡通暢)

一、安裝准備

  • 這里使用linux發行版本是ubuntu 16.04 LTS
  • 需要的基本環境還有python2git工具(沒有這些的工具的可以百度安裝)
  • mkdir -p ~/esp32/source ~/esp32/crossTool ~/esp32/demos 使用這個命令創建好這些目錄

1、更新ubuntu的源

  1. 為了后面能正常安裝工具,最好更新一下源。同時最好將源切換為國內的源。ubuntu 系統的是如下命令更新源,其他的Linux 發行版本可以百度更新:
  • sudo apt-get install update
  1. 因為安裝esp32環境的過程中需要安裝python的庫,所以這里也最好將 pip 工具更新到最新版本。目前最新的版本是19.3.1,使用下面命令更新,如果不是最新版本一般都能正常更新。
  • sudo python -m pip install --default-timeout=100 --upgrade pip

2、出錯處理:

pip工具更新到最新版本之后,使用pip install 安裝包有可能會出現下面的錯誤:

  # 錯誤的原因是新版本的庫找不到 main 模塊了
  Traceback (most recent call last): 
  File "/usr/bin/pip", line 9, in <module>
  from pip import main
ImportError: cannot import name 'main'

解決的方法是修改 /usr/bin/pip 源程序
sudo vi /usr/bin/pip 命令打開源程序
然后按照下面的方式修改,修改完之后應該就不會報錯了

################修改前程序####################

import sys
from pip import main  
if __name__ == '__main__':  
    sys.exit(main())

################修改前程序####################



################修改后程序####################

import sys
from pip import __main__  # 這行修改
if __name__ == '__main__':
    sys.exit(__main__._main()) #這行修改

################修改后程序####################

3、按裝依賴包

<樂鑫官網>中的提到ununtu系統(其他系統或發行版本可以去官網查看)需要安裝下面的依賴包。執行下面命令即可,或者去官網查看。

sudo apt-get install gcc git wget make flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools

二、交叉工具

1、下載交叉工具(xtensa-esp32-elf)

<樂鑫官網>這個頁面有交叉工具的下載連接,如果下面給的這個鏈接下載不了,可以去官網復制,然后替換掉下面的鏈接(注意自己的是32系統還是64位系統)。然后執行下面的命令來下載 。(盡量下載官方最新穩定的工具和庫)

  1. cd ~/esp32/crossTool/
  2. wget -c https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd64.tar.gz
  3. tar zxvf xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd64.tar.gz 具體的包名以下載的為准

2、設置交叉工具的環境變量

執行下面的步驟來設置環境變量
1、使用 sudo vi ~/.profile 命令打開這個文件
2、在.profile最后一行添加export PATH="$HOME/esp32/crossTool/xtensa-esp32-elf/bin:$PATH"
3、執行reboot 命令重啟系統,重啟后交叉工具環境變量就起效了
4、echo $PATH 看一下有沒有設置成功

三、源碼庫下載

1、下載源碼庫(esp-idf)

  • <樂鑫官網>有庫esp-idf的鏈接,如果下面的鏈接訪問不了,可以去官網查看,或者自行去githubesp-idf 庫然后下載。
  • 注意事項: 用 git 下載的時候一定要加 --recursive 選項,因為在下載完庫之后還要下載比較多的依賴種子。如果不下載依賴種子的話后面編譯的時候會報各種奇怪的錯誤例如: 找不到 micro-ecc目錄之類的。 如果沒加 --recursive 選項, 下載完之后需要執行 cd ~/esp32/source/git submodule update --init 命令。
  • 執行下面的命令下載 esp-idf 源碼庫
    1. cd ~/esp32/source/
  1. git clone --recursive https://github.com/espressif/esp-idf.git

2、設置環境變量

執行下面的步驟來設置esp-idf環變境量
1、使用 sudo vi ~/.profile 命令打開這個文件
2、在.profile最后一行添加export IDF_PATH="$HOME/esp32/source/esp-idf"
3、執行reboot 命令重啟系統,重啟后交叉工具環境變量就起效了
4、echo $IDF_PATH 看一下有沒有設置成功

四、安裝 Python 軟件包

在這個過程幾乎是絕望的,可能是網絡不好然后導致下載軟件包下載老是超時失敗。經歷過好幾十次的嘗試之后,最終把坑給填上了。下面來介紹一下填坑的辦法。

1、官方安裝方法

官方是執行下面的命令安裝的。個人在這個過程中只能能下在前面一兩個軟件包,然后就報超時失敗了。歷經幾十遍的嘗試,最后我放棄了。如果能全部下安裝完成就不用執行下面的解決辦法了

  • python -m pip install --user -r $IDF_PATH/requirements.txt

2、解決辦法一

在官方給的基礎上增加了超時限制。命令如下:

  • python -m pip install --default-timeout=100 --user -r $IDF_PATH/requirements.txt
  • 雖然增加了超時限制,但是還是會報超時異常。而且這種方式安裝有個缺點,就是報超時異常之后,下一次嘗試之后又要全部重新下載。當然如果順利的話就可以下載完了。又經歷了幾十遍之后,我真的要絕望了。然后果斷放棄這種方法。

3、解決辦法二

方法二這個方法就是查看 $IDF_PATH/requirements.txt 文件的作用是什么。文件的內容如下

# This is a list of python packages needed for ESP-IDF. This file is used with pip.
# Please see the Get Started section of the ESP-IDF Programming Guide for further information.
#
#查看 setuptools 軟件包的版本是否大於或者等於 21
setuptools>=21
# The setuptools package is required to install source distributions and on some systems is not installed by default.
# Please keep it as the first item of this list. Version 21 is required to handle PEP 508 environment markers.
#

click>=5.0  #比較 click 軟件包的版本是否大於或者等於 5.0
pyserial>=3.0  #比較 pyserial 軟件包的版本是否大於或者等於 3.0
future>=0.15.2 #比較 future 軟件包的版本是否大於或者等於 0.15.2
cryptography>=2.1.4 #比較 cryptography 軟件包的版本是否大於或者等於 2.1.4
pyparsing>=2.0.3,<2.4.0 #比較 pyparsing軟件包的版本是否大於或者等於 2.0.3 並且 小於 2.4.0
pyelftools>=0.22 #比較 pyelftools 軟件包的版本是否大於或者等於 0.22
# windows-curses are required in Windows command line but cannot be installed in MSYS2. A requirement like
# "windows-curses; sys_platform == 'win32'" would want to install the package on both of them. There is no environment
# marker for detecting MSYS2. So instead, a dummy custom package is used with "windows-curses" dependency for Windows
# command line.
file://${IDF_PATH}/tools/kconfig_new/esp-windows-curses; sys_platform == 'win32'

大概了解到這個文件的內容之后,就是用命令來一個一個的更新,雖然有些軟件包還是下載超時,但是至少能正常的安裝部分了。安裝的命令如下:

  1. sudo pip install --default-timeout=100 --upgrade setuptools
  2. sudo pip install --default-timeout=100 --upgrade click
  3. sudo pip install --default-timeout=100 --upgrade pyserial
  4. sudo pip install --default-timeout=100 --upgrade future
  5. sudo pip install --default-timeout=100 --upgrade cryptography
  6. sudo pip install --default-timeout=100 --upgrade pyparsing
  7. sudo pip install --default-timeout=100 --upgrade pyelftools

如果上面的步驟都可以正常安裝,然后就在執行一下下面的命令,看一下版本又沒都正確或者沒有少什么依賴庫,如果全部檢查通過,並且沒有下載的過程就說明環境搭建完成了。如果還有的軟件包下載超時,可以查看往下看 《解決辦法三》

  • python -m pip install --user -r $IDF_PATH/requirements.txt

3、解決辦法三

這個辦法是最后的一個辦法了,如果這個在解決不了,我也就沒轍了。這個辦法就是去 Python packages官網下載離線軟件包來安裝。直接在官網上搜索上面的方法還沒能完成的python軟件包,然后下載對應的版本(這個可以在上面的方法下載的過程中能看到),然后使用瀏覽器下載下來。
下面我以cryptography軟件包為例:

  • 我在命令行下載的過程下載的是cryptography-2.8-cp27-cp27mu-manylinux2010_x86_64 版本,所以選擇 cryptography 2.8 的版本, 如下圖:
  • 找到 cryptography-2.8-cp27-cp27mu-manylinux2010_x86_64.whl 軟件包然后下載

下載完之后 在本地中找到 cryptography-2.8-cp27-cp27mu-manylinux2010_x86_64.whl(一般在 ~/Downloads/ 目錄中),然后執行下面的命令安裝:

  • sudo pip install --default-timeout=100 ~/Downloads/cryptography-2.8-cp27-cp27mu-manylinux2010_x86_64.whl
  • python -m pip install --user -r $IDF_PATH/requirements.txt 檢查一下還有沒有需要安裝的

經歷上面的方法應該可以將python的軟件包按轉完成

五、編譯第一個demo

編譯和燒寫的過程可以參考樂鑫官網,這里就不過多介紹了,上面的的環境都安裝成功了,一般都能正確編譯。燒寫的過程可能需要改一下串口的權限。環境裝好了,剩下就靠自己去怎么耍了。如果個人以后做了什么比較好玩的demo也會更新上來。


免責聲明!

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



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