基于VMware+Ubuntu 14.04 搭建ESP32 开发环境

基于VMware+Ubuntu 14.04 搭建ESP32 开发环境

开发环境:VMware + 14.04

1.更新 cmake

准备工作:官网下载cmake-3.6.3.tar.gz(https://cmake.org/download/)

1.解压文件tar -xvf cmake-3.6.3.tar.gz,并修改文件权限chmod -R 777 cmake-3.6.3

2.检测gcc和g++是否安装,如果没有则需安装gcc-g++:sudo apt-get install build-essential(或者直接执行这两条命令sudo apt-get install gcc,sudo apt-get install g++)

3.进入cmake-3.6.3 进入命令 cd cmake-3.6.3

4.执行sudo ./bootstrap
5.执行sudo make
6.执行 sudo make install
7.执行 cmake –version,返回cmake版本信息,则说明安装成功

2.准备nijia

#1.安装依赖re2c
root@ubuntu:~# apt-get install re2c
root@ubuntu:~# re2c --version
re2c 1.0.1

#2.下载ninja
git clone https://github.com/ninja-build/ninja.git

#3.编译ninja

cd ninja
./configure.py --bootstrap 
#会出现报错:
subprocess.CalledProcessError: Command 're2c -b -i --no-generation-date --no-version -o ./src/depfile_parser.cc ./src/depfile_parser.in.cc' returned non-zero exit status 2.
#解决:
vi ./configure.py 删除--no-version
再执行./configure.py --bootstrap

4.安装ninja
sudo cp ./ninja  /usr/bin 
ninja --version

3.更新python至3.8.5

安装的Ubuntu 16操作系统里面自带的Python版本一个是2.7,一个是3.5。
如果想安装一个3.8.x的版本或其他版本。
注意:此处的安装不是由3.5.2升级到3.8.x,而是单独安装另一个版本3.8.x 。

安装步骤如下:
     第一步:安装依赖环境:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

      第二步:下载Python3.8.5的源码
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz

     第三步:解压      
 tar -zxvf Python-3.8.5.tgz;

     第四步:进入解压后的目录
    (1)cd Python-3.8.5;
    (2)./configure; #编译前的配置
    (3)make; #编译
    (4)sudo make install;#编译后的安装

     第五步:安装成功后,找到 python3.8 解释器位置,一般是 /usr/local/bin/python3.8
       #删除原来的软连接
           #rm -rf /usr/bin/python3
           sudo rm  /usr/bin/python
           #rm -rf /usr/bin/pip3
      #添加python3的软链接
            sudo ln -s /usr/local/bin/python3.8 /usr/bin/python
      #添加 pip3 的软链接
            #ln -s /usr/local/bin/pip3.8 /usr/bin/pip3

查看一下是否安装成功:
$ python3 -V
$ pip3 -V
mkdir ~/esp
//把准备好的ESP-SDk和交叉编译链
//解压准备好的ESP-SDK
unzip esp-idf.zip
//解压准备好的交叉编译链
tar -zxvf xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-linux-amd64.tar.gz

设置环境变量:vi ~/.bashrc 在最后添加以下内容:

export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH"
export IDF_PATH=~/esp/esp-idf
export PATH="$IDF_PATH/tools:$PATH"
alias get_idf='. $HOME/esp/esp-idf/export.sh'

开始布置ESP 开发环境:

cd ~/esp/esp-idf
./install.sh

遇到问题 1:

lindenis@ubuntu:~/esp/esp-idf$ ./install.sh
Installing ESP-IDF tools
: No such file or directory
lindenis@ubuntu:~/esp/esp-idf$

解决方法:

dos2unix ./tools/*

遇到问题 2:

lindenis@ubuntu:~/esp/esp-idf$ ./install.sh
Installing ESP-IDF tools
Installing ESP-IDF tools /home/lindenis/esp/esp-idf
Installing tools: xtensa-esp32-elf, esp32ulp-elf, openocd-esp32
Installing xtensa-esp32-elf@esp32-2019r1-8.2.0
Downloading xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-linux-amd64.tar.gz to /home/lindenis/.espressif/dist/xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-linux-amd64.tar.gz.tmp
Traceback (most recent call last):
  File "/home/lindenis/esp/esp-idf/tools/idf_tools.py", line 1317, in <module>
    main(sys.argv[1:])
  File "/home/lindenis/esp/esp-idf/tools/idf_tools.py", line 1313, in main
    action_func(args)
  File "/home/lindenis/esp/esp-idf/tools/idf_tools.py", line 1107, in action_install
    tool_obj.download(tool_version)
  File "/home/lindenis/esp/esp-idf/tools/idf_tools.py", line 541, in download
    urlretrieve(url, local_temp_path, report_progress if not global_non_interactive else None)
  File "/usr/local/lib/python3.8/urllib/request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "/usr/local/lib/python3.8/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/local/lib/python3.8/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/usr/local/lib/python3.8/urllib/request.py", line 547, in _open
    return self._call_chain(self.handle_open, 'unknown',
  File "/usr/local/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python3.8/urllib/request.py", line 1421, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: https>
lindenis@ubuntu:~/esp/esp-idf$

解决方法:

打开 Modules/Setup
//有些python版本是Setup.list
取消注释 以下几行

209 SSL=/usr/local/ssl
210 _ssl _ssl.c \
211 -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
212 -L$(SSL)/lib -lssl -lcrypto

重新编译安装:

(1)cd Python-3.8.5;
(2)./configure; #编译前的配置
(3)make; #编译
(4)sudo make install;#编译后的安装

继续出现问题 2.1:

error "libssl is too old and does not support X509_VERIFY_PARAM_set1_host()"

解决问题:重新下载编译ssl

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz --no-check-certificate
tar -zxvf openssl-1.1.1d.tar.gz 
cd openssl-1.1.1d/
./config
make
sudo make install


sudo mv /usr/bin/openssl /usr/bin/openssl.old    //将旧版本的openssl进行备份
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl    //将新版本的openssl进行软链接

新建或修改 /etc/ld.so.conf.d/libc.conf 配置文件,添加如下内容:

/usr/local/lib     //将openssl的安装路径加入配置中

然后运行如下命令:

ldconfig  //重新加载配置

此时在用openssl version命令就可以看到已经是自己安装的新版本了,这样也方便切换为老版本。


cd ~/Python-3.8.5
vi  Modules/Setup
SSL=/usr/local/ssl
改为
SSL=/usr/local

//重新编译python
make clean
./configure
make

遇到-解决问题 2.2

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_uuid 

sudo apt-get install uuid-dev
make
sudo make install
//自此安装Python 3.8.5 完毕

遇到问题2.3:

/home/lindenis/esp/esp-idf/install.sh esp32
再次执行,遇到以下错误

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)>
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate


>>> 
lindenis@ubuntu:/usr/local/ssl$ sudo cp ~/cacert.pem /usr/local/sslcert.pem

解决方法:

python
>>> import ssl 
>>> print(ssl.get_default_verify_paths())
DefaultVerifyPaths(cafile=None, capath='/usr/local/ssl/certs', openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/usr/local/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/usr/local/ssl/certs')
>>> 
//下载cacert.pem 
lindenis@ubuntu:/usr/local/ssl$ sudo cp ~/cacert.pem /usr/local/sslcert.pem

再次执行:/home/lindenis/esp/esp-idf/install.sh esp32
OK!

4.编译烧录测试hello_world:

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
cd ~/esp/hello_world
get_idf
idf.py set-target esp32
idf.py build

遇到问题3:

烧录完成后,开机只不断打印:

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371 
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371 
ets Jun  8 2016 00:22:57

解决问题:

是因为烧录时相关地址设置错了:
在这里插入图片描述

设置成正确的:
在这里插入图片描述

重新上电开机,打印如下,开发环境搭建完成。
在这里插入图片描述


参考资料:

ubuntu 安装ninja_陈 洪 伟的博客-CSDN博客_ubuntu安装ninja

Ubuntu Linux 安装Python3.8.x或其他版本的步骤 - 乌鸦哥 - 博客园

关于Shell脚本执行python代码,出现No such file or directorython: can‘t open file的问题_yimenren的博客-CSDN博客

urllib.error.URLError:urlopen error unknown url type:https 解决办法_Tyler_Zx的博客-CSDN博客

python3 安装ssl编译问题_luckydoit的博客-CSDN博客_python 编译ssl

Python打开https链接报错:unable to get local issuer certificate_wjx141的博客-CSDN博客

快速入门 - - — ESP-IDF 编程指南 v4.1.1 文档

END

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值