Ubuntu20.04下配置CLion+ESP-IDF开发环境(拒绝劝退)
最近尝试着把ubuntu系统给安装到移动硬盘里,做了一个即插即用的ubuntu系统,就想着把一些常用的开发工具搭建在ubuntu系统下进行开发,以前没用过CLion,正好最近闲了有时间折腾,就想着用CLion来开发ESP32,在参考了乐鑫和CLion的官方文档及大佬的博客后,终于完成了开发环境的配置,在此记录,方便日后回顾,有什么问题和指导也欢迎大家前来交流。
此处附上官方文档和参考的大佬博客链接
ESP-IDF编程指南https://docs.espressif.com/projects/esp-idf/zh_CN/v4.4.2/esp32s3/get-started/index.html
CLion官方文档https://www.jetbrains.com/help/clion/esp-idf.html?keymap=secondary_macos#create-sample
参考的大佬博客 ESP32之 ESP-IDF + Clion 开发环境搭建(二)—— Linux版https://blog.csdn.net/m0_50064262/article/details/122189795
安装ESP-IDF
我们可以参考乐鑫公司关于ESP-IDF的官方开发文档,附上链接🔗https://docs.espressif.com/projects/esp-idf/zh_CN/v4.4.2/esp32s3/get-started/index.html
一、获取ESP-IDF
!!!如果有开发esp32s3的需求,建议安装4.4版本以上的ESP-IDF,亲测使用4.3版本烧录esp32s3时出现烧录错误:This chip is esp32s3 not esp32s3(beta2),好像4.3对esp32s3的支持不完全
方法一:利用 git clone 命令获取ESP-IDF(不推荐)
打开终端,输入以下指令连接远程仓库获取ESP-IDF安装包
mkdir -p ~/esp
cd ~/esp
git clone -b v4.4.2 --recursive https://github.com/espressif/esp-idf.git
对网络的要求比较高,网络不好可能会导致获取的安装包中部分文件丢失,造成之后CMake文件的编译错误,而且个人感觉速度很慢
方法二:在github上直接下载压缩包解压(推荐)
进入github的esp-idf下载地址🔗https://github.com/espressif/esp-idf/tags,可以看到各个版本的都有,我们找到4.4.2版本,点击进入(可能有的人会遇到无法打开github的情况,csdn上给出的解决方法挺多的,这里我就不介绍了)
找到 Download an archive with submodules included,点击蓝色的下载链接即可
压缩包下载完成后,在主目录下创建一个空白文件夹命名为esp,将其解压到esp文件夹目录下
二、设置工具
打开终端,输入指令打开esp-idf所在目录,执行./install.sh
安装工具
cd ~/esp/esp-idf-v4.4.2
./install.sh
三、设置环境变量(便于使用终端命令行)
打开.bashrc
文件
sudo vim ~/.bashrc
按i
进入插入模式,在文件末尾添加以下两条语句
alias get-idf='. $HOME/esp/esp-idf-v4.4.2/export.sh'
alias idf='idf.py'
按ESC
输入:wq
保存退出,重新打开终端或使用source ~/.bashrc
来刷新配置文件
建立工程
一、新建工程
这里我们直接从esp/esp-idf-v4.4.2/xamples/get-started
文件夹中复制一个hello_world
工程到主目录下
二、工程配置
cd ~/esp/project/ESP32-S3/hello_world
idf.py set-target esp32s3 #esp32s3为芯片型号
idf.py menuconfig
运行idf.py menuconfig
可能会弹出与python有关的报错,虽然不影响最后运行
创建python软连接可以消除报错
sudo ln -s /usr/bin/python3.8 /usr/bin/python
配置无误则会弹出下面的菜单界面
运行完get-idf指令后,尝试在终端使用idf build
指令编译工程
如最后显示Project build complete. To flash, run this command:
表示编译成功
配置CLion
使用CLion打开hello_world
工程
一、配置toolchain
这是配置好的toolchain
配置步骤:
1、找到界面右上角的齿轮图标,点击打开 settings 选项,再找到 Build,Execution,Deployment 选项下的 Toolchains 选项
2、点击+
号新建一个system,修改名称(我这里修改的是ESP32-S3)
3、配置 C Compiler 和 C++ Compiler 的工作路径,C Compiler 和 C++ Compiler 的工作路径在主界面的.espressif
文件夹目录下,如下图勾选显示隐藏文件可见
我这里使用的是esp32s3的芯片,C Compiler 和 C++ Compiler 的工作路径如下(根据自己所用芯片型号选择,都在./espressif/tools/
目录下)
C Compiler
/home/lucas/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-gcc
C++ Compiler
/home/lucas/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-g++
配置完成后点击Apply完成修改
二、配置CMake
1. 配置CMake并添加环境变量
找到 Build,Execution,Deployment 选项下的 CMake 选项,修改Toolchain为我们刚刚配置的Toolchain(ESP32-S3),在下方 Environment 栏添加如下环境变量
IDF_PATH
:之前解压的esp-idf包所在位置
ESPBAUD
:波特率
ESPPORT
:端口号,可以接入设备使用sudo ls -l /dev/ttyUSB*
查找所对应的串口
建议使用sudo usermod -a -G dialout [usrname]
给当前用户添加端口权限,避免后面烧录出现报错Error: Permission denied:'/dev/ttyUSB0'
配置完成之后点击Apply,点击OK
2. 修改CMake文件
进入~/esp/esp-idf-v4.4.2/tools/cmake
文件夹目录,打开toolchain-esp32s3.cmake
set(CMAKE_C_COMPILER xtensa-esp32s3-elf-gcc)
set(CMAKE_CXX_COMPILER xtensa-esp32s3-elf-g++)
set(CMAKE_ASM_COMPILER xtensa-esp32s3-elf-gcc)
将上述内容修改为如下内容(也就是修改成绝对路径,请根据自己的实际目录进行修改i)
set(CMAKE_C_COMPILER /home/lucas/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-gcc)
set(CMAKE_CXX_COMPILER /home/lucas/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-g++)
set(CMAKE_ASM_COMPILER /home/lucas/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-gcc)
修改完成后保存退出,如要使用其它型号芯片需要对其它对应cmake文件进行修改,这里就不一一演示
3. 修改CMakeLists.txt
接着点击打开hello_world目录下的CMakeLists.txt文件(有两个,一个在main目录下,我们选另一个)
添加如下配置
set(PYTHON "/home/lucas/.espressif/python_env/idf4.4_py3.8_env/bin/python")
set(python "/home/lucas/.espressif/python_env/idf4.4_py3.8_env/bin/python")
# 不加这句默认为 'esp32'
set(IDF_TARGET "esp32s3")
添加完成后是这样的
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
set(PYTHON "/home/lucas/.espressif/python_env/idf4.4_py3.8_env/bin/python")
set(python "/home/lucas/.espressif/python_env/idf4.4_py3.8_env/bin/python")
# 不加这句默认为 'esp32'
set(IDF_TARGET "esp32s3")
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(hello_world)
配置完成后点击下图左上角的Reload图标完成刷新,显示[Finished]表示配置正常
工程的编译与烧录
同时界面右上栏会自动生成一系列的Configurations,我们选择hello_world.elf,点击Edit Configurations进入如下界面
依次在CMake Application栏选择hello_world.elf和flash(用于烧录),在 Executable 栏选择工程对应的
hello_world.elf
,完成后点击Apply,点击OK,之后点击build选项进行编译(绿色小锤)
编译成功会看到提示Build finished
接上设备,Configurations切换到flash
点击运行选项,烧录成功就可以看到以下内容
到此,我们在ubuntu下的CLion+ESP-IDF开发环境就搭建完成了,接下来就可以进行esp32的开发