#首先更新库,然后安装如下库
sudo apt-get install gcc git wget make cmake libncurses-dev flex bison gperf python python-serial python-pip python3-pip
#下载elf
wget https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
#新建一个文件夹,把下载项挪进去解压
mkdir esp8266
mv xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz esp8266/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
cd esp8266/
#解压
tar -zxvf xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
#将路径下的bin加入环境变量
nano ~/.profile
#将如下一行添加进.profile最后
export PATH="$PATH:/home/sonny/esp8266/xtensa-lx106-elf/bin"
#使能最新修改
source ~/.profile
#测试一下
printenv PATH
#会输出类似信息
/home/sonny/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/sonny/esp8266/xtensa-lx106-elf/bin
#查看一下版本:
xtensa-lx106-elf-gcc -v
#会输出类似信息
Using built-in specs.
COLLECT_GCC=xtensa-lx106-elf-gcc
COLLECT_LTO_WRAPPER=/home/sonny/esp8266/xtensa-lx106-elf/bin/../libexec/gcc/xtensa-lx106-elf/8.4.0/lto-wrapper
Target: xtensa-lx106-elf
Configured with: /builds/idf/crosstool-NG/.build/xtensa-lx106-elf/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=xtensa-lx106-elf --prefix=/builds/idf/crosstool-NG/builds/xtensa-lx106-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf --with-headers=/builds/idf/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/include --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG esp-2020r3-49-gd5524c1' --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections --disable-libgomp --disable-libmudflap --disable-libmpx --disable-libssp --disable-libquadmath --disable-libquadmath-support --with-gmp=/builds/idf/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/xtensa-lx106-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-nls --enable-multiarch --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-libstdcxx-time=yes
Thread model: posix
gcc version 8.4.0 (crosstool-NG esp-2020r3-49-gd5524c1)
#下载ESP8266_RTOS_SDK
#网址https://github.com/espressif/ESP8266_RTOS_SDK/releases/download/v3.4/ESP8266_RTOS_SDK-v3.4.zip
cd ~/esp8266/
#解压
unzip ESP8266_RTOS_SDK-v3.4.zip
#将SDK添加进环境变量
nano ~/.profile
#在最后一行加入如下信息
export IDF_PATH="/home/sonny/esp8266/ESP8266_RTOS_SDK"
#使能最新修改
source ~/.profile
#测试一下
printenv IDF_PATH
#如果没有安装pip,此时需要安装一下pip
sudo apt install python3-pip
#根据requirements.txt把库都安装一下
python -m pip install --user -r $IDF_PATH/requirements.txt
#我这边这一步失败了,提示pyparsing版本不契合,可能是python版本问题,如果你没有这个问题,请略过这一步
#重新安装固定版本的pyparsing
pip install pyparsing==2.4.6
#重新执行一边python库安装
python -m pip install --user -r $IDF_PATH/requirements.txt
#如果gcc版本太老的话需要安装一下gcc-10
sudo apt install gcc-10
sudo ln -s gcc-10 gcc
#如果上一步链接失败需要先将原先链接删除
sudo rm gcc
sudo ln -s gcc-10 gcc
#安装以上步骤完毕后,插上ESP8266开发板
ls -l /dev/ttyUSB*
#我这里会输出/dev/ttyUSB0 你这边可能不一定是0,也可能是123都可以的
#进入以下路径准备往开发板刷入测试程序
cd /home/sonny/esp8266/ESP8266_RTOS_SDK/examples/get-started/hello_world
#在此目录下执行板子的相关配置
make menuconfig
#在该界面选择第一个SDK工具设置
#选择第一个就行
#然后退出选择第三个Serial串口设置,根据自己的板子来
#我这里是ESP-12E的nodeMCU版本,选择的是4MB的Flash 内存,波特率选择的是115200
#设置完成后保存退出
#注意这里如果你不是root用户登录的,你就无法使用串口。所以我们这里需要修改配置,将串口可以为非ROOT用户所用
sudo nano /etc/udev/rules.d/70-ttyusb.rules
#写上如下一句
KERNEL=="ttyUSB[0-9]*",MODE="0666"
#然后继续在/home/sonny/esp8266/ESP8266_RTOS_SDK/examples/get-started/hello_world路径下开始编译刷写,并查看串口
make flash monitor
#到这里已经成功了。下一步我们开始VSCODE的配置。
#插件里面选择PlatformIO然后安装
#如果安装时提示如下报错‘Can not find working Python 3.6+ interpreter’ on Linux
#安装一下python3-venv即可
sudo apt -y install python3-venv
#继续安装,安装成功后需要关闭VSCODE重新打开,一定要手动关闭。
安装成功后点击这个蚂蚁头像:
#进入主页点击NEW PROJECT
#这里如果Board一直转圈就需要把电脑或者VSCODE重启一下
#然后按照自己的板子的实际情况选择
#选择成功后会跳出来一个platformio.ini
#按照如下配置一下波特率及串口COM口
[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino
monitor_speed = 115200
upload_port = /dev/ttyUSB0
#测试代码如下。可以使板子启一个wifi并且串口打印信息
#include <Arduino.h>
#include <ESP8266WiFi.h>
const char *ssid = "esp8266testwifi";
const char *password = "12345678";
long _index = 0;
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
WiFi.softAP(ssid, password);
Serial.print("\rAccess Point: ");
Serial.println(ssid);
Serial.print("\rIP address: ");
Serial.println(WiFi.softAPIP());
}
void loop() {
_index += 1;
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
Serial.printf("\rFLASHING!%ld\r\n",_index);
}
#至此已经可以正常编写编译烧录程序了!
#附录以下为ubuntu ARDUINO的IDE设置,教程比较多,就不赘述了。
ESP8266开发板arduino管理器地址
http://arduino.esp8266.com/stable/package_esp8266com_index.json
如果缺少相关资源包比如xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz和ESP8266_RTOS_SDK-v3.4.zip,可以移步公众号回复“esp8266”获取!