Windows下ESP8266_RTOS_SDK的编译环境搭建和VSCode配置使用说明(C语言)
一、Windows下ESP8266_RTOS_SDK的编译环境搭建
1.1 所需文件的准备
- 乐鑫官方Windows 多合一工具链:esp32_win32_msys2_environment_and_esp2020r2_toolchain-20200601.zip
- MSYS2 压缩包文件:xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip
- ESP8266_RTOS_SDK:通过git工具下载,一定要递归下载,因为在components文件夹下存在5个外部git仓库需要下载:coap、json、lwip、mbedtls、mqtt。
git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git
由于国内网络限制,可能无法git到上面提到的5个组件,可以直接下载以下文件,是我已经完整git的压缩包。ESP8266_RTOS_SDK.zip
1.2 解压安装
首先,解压ESP8266_RTOS_SDK.zip到想要的安装目录,比如D:\ESP8266\,得到D:\ESP8266\ESP8266_RTOS_SDK文件夹。
然后,将esp32_win32_msys2_environment_and_esp2020r2_toolchain-20200601.zip压缩包中的msys32文件夹解压到自己想安装的位置,比如
D:\ESP8266\msys32
再将xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip解压到D:\ESP8266\msys32\opt,生成D:\ESP8266\msys32\opt\xtensa-lx106-elf文件夹
解压后,打开D:\ESP8266\msys32\etc\profile.d\esp32_toolchain.sh 脚本文件进行修改,添加 SDK 的路径。
原始配置是这样的:
export PATH="/opt/xtensa-esp32-elf/bin:$PATH"
我们需要修改为:
#export PATH="/opt/xtensa-esp32-elf/bin:$PATH" 加#注释掉原始的esp32的工具链路径
export PATH="$PATH:/opt/xtensa-lx106-elf/bin" #上面解压生成的esp8266的工具栏路径
export IDF_PATH="D:/ESP8266/ESP8266_RTOS_SDK" #上面解压生成的ESP8266_RTOS_SDK的路径
至此,编译环境的各项配置就完成了,可以使用了。通常情况,我们会创建一个专门用来存放工程文件的文件夹,以便于后续管理,这个文件夹放哪里都可以,没有限制,比如E:\ESPprojects。
1.3 测试
为了验证上面的编译环境是否正常,我们以SDK默认提供的一个helloworld程序为例进行编译测试。这个helloworld工程原始路径在D:\ESP8266\ESP8266_RTOS_SDK\examples\get-started\hello_world,把他拷贝到我们自己的工程文件夹下E:\ESPprojects\hello_world,开始编译测试。
首先,打开D:\ESP8266\msys32\mingw32.exe,进入shell界面,如下图
通过cd命令,切换到hello_world所在工程目录:
cd /e/ESPprojects/hello_world
然后通过make命令执行配置、编译、下载等操作。以下是常用的命令:
- 配置工程命令:make menuconfig
执行命令后会进入如下图所示的配置页面
我们需要进行如下配置:
进入SDK tool configuration选项,把第一行修改为D:\ESP8266\msys32\opt\xtensa-lx106-elf\bin\xtensa-lx106-elf-,然后点保存,完成工程的工具链配置。
进入Serial flasher config选项,修改Flash size为4MB,点击保存;因为我用的ESP12F硬件搭配的是4MB的外部SPI存储芯片。
点击退出menuconfig,当出现如下字符时,配置完成,此时在当前工程目录下会生成一个build文件夹,里面是一些编译需要的文件。这时就可以进行下一步的编译了:
GENCONFIG
Project is not inside a git repository, or git repository has no commits
will not use 'git describe' to determine PROJECT_VER.
App "hello-world" version: 1
gf@GF-design MINGW32 /e/ESPprojects/hello_world
#
-
编译工程命令:make 或者make all
编译完成后会在build文件夹里面生成hello_world.bin和.elf等二进制文件,用于下载到单片机运行。 -
编译并烧录固件命令:make flash
这个指令可以直接编译和下载。 -
打开串口命令:make monitor
-
编译/烧录/打开串口命令:make flash monitor
二、在VSCode中集成开发
1. 配置
下载安装vscode后,点击“文件–open folder…”打开D:\ESP8266\ESP8266_RTOS_SDK,
然后点击vscode左下角的齿轮,点击“命令面板”,
输入setting,找到“首选项:打开工作区设置(JSON)”,点击后会出现一个vscode的settings.json文件,输入如下配置,将工具链shell嵌入到VSCode的集成终端中。
{
"terminal.integrated.profiles.windows": {
"esp8266shell": {
"path": "D:\\ESP8266\\msys32\\msys2_shell.cmd",
"args": [
"-defterm",
"-mingw32",
"-no-start",
"-here"
]
}
},
"terminal.integrated.defaultProfile.windows": "esp8266shell"
}
2. VSCode中工程编译
完成上述配置后,编译环境就搭建好了,但是此时的编辑器无法实现定义/实例调转、include自动补全等便于编程的功能,所以要安装“C/C++”扩展程序。安装好后,我们可以在当前ESP8266_RTOS_SDK工程中找到“example/get-started/hello_world”工程文件夹,打开hello_world_main.c文件,发现include失效,此时需要对C/C++的includepath进行修改,增加我们要用到的路径。
在c_cpp_properties.json文件的includePath配置项中添加以下路径:
"D:/ESP8266/msys32/opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/8.4.0/include",
"D:/ESP8266/msys32/opt/xtensa-lx106-elf/xtensa-lx106-elf/include",
"${workspaceFolder}/components/freertos/port/esp8266/include",
"${workspaceFolder}/components/spiffs/test_spiffs_host/sdkconfig",
"${workspaceFolder}/components/esp8266/include"
右键点击,选择“在集成终端中打开”,即可向第一章节中一样使用shell命令执行编译和下载等操作了。
【!!注意!!】这里,为了免去一些繁琐的配置,建议在VSCode集成开发时,将工程目录放置在ESP8266_RTOS_SDK目录下,比如默认的“ESP8266_RTOS_SDK/example/get-started”目录,方便使用。