1

ESP8266 系统环境搭建 - 姜小豆

 2 years ago
source link: https://www.cnblogs.com/warcraft/p/16364238.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 前言#

因为ESP8266/ESP32这个开发环境没少折腾,是真没见过这么难搞又不清晰的环境。

简单开发可以使用Arduino IDE ,这个平台还是挺好的。开发使用Arduino的函数库,很高效。
不过我还是不习惯,比如示例中binker demo的LED_BUILTIN,都不能跳转到定义,不喜欢。现在来正经搭建一个8266的环境。其实挺简单的,只是一直没找对地方。

在其他博主那发现官方文档: ESP8266_RTOS_SDK Programming Guide ,我是个对知识的检索有强迫症的人,不知道从哪找到的这个链接就浑身不舒服,最后找到在官网文档下 esp8266分类下的入门指南链接。

531421-20220610181056757-1548605.png

搭建开发环境的具体步骤是:工具链、获取SDK、配置(如果想用IDE的话还应有IDE的配置)。

开发过程的四个步骤是:

  • 配置项目并编写代码
  • 编译项目并链接,以构建应用程序
  • 烧录到ESP8266
  • 调试和监控

2. 开发环境的搭建#

2.1 工具链获取

Windows 一体化工具链和 MSYS2 zip 文件:

https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip

本来打算用git bash 自带的mingw呢,结果make阶段提醒要使用 mingw32下的msys。结果治好乖乖用官网提供的一体化工具了。

之后的命令都是在 MINGW32.exe 下执行的。

2.2 SDK克隆#

git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git

一定要加上 recursive 循环下载子模块,我没有加,结果后面会在make的时候才下载其他库,还下载不下来。

我加上这个参数后,发现下载的是特别慢,挂了工具都慢,等了好久终于下载完成。另一个选择是用gitee下载SDK(不用recursive下载子模块),再用一个工具下载子模块,参考:用乐鑫国内镜像构建ESP8266_RTOS_SDK开发环境

实在想不通乐鑫看重海外市场,把国内生态怎么做得不咋好。

2.3 配置#

注:工具链使用环境变量 IDF_PATH 访问SDK目录,在 ~/.bash_profile 末尾添加

export IDF_PATH="G:/IOT/ESP8266/ESP8266_RTOS_SDK"

使用source命令使之生效

source ~/.bash_profile

下载其他工具

ESP8266编译和烧录基于Python实现,需要安装python的库。

$ python -m pip install -r $IDF_PATH/requirements.txt

到这里,环境配置就完成了。不不不

ESP8266专有工具链设置

一体化环境是为了ESP32设置的,ESP8266还需要下载特定的工具链,这个官网文档或者RTOS说明中也有链接:

v8.4.0

https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip

如果您还在使用旧版本 SDK(< 3.0),请使用工具链 v4.8.5,如下:

https://dl.espressif.com/dl/xtensa-lx106-elf-win32-1.22.0-88-gde0bdc1-4.8.5.tar.gz

下载第一个之后,解压。然后.bash_profile中添加环境变量:

export PATH="$PATH:/G/IOT/ESP8266/xtensa-lx106-elf/bin"

如果这里没配置ESP8266专有工具链,make配置后会出现提醒:

GENCONFIG
make:xtensa-lx106-elf-gcc:命令未找到

3. 开发过程#

项目配置

将sdk中的examples/git-startd/hello_world复制出去,用mingw32执行到该目录下,运行

make menuconfig

会看到下面界面:做一些配置(串口,波特率等)

531421-20220610181143403-156253910.png

531421-20220610181218319-2020940156.png

烧录

只设置了端口号和flash(本来是4M,烧录时候报错,设置为2M成功了)之后,再使用编译和烧录命令

make flash
子模组 'components/json/cJSON'(https://github.com/DaveGamble/cJSON.git)未对路径 'components/json/cJSON' 注册
正克隆到 '/g/IOT/ESP8266/ESP8266_RTOS_SDK/components/json/cJSON'...
fatal: unable to access 'https://github.com/DaveGamble/cJSON.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
fatal: 无法克隆 'https://github.com/DaveGamble/cJSON.git' 到子模组路径 '/g/IOT/ESP8266/ESP8266_RTOS_SDK/components/json/cJSON'
克隆 'components/json/cJSON' 失败。按计划重试
正克隆到 '/g/IOT/ESP8266/ESP8266_RTOS_SDK/components/json/cJSON'...

这是因为从github下载一些模块没有成功,网上有两种解决方案。一是手动下载并放到对应目录,二是调大http.postBuffer的值。我用了第一种,解决编译时又报另外一个错,遂用第二种。发现还是不行,去查为什么会却库,发现克隆SDK 时没有加 recursive参数循环下载子模块。

烧录成功后。

可以用make monitor监视串口:

531421-20220610181238358-1710860492.png

hello_world,就打印出了CPU核数,外部Flash大小2M。

用make monitor 看数据是正常的,用其他串口工具看到的是乱码,原来这里默认的波特率不是115200,是74800。修改波特率方法:

531421-20220610181301645-1688070875.png

到这里环境就搭建完成了。明天再去公司搭一套,整理&记录一下问题。

使用VSCODE做开发环境#

终端和编译

vscode右键工作区→在集成终端打开替换为mingw32。需要更改用户设置,或者当前工作区的设置(在.vscode/settings.json)

    "terminal.integrated.shell.windows":"D:\\Software\\esp32_win32_msys2_environment_and_toolchain-20181001\\msys32\\msys2_shell.cmd",
    "terminal.integrated.shellArgs.windows": ["-defterm", "-mingw32", "-no-start", "-here"]

make menuconfig时乱码:

文件\msys32\etc\profile.d\esp32_toolchain.sh 新增语言配置:(zh_Cn)也行的

export LANG="en_Us"

之后就可以在终端下流畅地使用make了。

库设置

现在vscode下看代码,是没有关联库的,所以函数和头文件都跳不了

531421-20220610181349758-754606496.png

头文件分为两类,如图所示,一类是系统库stdio.h等,一类就是 RTOS中的库。

首先增加配置文件,

在 incluPath中添加这两类库:我的配置如下,第一个是RTOS库,后面三个是系统gcc使用的库(两个星号表示目录递归查找)

"includePath": [
    "E:/labs/esp8266/ESP8266_RTOS_SDK/components/**",

    "E:/labs/esp8266/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/8.4.0/**",
    "E:/labs/esp8266/xtensa-lx106-elf/xtensa-lx106-elf/sys-include" ,
    "E:/labs/esp8266/xtensa-lx106-elf/xtensa-lx106-elf/include", 
    "${workspaceFolder}/**"
    
],

想要查看gcc包含的文件,通过命令gcc -v -E -x c++ - ,因为make时发现gcc使用的是Toolchain path: /E/labs/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc,所以应该使用/E/labs/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -v -E -x c++ - 查看引入库位置,所需的是下面红框所示库目录

这样就可以跳转了。

总结#

环境搭建折腾了好久。得总结一下,给迷茫的其他人一些指引。

需要的软件和库:msys2工具链(也可以自己安装,但还是建议用官方提供的)、8266特有工具链、RTOS的库(克隆很麻烦,其实需要的几个组件可以一一下载并放到指定目录即可)。配置就是把8266和RTOS库的路径配置到环境变量中(.bash_profile)。接着烧录运行即可。现在看起来不算麻烦,但过程中真折磨人。

参考


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK