ESP32开发 -- 试玩ESP32

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29350001/article/details/79491209

前文要测试网络调试助手,手头正好有个ESP32一直没有试过。这次正好拿来试玩一下。

一、ESP32官网查看

官网:ESP32官网
这里写图片描述
这款最小系统开发板搭载了乐鑫最新的系统级芯片 ESP32, 支持 Wi-Fi 和蓝牙功能,具有丰富的外设,能够让开发者尽情发挥想象力进行二次开发!

二、Ubuntu系统下ESP32开发环境的搭建

参看:Ubuntu系统下ESP32开发环境的搭建

1、安装交叉编译工具链依赖的环境:

sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial

2、创建ESP32专用的工作目录:

sudo mkdir /esp32

3、设置文件夹的归属为当前用户:

sudo chown user:user /esp32

4、创建三个文件夹:

crossTools、demos、sources分别保存交叉编译工具链、样例和SDK源码:
cd /esp32
mkdir crossTools demos sources

5、进入crossTools文件夹,下载官方的交叉编译工具:

注意,需要查看你的linux是32位还是64位的。
在linux终端输入 getconf LONG_BIT 命令
如果是32位机器,则结果为32
[root@localhost ~]# getconf LONG_BIT
32
如果是64位机器,则结果为64
[root@localhost ~]# getconf LONG_BIT
64

Linux(x32):wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-59.tar.gz
Linux(x64):wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-59.tar.gz

6、 解压文件到当前目录下:

tar -xzvf xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz

三、修改环境变量

1、将解压后的交叉编译工具连添加到系统的PATH环境变量中

sudo vim /etc/profile

2、在最后面添加交叉编译工具链bin文件夹的目录

export PATH=$PATH:/esp32/crossTools/xtensa-esp32-elf/bin

3、然后更新一下profile文件,使之生效

source /etc/profile

4、检查是否安装成功

xtensa-esp32-elf-gcc -v
如果看到有版本信息显示,说明已经安装成功

5、可以看到使用的gcc版本为4.8.5

针对的目标机器格式为xtensa-esp32-elf,支持编译的源文件有C和C++,支持的线程模式是单线程single,整套的交叉编译工具链是使用crosstool-NG工具制作,如果不怕折腾,用户也可以自己制作一个新的

$ xtensa-esp32-elf-gcc -v
Using built-in specs.
COLLECT_GCC=xtensa-esp32-elf-gcc
COLLECT_LTO_WRAPPER=/esp32/crossTools/xtensa-esp32-elf/bin/../libexec/gcc/xtensa-esp32-elf/4.8.5/lto-wrapper
Target: xtensa-esp32-elf
Configured with: /home/vagrant/crosstool-NG/.build/src/gcc-4.8.5/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=xtensa-esp32-elf --prefix=/home/vagrant/crosstool-NG/builds/xtensa-esp32-elf --with-local-prefix=/home/vagrant/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf/sysroot --with-sysroot=/home/vagrant/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG crosstool-ng-1.22.0-59-g8d95cad' --disable-__cxa_atexit --enable-cxx-flags='-fno-exceptions -fno-rtti' --with-gmp=/home/vagrant/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-mpfr=/home/vagrant/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-mpc=/home/vagrant/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-isl=/home/vagrant/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-cloog=/home/vagrant/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-libelf=/home/vagrant/crosstool-NG/.build/xtensa-esp32-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-libgomp --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-nls --disable-multilib --enable-languages=c,c++
Thread model: single
gcc version 4.8.5 (crosstool-NG crosstool-ng-1.22.0-59-g8d95cad) 

四、从Github上获取ESP-IDF

可以直接通过gitclone的方式获取ESP-IDF:
git clone –recursive https://github.com/espressif/esp-idf.git

ESP-IDF的目录结构如下:
components:ESP-IDF的核心组件
examples:ESP-IDF提供的实例程序
make:ESP-IDF工程管理目录
tools:ESP-IDF提供的工具集
docs:ESP-IDF相关文档

将esp-idf拷贝到 /esp32/sources

1、将ESP-IDF目录下examples中的hello_world样例拷贝到我们之前新建的demo文件夹中

cp /esp32/sources/esp-idf/examples/get-started/hello_world/ /esp32/demos/ -rf

打开Makefile,发现里面需要一个IDF_PATH的变量
在/etc/profile中添加这样一个环境变量:
export IDF_PATH=/esp32/sources/esp-idf
source /etc/profile

2、配置项目工程,在工程的根目录下使用make menuconfig

  1. 进入SDK tool configuration查看交叉编译工具链是否指定正确,已经python命令是否正确安装,ESP-IDF需要你的python属于python2的版本,最好不要实用python3
  2. 进入Bootloader config目录,配置bootloader的打印日志显示信息等级为warning
  3. 进入Secure boot configuration,开发阶段建议关闭secure boot功能
  4. 进入Serial flasher config,指定用于烧写程序的串口设备,一般使用USB转串口的选择/dev/ttyUSB0即可,设置默认的波特率为115200,Flash的SPI模式为DIO,SPI速率为40MHz,Flash的大小为2MB
  5. 进入Partition Table设置分区表,为了更好的管理SPI Flash,ESP-IDF引入了分区表的概念,默认使用Single factory app,no OTA制作分区BIN
  6. Component config是对ESP-IDF的内核进行的更加详细的配置
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

  7. 退出make menuconfig的配置界面,保存刚才的配置,将会在工程根目录下新生成一个build文件夹和sdkconfig文件

  8. 在工程根目录下输入make all将会编译所有的BIN文件,默认会编译bootloader、partition_table、app文件,并且还会提示如何进行烧写

3、安装gcc-5.2.0

因为gcc版本应该为gcc-5.2.0,而我的为gcc-4.8.5。所以编译出现警告。
WARNING: Compiler version is not supported: 4.8.5
Expected to see version(s): 5.2.0

参看:编译安装GCC 5.2.0
相关软件下载:
gmp 6.0、mpfr 3.1.3、mpc 1.0.3、gcc-5.2.0

安装gmp 6.0

tar xvf gmp-6.0.0a.tar.bz2
cd gmp-6.0.0
./configure
make -j4
make check
make install

安装mpfr 3.1.3

mpfr依赖于gmp。

tar xvf mpfr-3.1.3.tar.bz2
cd mpfr-3.1.3
./configure –with-gmp-include=/usr/local/include \
–with-gmp-lib=/usr/local/lib
make -j4
make install

安装mpc 1.0.3

mpc依赖于gmp和mpfr。

tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure –with-mpfr-include=/usr/local/include \
–with-mpfr-lib=/usr/local/lib \
–with-gmp-include=/usr/local/include \
–with-gmp-lib=/usr/local/lib
make -j4
make check
make install

安装GCC

tar xvf gcc-5.2.0.tar.bz2
cd gcc-5.2.0
先unset若干个系统变量,以免出现某些宏找不到的情况。
unset CPLUS_INCLUDE_PATH LIBRARY_PATH
配置环境变量:
vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
source /etc/profile

配置GCC
./configure \
–with-gmp-include=/usr/local/include \
–with-gmp-lib=/usr/local/lib \
–with-mpfr-include=/usr/local/include \
–with-mpfr-lib=/usr/local/lib \
–with-mpc-include=/usr/local/include \
–with-mpc-lib=/usr/local/lib \
–enable-languages=c,c++ \
–enable-threads=posix \
–disable-multilib
详细的配置项说明可参考安装文档,这里只编译c和c++的编译器。
然后make -j8,启用多线程编译。(时间有点长)

安装
如果编译顺利通过,make install即可。
gcc和g++默认被安装到/usr/local/bin目录下,libgcc和libstdc++默认被安装到/usr/local/lib64(x64)。

记得更下下动态库缓存。
ldconfig

# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/5.2.0/lto-wrapper
目标:i686-pc-linux-gnu
配置为:./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-mpfr-include=/usr/local/include --with-mpfr-lib=/usr/local/lib --with-mpc-include=/usr/local/include --with-mpc-lib=/usr/local/lib --enable-languages=c,c++ --enable-threads=posix --disable-multilib
线程模型:posix
gcc 版本 5.2.0 (GCC) 
展开阅读全文

没有更多推荐了,返回首页