大家好,我是程序员小哈,又到了知识分享时间,今天我给大家介绍一下如何编译ESP8266的官方SDK,如果对你有所帮助的话,还请文末点赞支持一下哈。

问题由来

之前网文分享的时候,有网文留言,能否做一个 STM32–>ESP8266->OneNET 的Demo。

esp8266 sdk 环境_人工智能

要想解决这个问题,我们可以使用ESP8266通过串口AT指令连接OneNET平台,这种方式我们只需要将ESP8266烧写通用的AT固件即可。

或者我们也可以使用MQTT协议接入OneNET,这种方案的话,就需要我们在ESP8266中烧写一个定制的固件了,ESP8266官方有自己的SDK,在其基础上开发可以事半功倍,所以今天我们先来了解一下,如何编译官方提供的SDK。

乐鑫官方SDK下载

ESP8266是乐鑫的产品,乐鑫提供了两个版本的SDK,一个是RTOS版本的,一个是无操作系统版本的。

我们今天以ESP8266_NONOS_SDK为例,看一下它的编译环境完整配置过程。

SDK下载链接如下:

esp8266 sdk 环境_开发工具_02

ESP8266开发工具清单

基于ESP8266做开发,我们一般都是选用安信可的开发工具,我们可以在如下链接获取ESP8266的开发工具清单,这是一个基于Eclipse的IDE,利用它可以编辑和编译ESP8266的固件。

https://docs.ai-thinker.com/tools

esp8266 sdk 环境_esp8266 sdk 环境_03

AiThinkerIDE 开发工具安装方法

我们选用最新版的IDE(1.5版本),具体安装方法可以参考安信可官方安装的博文,具体如下图中文档中所示。

esp8266 sdk 环境_开发工具_04

我的安装目录如下(默认):

esp8266 sdk 环境_物联网_05

一路下一步,默认安装。

IDE安装完毕之后,我们导入工程:

esp8266 sdk 环境_物联网_06

修改工程设置

编译工程之前首先要先对项目属性进行设置,鼠标选中项目名称右键点击,在右侧菜单中选择 Properties --> C/C++ Build --> Builder Settings 中添加编译规则,我们选用的ESP8266模块是 32Mbit的模块,所以填写: make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6

make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6

Properties --> C/C++ Build --> Builder Settings 中编写待编译工程的路径,比如我们编译移动到根目录下的 esp_mqtt_proj 工程。

${workspace_loc:/ESP8266_NONOS_SDK-3.0.4}/esp_mqtt_proj

esp8266 sdk 环境_物联网_07

然后,鼠标选中项目名称右键菜单中先 Clean Project ,再 Build Project

如果系统中事先没有安装Java运行环境,我们编译工程会报错:

esp8266 sdk 环境_固件_08

安装和配置JAVA开发环境

把准备好的JDK:jdk-8u221-windows-x64.exe 安装到本机上(最好安装在纯英文路径下)。

在控制台中输入:java -version ,直接就能输出java的版本,说明系统直接就可以找到java的安装路径了,我们也就不用设置系统环境变量了(如果不能输出Java的版本信息,则需要手动设置系统环境变量)。

esp8266 sdk 环境_物联网_09

Clean Project ,再次Build Project

esp8266 sdk 环境_固件_10

编译完出现如下提示,代表编译通过:

esp8266 sdk 环境_固件_11

该文件 \ESP8266_NONOS_SDK-3.0.4\bin\upgradeuser1.4096.new.6.bin ,即为编译输出的固件文件,一会需要将此文件下载至ESP8266模块中。

注意

  • 控制台只查看 Console 的输出即可,其他标签页的内容忽略即可。
  • 可以先安装java环境,然后再安装AIThinkerIDE开发环境。

硬件连接

只需要将ESP8266模块上的MicroUSB与一个MicroUSB线相连即可,注意这根MicroUSB线要选择有数据线的,个别MicroUSB线内部只有电源线,没有数据线。

esp8266 sdk 环境_固件_12

ESP8266固件下载

使用ESP8266的官方Flash Download Tools工具下载固件。

这种方式是通用的固件下载方式,烧写其他固件的话,一般也可以采用此种方式。

esp8266 sdk 环境_固件_13

一般固件提供厂商都会提供若干待烧写文件及一个说明,告诉你各个文件对应的烧写地址。

而SpiFlashConfig中的配置,一般跟你选用的ESP8266模块的型号有关,选错选项,可能会导致输出信息为乱码。

本文编译的ESP8266固件下载配置的参数如下图所示:

esp8266 sdk 环境_物联网_14

固件下载完毕,我们重启模块,我们在串口助手中看到下面输出了Hello World by XiaoHaGe!

esp8266 sdk 环境_esp8266 sdk 环境_15

这些内容正好跟下面我们代码中添加的打印输出一致,说明我们成功更新了ESP8266的固件。

esp8266 sdk 环境_esp8266 sdk 环境_16

其他

Eclipse修改字体

esp8266 sdk 环境_固件_17

Eclipse 字体有两处,一处是控制台的字体,一处是主窗口。我们这里需要修改主窗口的字体:

Window -> Preferences -> General -> Appearance -> Colors and Fonts -> C/C++ -> C/C++ Editor Text Font -> Edit 调节主窗口字体大小。

esp8266 sdk 环境_物联网_18

设置完之后的效果:

esp8266 sdk 环境_物联网_19