本文详细记录了笔者在Linux环境下,ESP32 IDF的安装到编译烧录Hello World程序。碰到的所有问题的解决方法。以此记录

1 安装IDF报错发生

ESP32在Linux下安装,只需在VS CODE里安装插件即可。但是会遇到一些报错,如

non zero exit code 1 Creating a new Python environment ...

这实际是提醒你,Python无法创建虚拟环境。可能是你的python不支持。

2 检查python版本,安装包支持

# 输入python3,打开python,查看版本。
fate@-virtual-machine:/usr/bin$ python3 --version
Python 3.10.12

可见,python版本是3.10。安装对应的版本。

apt-get install python3.10-venv

2.2 python 下载报错

现在重新通过vscode的esp idf插件安装,就不会在这里报错了,但是如果你没有配置镜像源,也会报错,下载时间过长。 这里一起提供命令行。

mkdir -p ~/.pip
vim ~/.pip/pip.conf

文件中输入

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

保存后,重新安装即可。就不会报错了。

3 Hello World 编译问题

笔者是在Linux环境下安装的。运行后,发现报错。
检测不到USB口,且OpenOcd未运行。

3.1 USB口检测不到

fate@fate-virtual-machine:~/esp32/es32-s3-n16-learn/hello_world$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 003 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 003 Device 005: ID 303a:1001 Espressif USB JTAG/serial debug unit
Bus 003 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mous

说明检测到了USB,查看/dev,ls /dev 没有找到 /ttyUSB0。转而搜索相关文档。发现是内核没加载usb模块。使用
bash sudo modprobe usbserial
加载模块。但是又发现内核版本不够。检查版本,更新内核驱动模块。

## 检查版本
fate@fate-virtual-machine:~/esp32/es32-s3-n16-learn/hello_world$ uname -a
Linux fjp-virtual-machine 5.19.0-41-generic #42~22.04.1-Ubuntu S
# 更新内核模块
sudo apt install linux-modules-extra-5.19.0-41-generic
## 加载usb驱动
 sudo modprobe usbserial

3.2 总的命令

sudo apt install linux-modules-extra-5.19.0-41-generic
sudo modprobe usbserial

3.3 OpenOCD服务没开。导致无法烧录/Debug

复制一个文件到etc目录

将文件60-openocd.rules拷贝到如下目录。(60-openocd.rules文件在IDF安装的目录下,find找一下就行)

# 要复制到的目录
\etc\udev\rules.d  

参考文章:

https://blog.csdn.net/qq_43222384/article/details/125995501
https://blog.csdn.net/beile759/article/details/144200868

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐