1. 前言

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

简单开发可以使用Arduino IDE ,这个平台还是挺好的。开发使用Arduino的函数库,很高效。

不过我还是不习惯,比如示例中binker demo的LED_BUILTIN,都不能跳转到定义,不喜欢。现在来正经搭建一个8266的环境。其实挺简单的,只是一直没找对地方。

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

搭建开发环境的具体步骤是:工具链、获取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

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

烧录

只设置了端口号和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监视串口:

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

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

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

使用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下看代码,是没有关联库的,所以函数和头文件都跳不了

头文件分为两类,如图所示,一类是系统库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)。接着烧录运行即可。现在看起来不算麻烦,但过程中真折磨人。

参考

ESP8266 系统环境搭建的更多相关文章

  1. spark集群搭建(三台虚拟机)——系统环境搭建(1)

    !!!该系列使用三台虚拟机搭建一个完整的spark集群,集群环境如下: virtualBox5.2.Ubuntu14.04.securecrt7.3.6_x64英文版(连接虚拟机) jdk1.7.0. ...

  2. Mac Arduino ESP8266 ESP32 搭建开发环境

    目录 1.安装Arduino 2.搭建开发板管理器 3.可能出现的错误 1.安装Arduino Arduino下载. 官方下载地址:Arduino官方网站 Arduino中文社区:下载地址 安装方式: ...

  3. Centos7下GlusterFS 分布式文件系统环境搭建

    Centos7下 GlusterFS 环境搭建准备工作glusterfs-3.6.9.tar.gzuserspace-rcu-master.zip三台服务器:192.168.133.53.192.16 ...

  4. Spring Security + OAuth系统环境搭建(一)

    最近在做权限管理系统的重构工作,系统基于Spring Security + OAuth架构,整体架构.技术和之前调研的结果差不多,架构调研时有在这篇博客做过简单记录“Spring Cloud微服务下的 ...

  5. win10 ubuntu18双系统环境搭建

    感谢前辈辛勤总结,根据这3篇文章成功配置了双系统 https://blog.csdn.net/qq_24624539/article/details/81775635 https://blog.csd ...

  6. C语言快速入门一:win10系统环境搭建

    0.搭建环境:WIN10 64位 1.下载minGW.zip编译器 2.解决上述文件,配置环境变量 3.配置变成后验证:打开cmd命令行,输入gcc -v 提示以下内容,说明编译器安装成功 D:\mm ...

  7. OAuth2.0分布式系统环境搭建

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 介绍 OAuth(开放授权)是一 ...

  8. linux系统环境搭建

    一.安装jdk 参考帖子 用yum安装JDK(CentOS) 1.查看yum库中都有哪些jdk版本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [r ...

  9. 系统 --- Linux系统环境搭建

    Linux命令介绍 软硬链接 作用:建立连接文件,linux下的连接文件类似于windows下的快捷方式 分类: 软链接:软链接不占用磁盘空间,源文件删除则软链接失效 硬链接:硬链接只能链接不同文件, ...

随机推荐

  1. VUE-SSR原理和使用

    开篇N问 SSR解决了什么问题?SSR存在那些问题?SSR优点缺点是什么如何使用以及原理 自我总结了有如下优势 -  SSR利于seo优化,因为实现了在node中解析vue,将实例渲染成一个字符串直接 ...

  2. java生成多级菜单树

    使用java实现一个多级菜单树结构 先上数据库 ps_pid字段很重要,是父级菜单的id Menu类 Menu类要新增一个字段,用来存放子菜单 /** * 子菜单列表 */ private List& ...

  3. 使用JQGrid中可见列并存入Cookie

    引入js与css <link href="~/Content/js/jquery-ui/jquery-ui.min.css" rel="stylesheet&quo ...

  4. 各系统升级openssh

    修订号: [V1.0] 修订人: [陈土锋] 修订日期: [2019.06.04] 前言 该文档只适用用于服务器Redhat,centos,Ubuntu和suse系统的openssh升级.需要注意必须 ...

  5. bootStrap简要和学习笔记

    bootStrap简要和学习笔记前端在学些了html.css.JavaScript三件套后,我们感觉前端变数太多了,需要创造力来设计一些可能经常使用的界面啊.按钮样式啊等,也就有了一些前端的框架,那何 ...

  6. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了

    本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...

  7. JavaWeb和WebGIS学习笔记(四)——使用uDig美化地图,并叠加显示多个图层

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  8. JVM调优篇

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 一般JVM调优,重点在于调整JVM堆大小.调整垃圾回收器 jv ...

  9. 流量录制回放工具jvm-sandbox-repeater入门篇——服务部署

    趋于当前技术不断更新.产品功能多元化之下,流量回放的热度也是越来越高. 在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater 我个人就先尝试一下,期间还是遇到一 ...

  10. goland设置import规范

    import 规范 引入了三种类型的包,标准库包,第三方包,程序内部包,建议采用如下方式进行组织你的包: 有顺序的引入包,不同的类型采用空格分离, 第一种标准库 第二是第三方包 第三是项目包. 在项目 ...