本文简单记录一下esp8266开发环境搭建,主要目的是记录子模块拉取失败的问题。
主要介绍windows平台。(其实windows主要就是多个编译环境的设置,其他跟linux差不多。)
1、获取MSYS2
这个MSYS2就是为编译器创建在windows的运行环境,操作类似linux终端
在乐鑫指南中有,我这里就不给出下载地址了,因为地址可能会更新
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started-legacy/windows-setup.html
解压,msys32/mingw32.exe就是控制台了,可以把它看成linux终端
2、获取编译工具链toolchain
https://github.com/espressif/ESP8266_RTOS_SDK
在这个仓库下面说明中有地址,注意选择版本
解压,获得xtensa-lx106-elf这样一个目录,(esp32是xtensa-esp32-elf)
建议将xtensa-lx106-elf扔到msys32/opt下面
3、获取SDK
git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK
–recursive是一并拉取所有依赖的子模块
但是,由于github非常慢,经常失败,特别是子模块拉取,即便你拆分成如下:
git clone https://github.com/espressif/ESP8266_RTOS_SDK
cd ESP8266_RTOS_SDK
git submodule update --init
依然会失败,报错如下:
Cloning into 'F:/ESP/ESP8266/ESP8266_RTOS_SDK/components/mbedtls/mbedtls'...
fatal: unable to access 'https://github.com/espressif/mbedtls.git/': Failed to connect to github.com port 443: Timed out
fatal: clone of 'https://github.com/espressif/mbedtls.git' into submodule path 'F:/ESP/ESP8266/ESP8266_RTOS_SDK/components/mbedtls/mbedtls' failed
Failed to clone 'components/mbedtls/mbedtls'. Retry scheduled
Cloning into 'F:/ESP/ESP8266/ESP8266_RTOS_SDK/components/mbedtls/mbedtls'...
fatal: the remote end hung up unexpectedly
error: RPC failed; curl 7 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
fatal: clone of 'https://github.com/espressif/mbedtls.git' into submodule path 'F:/ESP/ESP8266/ESP8266_RTOS_SDK/components/mbedtls/mbedtls' failed
Failed to clone 'components/mbedtls/mbedtls' a second time, aborting
对于能科学上网的,下面可以跳过。
解决办法:偷梁换柱(使用gitee)
如果已经从github获取了SDK,可以跳过1,2步
1,将https://github.com/espressif/ESP8266_RTOS_SDK仓库从github导入到gitee
2,git clone https://gitee/xxx/ESP8266_RTOS_SDK拉取代码到本地
3,打开ESP8266_RTOS_SDK/.git/config
4,submodule下面的github地址就是各个模块的仓库地址,依次将这些仓库导入到gitee
5,修改config,每个模块的github地址改成导入后的gitee的地址
6,cd ESP8266_RTOS_SDK
7,git submodule update --init //拉取模块
成功如下:
Cloning into 'F:/ESP/ESP8266/ESP8266_RTOS_SDK/components/mbedtls/mbedtls'...
Submodule path 'components/coap/libcoap': checked out 'cfec0d072c5b99ed3e54828ca50ea2f6b91e1f50'
Submodule path 'components/json/cJSON': checked out '3c8935676a97c7c97bf006db8312875b4f292f6c'
Submodule path 'components/lwip/lwip': checked out '4fd84abace0cd8a5a709c194fa54afb3cd39b3f7'
Submodule path 'components/mbedtls/mbedtls': checked out '9ef92c551eb8d92677034c3ec8078a8076febf41'
Submodule path 'components/mqtt/esp-mqtt': checked out '01594bf118ae502b5a0ead040446f2be75d26223'
4、设置环境
1,进入msys32/etc/profile.d,
2,编辑esp32_toolchain.sh(不要双击,这是可运行脚本文件),改成类似如下:
# This file was created by ESP-IDF windows_install_prerequisites.sh
# and will be overwritten if that script is run again.
export PATH="/opt/xtensa-lx106-elf/bin:$PATH"
export IDF_PATH="F:\ESP\ESP8266\ESP8266_RTOS_SDK"
(#开头是注释,不用管)
别直接复制,要根据你的路径修改
PATH是你下载的xtensa-lx106-elf/bin路径。
IDF_PATH路径是你SDK路径:
A、F:\ESP\ESP8266\ESP8266_RTOS_SDK,这里用的是windows格式路径
B、假如你的SDK在home/you name/esp/下面,也可以用export IDF_PATH="~/esp/ESP8266_RTOS_SDK"
(不会linux的,建议用windows格式路径)
5、编译
这里简单写一下
1.拷贝ESP8266_RTOS_SDK\examples\get-started\hello_world例程到msys32/home/xx/esp/
2.运行mingw32.exe
3.cd esp
4.cd hello_world
5.make menuconfig
6.修改serial port,比如COM3
7.保存 退出
8.make
9.make flash
(10.make monitor)