背景:
之前开发ESP32C3模组程序一直用的都是VScode+Espressif IDF环境,11.14早上我们万恶的测试同事在一项功能测试中发现一个小bug,主要是时区解析格式不一致导致设备时间不对的问题,本着有问题马上就解决的心态,这个小问题根本难不到我。等自信的打开好几天没有用的vscode并打开工程目录,结果vscode无法加载IDF,编译器也无法自动选择,配置文件也打不开,也无法编译,一开始我觉得可能是我打开vscode的姿势不对,然而经过多次的重启问题还是无法解决,我本能的觉得事情不简单了,随即开始回忆这几天对电脑的操作。
最近因为不用开发模组的程序我都没使用vscode,但是在上周五我卸载了一些可能看起来没用的软件只是为了清点硬盘空间,因为我的C盘要爆炸了。有可能某些环境在卸载那些软件的时候发生了改变,导致vscode无法编译esp32c3的工程程序了,想到这里我开始时了后悔2天的操作。
含泪重搭环境:
我的前车之鉴证明:不要手贱,不要手贱,不要手贱。
我电脑上安装了“IDF离线版”和“VScode+Espressif IDF开发环境”这两种环境,当vscode不能编译的时候我尝试使用IDF离线环境进行编译,结果同样是无法编译。
此时我知道软件应该出问题了,我接下来打算进行重装:
1、首先卸载vscode的espressif插件,要完全卸载需要快捷键“窗口+R”打卡运行,输入“%userprofile%”打开:
打开.vscode文件夹---->extensions文件夹,删除“espressif.esp-idf-extension-1.6.5”,这样就可以完全卸载这个插件。
只是完全卸载插件还是不行的,还要删除之前espressif插件下载的IDF数据,即还要删除下面的两个文件夹。
此时我开心的以为后面只要进行重装接好了。
我按照我之前装espressif的步骤,选择之前的IDF版本(v4.4.1)进行重装,最后直接直接给我报错了,连装都装不上了,错误提示如下:
虽然英语六级没过,但是四级过了,看了看报错的意思,说是找不到合适的版本,要在黄色的那个路径下的输入“python.exe -m pip install --upgrade pip”更新pip版本什么的,既然它都这么说了那我就试试。
打开命令窗口,按照提示输入,第一次尝试并没有成功,而是报“WARNING: There was an error checking the latest version of pip.”,然后我开始询问“度娘”,有大哥说是源不对,改一下源就行。
改源:
快捷键“窗口+R”打卡运行,输入“%appdata%”打开,新建“pip”文件夹。
在里面新建“pip.ini”文件,输入:
[global]
timeout = 6000
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
保存并关闭文件。
然后打开命令窗口,在指定的目录下输入:python.exe -m pip install --upgrade pip,看起来是更新成功了,既然如此我就按照之前的步骤再安装一遍。
结果不出意外的还是出意外的报错了,这次只提示了:
ERROR: Could not find a version that satisfies the requirement gcovr
ERROR: No matching distrbutsion found for gcovr
继续找“度娘”结果还是换源。
2.上面“度娘”还是换源并重装vscode,源我已经换好了,我这次来个彻底的大卸载,除了卸载vscode还卸在IDF离线版(这个也不能用了一并卸载了),此时我电脑上关于esp32的开发环境都卸的干干净净。
完全卸载vscode要删除下面这两个文件。
开始重装vscode,官网下载最新的安装包,进行安装,安装完成并重新安装各种插件,包括espressif,还是按照之前的安装步骤进行,这次我选择了v5.0.2版本的IDF
开始安装,结果还是安装失败,报了同样的错误,我继续卸载刚才安装的v5.0.2该成安装v4.4.1,结果还是失败,此时心态有点奔溃,但不慌,既然vscode的环境搞不好,就换个思路重新安装离线版的IDF,我又重新卸载vscode。
3.重装IDF离线开发环境
到乐鑫官方地址下载离线安装包,其可选的版本如下:
有各种版本,在前面的只有这几个版本
居然没有我想要的v4.4.1的,我非常倔强的在下面找到了那个版本,很好,下载马上安装。
按照之前的安装步骤进行安装,安装完成后我尝试编译工程结果还是报错:
The following Python requirements are not satisfied:
D:\ESP-IDF\Espressif\frameworks\esp-idf-v4.4.1/tools/check_python_dependencies.py:12: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
人麻了,也提示了找不到合适的版本。
继续“度娘”,有大哥说可能Python版本不对,用3.8.7试试,我查了我的Python版本是3.9.9,听人劝吃饱饭,我又卸载了原来的Python,立马安装3.8.7,ok安装好了Python,再重装一遍v4.4.1离线IDF,不出意外还是编译工程时报错。彻底奔溃,下班回家。
4.第二天的曙光
从上班开始我就再重复上一天的操作,无论我怎么卸载重装都是报错,很搞心态。后来我仔细一想,官方为什么要把v4.4.1和v5.0.2的版本放到下面列表呢?我猜测是版本比较老而且不维护了,我立马下载页面上显示的离的比较近的v4.4.6版本的IDF。
之前的都卸载了,开始安装v4.4.6版本的IDF,和之前的步骤一样,安装完成,找了例程的“hello_world”编译成功,固件成功编译并下载到ESP32C3上运行,此刻我无喜无悲,终于是成功了。随即开始重装vscode+espressif,装好后我没采用“ADVANCED”方式,而是使用“USE EXISTING SETUP”的方式,即选择使用存在的环境来安装。
选择下面这个就可以了,最后配置完成,vscode又可以编译工程了,真是“山重水复疑无路,柳暗花明又一村”。
总结:
乐鑫对以前的版本可能不支持了,所以用以前的安装包有内容缺失无法下载的是正常的,大家在使用时多关注最新版的更新和对老版本的停用。方向要对,不然再努力也是越走越错。这次的突发状况因也让我对ESP32C3的开发环境有一定的理解,以后也能得心应手的解决这类问题,也希望我的分享能帮到一些朋友。