ESP8266 系统环境搭建

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

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克隆

Copygit 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 末尾添加

Copyexport IDF_PATH="G:/IOT/ESP8266/ESP8266\_RTOS\_SDK"

使用source命令使之生效

Copysource ~/.bash_profile

下载其他工具

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

Copy$ 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中添加环境变量:

Copyexport 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执行到该目录下,运行

Copymake menuconfig

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

烧录

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

Copymake flash

报错:

Copy子模组 '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。修改波特率方法:

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

4. 使用VSCODE做开发环境

终端和编译

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T4I1kpGE-1654922870353)(https://secure2.wostatic.cn/static/hjzfcGNFmQfiYPfULP5uMG/image.png)]

Copy    "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)也行的

Copyexport LANG="en\_Us"

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

库设置

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

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

首先增加配置文件,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mG7B6F9T-1654922870355)(https://secure2.wostatic.cn/static/3sq2WKRYxtgJG9gmjcvhD4/image.png)]

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

Copy"includePath": ["${workspaceFolder}/**""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", "E:/labs/esp8266/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/8.4.0/include"
],

想要查看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++ - 查看引入库位置,所需的是下面红框所示库目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hw5IB3EB-1654922870356)(https://secure2.wostatic.cn/static/3hVriazaA83Edjpjzjyefg/image.png)]

这样就可以跳转了。

总结

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

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

参考

  • 搭建 ESP8266 开发环境(windows)
  • 用乐鑫国内镜像构建ESP8266_RTOS_SDK开发环境
  • 亿佰特E103-W01 ESP8266EX UART串口转WiFi模块
  • ESP32开发 解决VS Code 中 make menuconfig 乱码问题
  • 2 个步骤为 VSCode 配置工程头文件路径!
  • [解决]VSCode在Linux下导入c语言头文件警告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无线网络配置

转载于:https://www.cnblogs.com/lingxzg/archive/2013/02/09/2909606.html

Java编程之反射中的注解详解

“注解”这个词&#xff0c;可谓是在Java编程中出镜率比较高&#xff0c;而且也是一个老生常谈的话题。我们之前在聊Spring相关的东西时&#xff0c;注解是无处不在&#xff0c;之前我们简单的聊过一些“注解”的相关内容&#xff0c;比如在Spring中是如何进行“注解”组合的。…

SCCM 2012 R2实战系列之十三:辅助站点部署

由于最近几个月一直处于AD升级项目中&#xff0c;很久没有更新SCCM的技术文档了。SCCM 2012中的辅助站点部署方法还是比较特别的&#xff0c;需要注意的地方也非常多&#xff0c;今天跟大家分享辅助站点的具体部署和配置方法。1. 前提条件加入域环境 安装IIS组件安装BITS和远程…

DevOps落地实践点滴和踩坑记录-(1)

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

asp中日期时间函数介绍

date() 获取日期&#xff0c;格式&#xff1a;2004-2-28 time() 获取时间&#xff0c;格式&#xff1a;22:24:59 now() 获取日期和时间 格式&#xff1a; 2005-5-2 22:37:30 ddate() 获取年份&#xff1a;year(d) 获取月份&#xff1a;month(d) 获取日子&#xff1a;day(…

2014年度优秀员工代表发言稿

2019独角兽企业重金招聘Python工程师标准>>> 尊敬的各位领导和亲爱的同事们&#xff0c;大家好&#xff01; 作为优秀员工代表在这里发言&#xff0c;我很感谢刘总、周总、李总、漆总以及公司各层领导的信任和支持&#xff01;我感到十分荣幸&#xff0c;同时也感到…

[转] 我回答了90%的面试题,为什么还被拒?

这篇文章是在买买提上 FQ看到的&#xff0c;很受启发&#xff0c;特意转载于此。 原文地址: http://www.mitbbs.com/article_t/JobHunting/32327557.html 交流面试的时候&#xff0c;经常有朋友会问一个问题&#xff1a;我正确回答了90%的面试题&#xff0c;为什么被拒&#xf…

无需另配定时器在STM32 HAL下实现微秒级延时(兼容FreeRTOS)

目录前言一、代码部分二、使用和验证1.引入头文件2.初始化3.使用和验证三、可移植性总结前言 接触HAL库差不多两年了&#xff0c;一直苦于HAL库没有自带微秒级的延时&#xff0c;网上的前辈们给出的解决方案要么是改写HAL_Delay的延时时间&#xff0c;要么就是额外占用一个定时…

×××S 2012 交互式报表 -- 同步交互式排序

S 2012 交互式报表 -- 同步交互式排序步骤1&#xff1a;首先&#xff0c;在刚才的“交互式排序”示例报表中再拖拉一个“Chart”&#xff0c;设置为长条图&#xff0c;从报表数据窗口中将销售金额、销售数量拖至“Values”&#xff0c;将产品大类拖放至“Category Groups”区域…

SpringCloud GateWay 万字详解

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Debug和Release 老程序啊 调试之前 区分一下啊

...转载于:https://www.cnblogs.com/Early-Bird/p/6909536.html

我是怎样成长为系统架构师的

来这家公司从事信息化工作已经也有三个年头了&#xff0c;有必要对这三年的工作和成长以及不足之处做一个总结。在此之前&#xff0c;从2001年開始学习JAVA&#xff0c;那时候用Struts的开发的企业也不多&#xff0c;而我在的做项目的企业当时已经自己开发了Struts的高速开发平…

STM32 HAL 硬件IIC+DMA+简单图形库控制OLED

目录前言一、建立工程二、编写和移植前期准备驱动部分修改三、使用和验证结论&#xff08;2022年1月22日重制&#xff09;本文主要是移植带简单图形库的程序&#xff0c;如果只是实现DMA控制&#xff0c;建议看【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动…

python创建分类器小结

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

SPOJ 1676 矩阵乘法+DP

题意&#xff1a; 给定N (1 ≤ N ≤ 10)个长度不超过6的单词,求由大写字母组成长度为L的包含至少一个给定单词的字符串有多少种,答案 mod 10007,(1 ≤ L ≤ 10^6)。 题解&#xff1a; 这个题最早是在一个关于trie图的论文中看到了&#xff0c;最近jzh又讲到了这个题&#xff0c…

Java并发编程实战

程序等待某个同步IO操作完成&#xff0c;CPU将处于空间状态。 线程安全---多个线程交替访问某个类&#xff0c;调用方不需做任何的同步&#xff0c;这个类始终表现出正确的行为 不共享变量变量是不可变访问变量使用同步synchronized除了实现原子性&#xff08;确定临界区&#…

spring mvc ModelAndView向前台传值

今天在做项目的时候遇到一个问题&#xff0c;把第一个页面保存的id传到第三个页面中去用&#xff0c;原来是在controller层加了一个全局变量控制的&#xff0c;可是后来发现这个变量实现不了我要的功能&#xff0c;于是查了一下&#xff0c;原来ModelAndView这个类有个构造方法…

go-zero微服务实战系列(三、API定义和表结构设计)

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

mongo经验总结

http://wenku.baidu.com/view/7c279cbfc77da26925c5b0e4.html转载于:https://www.cnblogs.com/yuechaotian/archive/2013/02/19/2916692.html

STM32 串口DMA接收 Openmv / K210 整数、小数字符串数据 (基于HAL库)

目录前言一、工程配置二、串口DMA部分代码1.源文件UART_DMA.c2.头文件UART_DMA.h3.stm32f1xx_it.c的修改4.串口收发DMA测试三、字符串数字提取代码1.源文件NumAndStr.c:2.头文件NumAndStr.h:3.测试:四、Openmv / K210 发送、STM32接收测试总结修订版本UART_DMA.cUART_DMA.h平台…