ESP32开发首先要搭建一套可以编译的环境。
1. 基本环境
- 首先安装虚拟机和ubuntu18.04环境。
- 由于ubuntu的Python3已经比较低了,这个时候需要安装高版本的Python3然后按照快速入门教程中给定的
2. Linux基本环境准备
我们跟随乐鑫文档的步伐来到
2.1 现有包安装
第一步:安装准备
,我们使用的是linux系统,点击linux之后开始我们的配置过程进行安装包的安装
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
2.2 Python3.8安装
1 官方网站下载指定的版本的tgz
wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
2 安装几个依赖
sudo apt-get install openssl-devel
sudo apt-get install bzip2-devel
sudo apt-get install expat-devel
sudo apt-get install gdbm-devel
sudo apt-get install readline-devel
sudo apt-get install sqlite-devel
sudo apt-get install zlib-devel
sudo apt-get install libffi-devel -y
sudo apt-get install -y gcc
sudo apt-get -y install zlib*
3 安装Python3.8.3
- 3.1 解压Python3.8.3.tgz并进入
tar -xvf Python-3.8.3.tgz
cd Python-3.8.3
- 3.2 创建安装的文件夹
mkdir /usr/local/python3.8.3
- 3.3 配置安装目录
./configure --prefix=/usr/local/python3.8.3
- 3.4 编译和安装
make && make install
- 3.4 删除原来的软连接并配置新软连接
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /usr/local/python3.8.3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3.8.3/bin/pip3 /usr/bin/pip3
- 3.5. 这个主要是编译过程中可能找不到这个lsb模块,需要这里提前拷贝到安装目录中
sudo cp /usr/lib/python3/dist-packages/lsb_release.py /usr/local/python3.8.3/lib/python3.8/
3 下载esp-idf并配置编译环境
mkdir -p ~/esp
cd ~/esp
git clone -b v4.4.1 --recursive https://github.com/espressif/esp-idf.git
下载过程中由于GitHub的的原因所以下载过程中子模块可能下载失败,这个时候反复执行下面语句知道所有的子模块全部下载正确
git submodule update --init --recursive
下载完成以后下载xtensa的工具链,下载过程中如果出现失败,从新调用最后一句install.sh
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh
下载完成以后导出整个工具链和工程编译的环境变量
. $HOME/esp/esp-idf/export.sh
直接通过内部现有的实例进行编译环境正确性验证
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
进入到工程中进行编译,其中idf.py menuconfig具体怎么配置需要根据模块需要完成。这里测试环境不需要进行menuconfig配置
cd ~/esp/hello_world
idf.py set-target esp32
idf.py menuconfig
idf.py build
4 esp-who AI框架编译
esp-who是AI框架,内部提供了很多基本的实例
git clone --recursive https://github.com/espressif/esp-who.git
cd esp-who/
git submodule update --recursive --init
cd examples/human_face_detection/lcd/
idf.py set-target esp32s3
idf.py build
编译完成以后通过如下命令下载到开发板
idf.py -p PORT [-b BAUD] flash
中间的参数为波特率,默认 460800
下载过程中设涉及问题
USB接入以后连接到入虚拟机中的Linux系统,查看新增的tty*设备确定当前被系统识别以后得控制端口是什么,常见端口如下两种,直接通过如下两种命令进行bin文件下载:
idf.py -p /dev/ttyACM0 flash
idf.py -p /dev/ttyUSB0 flash
如果在写入的过程中发现权限不够,这个时候就需要修改权限。通过命令 ls -lh /dev/ttyUSB0 查看下载命令的权限,然后通过如下的命令进行权限修改
sudo chmod 777 /dev/ttyUSB0
5.1 ESP32-S3 通过USB下载和调试
前 ESP32-S3 进行下载和调试有两种方式,一种是通过串口(UART),另一种是通过USB。如果使用串口的话,还需要一个额外的串口芯片-CP2102。使用USB就可以直接连接、下载。
- 硬件设计
BOOT 键(GPIO0)是必须要有的,进入下载模式的时候需要用到。
复位键可以不用,直接使用上电复位配合上 BOOT 键也能进入下载模式。
GPIO19 和 GPIO20 是需要连接的USB引脚。
- 进入下载模式
在通电的情况下,按住 BOOT 键不松开,然后在按一下复位键,然后再松开 BOOT 就能进入下载模式了。
在按住 BOOT 键不松的情况下上电。
- 项目配置与下载
1.进入项目文件夹,执行以下指令
idf.py set-target esp32-s3 //配置芯片型号 idf.py menuconfig // 进入配置界面 勾选 ESP_CONSOLE_USB_SERIAL_JTAG idf.py dfu //编译成USB烧写的固件,注意这里和串口烧写的编译指令不同
2.进入下载模式之后,ubantu会识别出 USB JTAG/serial debug unit ,使用一下命令进行下载
idf.py -p /dev/ttyACM0 flash //具体设备号据实际情况而定
3.下载完成之后,重启退出下载模式。此时 ubantu 仍然会识别出 USB JTAG/serial debug unit 。
idf.py monitor -p /dev/ttyACM0 //打开USB调试打印