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
需要的基本环境还有python2和git⼯具(没有这些的⼯具的可以百度安装)
mkdir -p ~/esp32/source ~/esp32/crossTool ~/esp32/demos使⽤这个命令创建好这些⽬录
1、更新ubuntu的源
1. 为了后⾯能正常安装⼯具,最好更新⼀下源。同时最好将源切换为国内的源。ubuntu 系统的是如下命令更新源,其他的Linux 发⾏版本可以百度更新:
sudo apt-get install update
2. 因为安装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
ubuntu怎么安装pythonif __name__ == '__main__':
>>>#修改前程序>>>>
>>>#修改后程序>>>>
import sys
from pip import __main__  # 这⾏修改
if __name__ == '__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 dl.espressif/dl/xtensa-esp32-elf-gcc8_2_
3. tar zxvf xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd6
具体的包名以下载的为准
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的链接,如果下⾯的链接访问不了,可以去官⽹查看,或者⾃⾏去github搜esp-idf库然后下载。
注意事项: ⽤git下载的时候⼀定要加--recursive选项,因为在下载完库之后还要下载⽐较多的依赖种⼦。如果不下载依赖种⼦的话后⾯编译的时候会报各种奇怪的错误例如: 不到micro-ecc⽬录之类的。
如果没加--recursive选项, 下载完之后需要执⾏cd ~/esp32/source/和git submodule update --init 命令。
执⾏下⾯的命令下载esp-idf源码库
1. cd ~/esp32/source/
2. git clone --recursive github/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_
2、解决办法⼀
在官⽅给的基础上增加了超时限制。命令如下:
python -m pip install --default-timeout=100 --user -r $IDF_
虽然增加了超时限制,但是还是会报超时异常。⽽且这种⽅式安装有个缺点,就是报超时异常之后,下⼀次尝试之后⼜要全部重新下载。当然如果顺利的话就可以下载完了。⼜经历了⼏⼗遍之后,我真的要绝望了。然后果断放弃这种⽅法。
3、解决办法⼆
⽅法⼆这个⽅法就是查看$IDF_⽂件的作⽤是什么。⽂件的内容如下
# 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_
3、解决办法三
这个办法是最后的⼀个办法了,如果这个在解决不了,我也就没辙了。这个办法就是去下载离线软件包来安装。直接在官⽹上搜索上⾯的⽅法还没能完成的python软件包,然后下载对应的版本(这个可以在上⾯的⽅法下载的过程中能看到),然后使⽤浏览器下载下来。
下⾯我以cryptography软件包为例:
在中搜索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_检查⼀下还有没有需要安装的
经历上⾯的⽅法应该可以将python的软件包按转完成
五、编译第⼀个demo
编译和烧写的过程可以参考,这⾥就不过多介绍了,上⾯的的环境都安装成功了,⼀般都能正确编译。烧写的过程可能需要改⼀下串⼝的权限。环境装好了,剩下就靠⾃⼰去怎么耍了。如果个⼈以后做了什么⽐较好玩的demo也会更新上来。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论