最近尝试着把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 CompilerC++ Compiler 的工作路径,C CompilerC++ Compiler 的工作路径在主界面的.espressif文件夹目录下,如下图勾选显示隐藏文件可见
在这里插入图片描述
我这里使用的是esp32s3的芯片,C CompilerC++ 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.elfflash(用于烧录),在 Executable 栏选择工程对应的 hello_world.elf,完成后点击Apply,点击OK,之后点击build选项进行编译(绿色小锤)
在这里插入图片描述
编译成功会看到提示Build finished
在这里插入图片描述
接上设备,Configurations切换到flash
在这里插入图片描述
点击运行选项,烧录成功就可以看到以下内容
在这里插入图片描述
到此,我们在ubuntu下的CLion+ESP-IDF开发环境就搭建完成了,接下来就可以进行esp32的开发

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐