ESP8266-Linux子系统(WSL)-VSCode编译环境搭建
安装、配置 wsl (我使用的是 Debian)
-
安装 wsl
-
查看系统版本
cat /etc/os-release
-
切换软件安装源 (这里使用清华镜像)
https://mirrors.tuna.tsinghua.edu.cn/help/debian/
-
编辑 source.list
sudo nano /etc/apt/sources.list
至此 wsl 安装已经完成,开始搭建 ESP8266 开发环境
- 安装常用软件
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial
- 报错
Note, selecting 'python-is-python2' instead of 'python'
- 暂时不管,这里切忌安装 python3,SDK 的构建工具是基于 python2 的!!去掉python-serial再安装
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python
- 这个版本的 python 没有自带 pip,这里手动安装一下
# 安装 python2 的 pip
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
sudo python ez_setup.py --insecure
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
# 这里的 * 是通配符
tar -xvf *.tar.gz
cd pip*
# 安装
sudo python setup.py install
ln -s /usr/local/python27/bin/pip /usr/bin/pip
- 尝试运行 pip --version 失败,原来是没有包含 pip 安装到的路径
export PATH=$PATH:/usr/local/bin
- 安装完 pip 先更新一下
pip install --upgrade pip
- 下载交叉编译工具 (放在到实体机,因为怕哪天wsl崩了,代码无了)
https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/linux-setup.html
- 下载 SDK (也放在实体机,clone时间比较长)
git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git
- git clone 如果有问题
由于 github 自 2021年8月 加强了安全的啥啥啥策略,不能随便 clone 了
- 这里配置一下 github 的个人信息
git config --global user.name "名字"
git config --global user.email "邮箱"
# 看一下配置信息
git config -l
- 接着愉快的 clone
- 下载完是这个样子滴…
- 在 wsl 中进入 SDK 的目录中安装一下 python 的依赖工具
# 安装依赖
python -m pip install --user -r ./requirements.txt
- 包含路径
# 配置我下载的 SDK 目录和交叉编译工具目录 (在实体机里)
# wsl 下的 /mnt/f/... 就是 Windows 中的 F:/...
# 执行下面两行
export IDF_PATH="/mnt/f/MyEnv/ESP8266/ESP8266_RTOS_SDK"
export PATH=$PATH:/mnt/f/MyEnv/ESP8266/xtensa-lx106-elf/bin
# 有些教程是把 SDK 安装到了 ~/esp8266 目录
# export IDF_PATH="$HOME/esp8266/ESP8266_RTOS_SDK"
# export PATH=$PATH:$HOME/esp8266/xtensa-lx106-elf/bin
# pip
export PATH=$PATH:/usr/local/bin
# 添加 export和 path 到 shell 的环境中
# IDF_PATH 添加到 ~/.bashrc 或 ~/.zshrc (zsh yyds !!)中
export IDF_PATH="/mnt/f/MyEnv/ESP8266/ESP8266_RTOS_SDK"
# PATH 添加到 Windows 实体机环境变量中 (用户变量只需注销)
export PATH=$PATH:/mnt/f/MyEnv/ESP8266/xtensa-lx106-elf/bin
-
Windows 实体机环境变量
-
进入 SDK 的例程中编译一下试试
-
配置串口
cd $IDF_PATH/examples/get-started/hello_world
make menuconfig
打开配置界面,需要控制台足够的大!!不然不运行
-
配置一下串口和波特率 (越高烧录越快)
-
我电脑的串口号是 COM27,所以 wsl 配置中串口就是 /dev/ttyS27,波特率设置成 921600,因为快!!
- 编译一下
make -j8 all
- 编译成功后烧录
make flash
- 为了实现随时随地的编译某个工程 (就是带有sdkconfig文件的那些文件夹)写一个powershell的脚本来帮助编译
- pwd_build.ps1
# 取绝对路径父路径
$path_abs = Split-Path -Parent $MyInvocation.MyCommand.Definition
# 整理路径
$path_abs = $path_abs -replace "\\", "/"
$path_abs = $path_abs -replace "C:", "c"
$path_abs = $path_abs -replace "D:", "d"
$path_abs = $path_abs -replace "E:", "e"
$path_abs = $path_abs -replace "F:", "f"
$path_abs = $path_abs -replace "G:", "g"
$path_abs = $path_abs -replace "H:", "h"
$path_abs = $path_abs -replace "I:", "i"
$path_abs = $path_abs -replace "J:", "j"
$path_abs = $path_abs -replace "K:", "k"
$path_abs = "/mnt/" + $path_abs
# 在当前工作目录下运行绝对路径中的 build.sh
wsl "$path_abs/build.sh"
- build.sh
export IDF_PATH="/mnt/f/MyEnv/ESP8266/ESP8266_RTOS_SDK"
export PATH=$PATH:/mnt/f/MyEnv/ESP8266/xtensa-lx106-elf/bin
# make menuconfig
make -j8 all
make flash
-
把两个文件放在一起 (可以放在某个环境变量里打开powershell随处调用)
-
运行一下试试看
-
make menuconfig 正常
-
make flash 正常
-
这样就可以愉快的用VSCode写代码,用这个脚本编译了
-
配置一下 VSCode 的 tasks.json
-
settings.json 中设置 powershell 为默认终端
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
-
Ctrl+Shift+B 运行编译任务
-
编译正常,可以愉快的写代码了