SDK 的使用流程如图 1-1 所示。
图 1-1 流程概览
ESP8266 HDK (Hardware Development Kits) 包括芯片 ESP8266EX、模组 ESP-WROOM-02 和开发板 ESP-LAUNCHER等。您可以使用乐鑫官方的 ESP-WROOM-02 或 ESP-LAUNCHER 下载编译好的固件。
说明:
ESP8266 SDK (Software Development Kits) 是乐鑫为开发者提供的 IOT 应用开发平台,包括基础平台以及上层应用开发示例,如智能灯、智能开关等。
SDK 的基础平台按照是否基于操作系统可分为: Non-OS 和 RTOS 两种版本。
Non-OS SDK 是不基于操作系统的 SDK,提供 IOT_Demo 和 AT 的编译。Non-OS SDK 主要使用定时器和回调函数的方式实现各个功能事件的嵌套,达到特定条件下触发特定功能函数的目的。Non-OS SDK 使用 espconn 接口实现网络操作,用户需要按照 espconn 接口的使用规则进行软件开发。
RTOS SDK 基于 FreeRTOS,在 Github 上开源。
ESP8266 FW (Firmware) 是一些可直接下载到 ESP8266 HDK 中的 BIN 文件,您可以选择下载 FOTA (Firmware Over-The-Air 支持云端升级) 和 Non-FOTA (不支持云端升级) 的 BIN 文件,具体如表 1-1 所示。
表 1-1. ESP8266 FW
文件列表 | 是否必选 | 说明 | Non-FOTA | FOTA |
master_device_key.bin | 可选 | 用户在 Espressif Cloud 申请,依此享受乐鑫云端服务。 | ||
esp_init_data_default.bin | 必选 | 初始化射频参数,在 SDK 根目录中提供。 | ||
blank.bin | 必选 | 初始化射频参数,在 SDK 根目录中提供。 | ||
eagle.flash.bin | 必选 | 主程序,编译代码生成。 | ||
eagle.irom0text.bin | 必选 | 主程序,编译代码生成。 | ||
user1.bin | 初次使用必选 | 主程序,编译代码生成。 | ||
user2.bin | 升级时使用 | 主程序,编译代码生成。 |
说明:
编译 ESP8266 SDK 需要使用 Linux 操作系统,若您使用 Windows 操作系统,建议您使用 VirtualBox 作为 ESP8266 虚拟机。为了简化您的编译操作,乐鑫已将编译 SDK 所需要的工具安装到虚拟机中。您只需安装虚拟机,并导入 ESP8266 编译器 (OVA 镜像文件) 即可直接编译 ESP8266 SDK。
FLASH DOWNLOAD TOOL 工具是由乐鑫官方开发的固件下载工具,用户可根据实际的编译方式和 Flash 的容量,将多个 BIN 文件一键下载到 ESP8266 母板(开发板或者模组)的 SPI Flash 中。
串口调试工具可以通过标准 RS-232 端口直接与 ESP8266 建立通信。对于不带有物理串口的 PC ,可以使用 USB 转串口模块来虚拟出一个串口设备。
用户可以直接在串口终端输入命令和实时查看相关打印信息。
说明:
建议使用 CoolTerm (Windows 和 Mac 系统) 和 Minicom (Linux 系统) 作为串口调试工具。
您可以选择使用如表 2-1 所示的两种方案中的任意一种。
表 2-1. 硬件准备
开发板方案 |
|
模组方案 |
|
或者 |
|
预装 Windows 系统的 PC 机
注意:
ESP8266 Wi-Fi 模块需要保证 3.3 V 电源和最少 500 mA 的电流。
1. 用 USB 数据线将 PC 机与 ESP-LAUNCHER 的 USB-UART 接口相连。
2. 将开发板置为下载模式。
步骤 | 结果 |
注意: ESP-LAUNCHER 上的 J82 跳针需要用跳线帽短接,否则无法下载。 |
3. 将 USB 转 TTL 串口模块与 PC 机连接。
说明:
请安装正确的、可被 PC 识别的 USB 转 TTL 串口模块驱动。
4. 将电源开关 (Power Switch) 拨到内侧给开发板上电。
5. 将芯片开关 (Chip Switch) 拨到外侧给芯片上电。
6. 通过下载工具 (ESP8266 FLASH DOWNLOAD TOOL) 将固件下载到 Flash 中。
说明:
关于如何下载固件,请参考“第 4 章 Flash 布局”和“第 6 章 下载固件”。
7. 下载完毕后将 GPIO0 开关 (GPIO0 Control) 拨到外侧将 ESP-LAUNCHER 开发板置为工作模式。
8. 使用芯片开关 (Chip Switch) 给芯片重新上电,芯片初始化时会从 Flash 中读取程序运行。
更多 ESP-LAUNCHER 的硬件信息,请参考《ESP8266 硬件描述》。
1. 将 ESP-WROOM-02 的如表 2-2 所示的管脚引出。
表 2-2. ESP-WROOM-02 的管脚
管脚名称 | 管脚状态 | 实物图 |
EN | 上拉 | |
3V3 | 3.3 V 供电(VDD) | |
IO15 | 下拉 | |
IO0 | UART 下载模式:下拉; FLASH 启动模式:悬空/上拉 |
|
GND | GND | |
RXD | UART 下载的接收端 | |
TXD | UART 下载的发送端,悬空/上拉 |
2. 按照图 2-1 用杜邦线将 ESP-WROOM-02 和 USB 转 TTL 串口模块连接。
图 2-1. ESP-WROOM-02 下载模式
3. 将 USB 转 TTL 串口模块与 PC 机连接。
4. 通过下载软件 (ESP8266 FLASH DOWNLOAD TOOL) 将固件下载到 Flash 中。
说明:
关于如何下载固件,请参考“第 4 章 Flash 布局”和“第 6 章 下载固件”。
5. 下载完毕后将 ESP-WROOM-02 切换为工作模式。
将 IO0 悬空或者上拉。
6. 重新上电,芯片初始化时会从 Flash 中读取程序运行。
说明:
IO0 管脚为内置高电平,更多 ESP-WROOM-02 的硬件信息,请参考《ESP8266 硬件描述》和《ESP-WROOM-02 技术规格表》。
您可以在如下路径下载 Non-OS SDK(包括应用示例)。
http://www.espressif.com/en/support/download/sdks-demos
Non-OS SDK 软件包中的内容如图 3-1 所示。
图 3-1. Non-OS SDK 内容
您可以在如下路径下载 SDK 及其应用示例 (ESP8266_IOT_PLATFORM) 。
https://github.com/espressif/ESP8266_RTOS_SDK
https://github.com/espressif/ESP8266_IOT_PLATFORM
RTOS SDK 软件包中的内容如图 3-2 所示。
图 3-2. RTOS SDK 内容
说明:
您可以将 project_template 文件夹复制到任意目录,如:~/workspace。
请在如下链接中下载 VirtualBox。
https://www.virtualbox.org/wiki/Downloads
说明:
请根据您的主机配置选择合适的 VirtualBox 版本。
请在如下链接中下载编译器 ESP8266_lubuntu_20141021.ova at:
百度: https://pan.baidu.com/s/1dEOw8bZ
下载密码: v81b
Google: https://drive.google.com/folderview? id=0B5bwBE9A5dBXaExvdDExVFNrUXM&usp=sharing
请在如下链接下载 FLASH DOWNLOAD TOOL。
http://www.espressif.com/support/download/other-tools.
本章分别介绍 Non-FOTA 与 FOTA 固件在不同容量 Flash 中的布局。您可以根据实际情况修改。
Flash 布局如图 4-1 所示。
Non-FOTA
FOTA
图 4-1. Flash 布局图
说明:
关于 ESP8266 的固件请参考 ”1.3 节 ESP8266 FW“。
说明:
对于不同容量的 Flash,eagle.irom0text.bin 的存储上限值均为 200 kB。您可以通过修改ESP8266_NONOS_SDK/ld/eagle.app.v6.ld 文件来改变 eagle.irom0text.bin 的上限值。
即修改文件中 irom0_0_seg 参数的 len 字段,如图 4-2 中红色标示。
不同版本 SDK 中 irom0.text 文件的地址也不同。用户必须查阅 eagle.app.v6.ld 文件,确保将eagle.irom0.text.bin 下载到正确的地址。图 4-2 中蓝色标示即为 eagle.irom0.text.bin 的地址。
图 4-2. irom0.text 的地址
不同的 Flash 容量,len 的值和修改后 eagle.irom0text.bin 的存储上限值如表 4-1 所示。
表 4-1. Non-FOTA Flash 布局(单位:kB)
Flash 容量 | eagle.flash.bin | eagle.irom0text.bin | 用户数据 | len | 用户/系统参数 |
512 | ≤ 64 | ≤ 240 | ≥ 176 | 0x3C000 | 16 |
1024 | ≤ 64 | ≤ 752 | ≥ 176 | 0xBC000 | 16 |
2048 | ≤ 64 | ≤ 768 | ≥ 176 | 0xC0000 | 16 |
4096 | ≤ 64 | ≤ 768 | ≥ 176 | 0xC0000 | 16 |
说明:
ESP8266 目前系统程序区最大支持 1024 kB。
Non-FOTA 固件的下载地址如表 4-2 所示。
表 4-2. Non-FOTA 的下载地址(单位:kB)
BIN | 各个 Flash 容量对应的下载地址 | |||
512 | 1024 | 2048 | 4096 | |
master_device_key.bin | 0x3E000 | |||
esp_init_data_default.bin | 0x7C000 | 0xFC000 | 0x1FC000 | 0x3FC000 |
blank.bin | 0x7E000 | 0xFE000 | 0x1FE000 | 0x3FE000 |
eagle.flash.bin | 0x00000 | |||
eagle.irom0text.bin | 0x10000 |
FOTA 的固件布局如表 4-3 所示。
表 4-3. FOTA Flash 布局(单位:kB)
Flash 容量 | boot | user1.bin | user2.bin | 用户/系统参数 | 用户数据 |
512 | 4 | ≤ 236 | ≤ 236 | 16 | ≥ 0 |
1024 | 4 | ≤ 492 | ≤ 492 | 16 | ≥ 0 |
2048 (分区 1 = 512) | 4 | ≤ 492 | ≤ 492 | 16 | ≥ 1024 |
2048 (分区 1 = 1024) | 4 | ≤ 1004 | ≤ 1004 | 16 | ≥ 0 |
4096 (分区 1 = 512) | 4 | ≤ 492 | ≤ 492 | 16 | ≥ 3072 |
4096 (分区 1 = 1024) | 4 | ≤ 1004 | ≤ 1004 | 16 | ≥ 2048 |
FOTA 固件的下载地址如表 4-4 所示。
表 4-4. FOTA 的下载地址(单位:kB)
BIN 文件 | 各个 Flash 容量对应的下载地址 | |||||
512 | 1024 | 2048 | 4096 | |||
512+512 | 1024+1024 | 512+512 | 1024+1024< | |||
master_device_key.bin | 0x3E000 | 0x7E000 | 0x7E000 | 0xFE000 | 0x7E000 | 0xFE000 |
esp_init_data_default.bin | 0x7C000 | 0xFC000 | 0x1FC000 | 0x3FC000 | ||
blank.bin | 0x7E000 | 0xFE000 | 0x1FE000 | 0x3FE000 | ||
boot.bin | 0x00000 |
|||||
user1.bin | 0x01000 | |||||
user2.bin | 0x41000 | 0x81000 | 0x81000 | 0x101000 | 0x81000 | 0x101000 |
说明:
说明:
说明:
若选择下载 FOTA 固件,则需要修改。
1. 进入 Windows 系统。
2. 根据不同的Flash 布局修改 ESP8266_NONOS_SDK/examples/IoT_Demo/include 中的文件。
修改的值如表 5-1 所示。
表 5-1. 修改 include 文件中的字段(单位:kB)
默认值 (512) |
修改后的值 | |||||
512 | 1024 | 2048 (512+512) |
2048 (1024+1024) |
4096 (512+512) |
4096 (1024+1024) |
|
0x3C | - | 0x7C | 0x7C | 0xFC | 0x7C | 0xFC |
0x3D | - | 0x7D | 0x7D | 0xFD | 0x7d | 0xFD |
说明:
若 Flash 容量为 512 kB,则不需要修改。
1. 进入 Linux 系统。
2. 运行虚拟机桌面上的终端工具 LXTerminal。
3. 复制待编译文件至虚拟机共享目录。
步骤 | 结果 |
|
4. 加在共享目录。
步骤 | 结果 |
|
注意:
若您使用 RTOS SDK,请继续执行步骤 6; 若您使用 Non-OS SDK,请跳过步骤 6。
5. 设置路径变量,指向 SKD 和 BIN 文件。
1
|
export SDK_PATH=~/share/ESP8266_RTOS_SDK
|
说明:
您可以将其添加在 .bashrx 文件中,否则每次重启编译器都需要重复步骤 6。
1. 在终端切换到 /share/ESP8266_NONOS_SDK/app 目录。
1
2
|
cd /home/esp8266/Share/ESP8266_NONOS_SDK/app
./gen_misc.sh
|
系统显示如下提示信息。
1
2
|
gen_misc.sh version 20150511
Please follow below steps(1-5) to generate specific bin(s):
|
2. 如图 5-1 所示,按系统提示根据实际情况选择相应选项。
图 5-1. 编译 SDK
说明:
3. 编译成功后系统显示生成的 BIN 文件及其下载到 Flash 中的地址,如下所示。
1
2
3
4
|
Generate user1.2048.
new
.3.bin successfully in folder bin/upgrade. boot.bin------------>0x00000
user1.2048.
new
.3.bin--->0xSupport boot_v1.2 and +
01000
!!!
|
说明:
您可以进入 /home/esp8266/Share/ESP8266_NONOS_SDK/bin 目录检查生成的 BIN 文件。
对于 ESP8266_NONOS_SDK_v0.9.4 及之前版本软件,FOTA 的编译步骤如下。
1. 执行 ./gen_misc_plus.sh 1,在 /ESP8266_NONOS_SDK/bin/upgrade 路径下生成 user1.bin。
2. 执行 make clean 清除之前的编译信息。
3. 执行./gen_misc_plus.sh 2,在 /ESP8266_NONOS_SDK/bin/upgrade 路径下生成 user2.bin。
说明:
1. 进入 Windows 系统。
2. 双击 ESP_DOWNLOAD_TOOL.exe 打开 Flash 工具。
图 6-1. ESP8266 DOWNLOAD TOOL - SPIDownload
SPIDownload | 适用于 SPI Flash 的下载。 |
HSPIDownload | 适用于 HSPI Flash 的下载。 |
RFConfig | 射频初始化设置。 |
MutiDownload | 适用于多个母板的下载。 |
3. 在 Download Path Config 区域内双击 选择需要下载的 BIN 文件,在 ADDR 内设置相应的下载地址。
4.配置 SPIDownload 相关选项。
说明:
下载文件与地址根据 SPI Flash 的容量及实际的使用需求而不同,具体信息可参考“第 4 章Flash 布局”。
表 6-1. SPIDownload 配置说明
配置项 | 配置说明 |
SPI FLASH CONFIG | |
CrystalFreq | 根据实际选用的晶振型号选择晶振频率。 |
CombineBin | 将勾选的 BIN 文件合成一个 target.bin,下载地址为 0x0000。 |
Default | 将 SPI Flash 的配置恢复到默认值。 |
SPI SPEED | 选择 SPI Flash 的读写速度,最大值为 80 MHz。 |
SPI MODE | 根据实际使用的 Flash 选择对应的模式。如果 Flash 采用 Dual SPI,选择 DIO 或 DOUT;如果 Flash 采用 Quad SPI,选择 QIO 或 QOUT。 注意: 若用户使用 ISSI Flash,请参考“附录-配置 ISSI Flash QIO 模式”。 |
FLASH SIZE | 根据实际编译的配置对应选择的 Flash 大小。 |
SpiAutoSet | 不建议勾选 SpiAutoSet,推荐用户根据实际情况对 Flash 进行手动配置。 用户如果了勾选 SpiAutoSet,下载工具将会按照默认的 Flash map 下载,16 Mbit 和 32 Mbit 的 Flash map 会被设置为 512 Kbyte +512 Kbyte。 |
DoNotChgBin |
|
Download Panel | |
START | 点击 START 开始下载。当下载结束后,左边绿色状态显示 完成。 |
STOP | 点击 STOP 停止下载。 |
MAC Address | 下载成功后,系统会显示 ESP8266 STA 和 ESP8266 AP 的 MAC 地址。 |
COM PORT | 选择 ESP8266 的 COM 端口。 |
BAUDRATE | 选择下载的波特率,默认为 115200。 |
5. 下载完成后,在 ESP-LAUNCHER 开发板上将 GPIO0 Control 拨到外侧,并重新上电,可进入运行模式。
下载固件后,您可以使用串口调试工具查看终端打印信息。
您需要配置串口调试工具的以下选项。
表6-2.串口调试配置
配置项 | 配置说明 |
协议类型 | 串口 |
端口号 | 根据实际连入的设备所在的端口号设置。 |
波特率 | 设备运行时的波特率,与设备晶振有关。
ESP8266 AT 示例默认支持 115200 波特率,用户不可修改。 ESP8266 IOT Demo 及其他示例默认为 74880 波特率,用户可以修改。 |
数据位 | 8 |
校验 | 无 |
流控 | 无 |
若下载 ESP8266 IOT Demo 固件,在运行模式下,系统显示如下初始化信息,如 SDK 的版本信息等,并在最后显示“finish”字样,代表固件正常运行。
1
2
3
4
5
6
|
SDK version:X.X.X(e67da894) IOT VERSION = v1.0.5t45772(a)
reset reason: 0
PWM version : 00000003
mode : sta(18:fe:34:a4:8c:a3) + softAP(1a:fe:34:a4:8c:a3) add if0
add if1
finish
|
若下载 ESP8266 AT固件或者使用开发板或者模组中默认的固件,在运行模式下,系统的打印信息末尾显示“Ready”字样。在终端输入指令“AT”,系统显示“OK”,代表固件正常运行。
说明:
因 AT 固件强制设置波特率为 115200,与 ESP8266 默认的波特率 74880 不符,因此系统初始化的信息会显示为乱码,只要最后显示“Ready”字样,均为正常情况。
关于 AT 指令,请参考《ESP8266AT 指令集》。
在下载之前,用户可以进入 RF InitConfig 页签修改射频初始化设置,生成的esp_init_data_setting.bin 可代替 esp_init_data_default.bin 下载到 Flash 中。射频初始化设置包括 RF InitConfig 选项设置和 RF InitConfig 数据设置两部分。
图 6-2. ESP8266 DOWNLOAD TOOL - RF InitConfig
RF InitConfig 选项如图 6-2 的上半部分,配置说明如表 6-3 所示。
表 6-3. RF InitConfig 选项设置
配置项 | 配置说明 |
TxTargetPowerConfig | 用户无需配置,会根据 LowPowerMode 中的配置项而变化。 |
LowPowerMode | 根据实际情况进行低功耗模式的配置。
说明: LowPowerEn 和 PowerLimtEn 不能同时配置。 |
CrystalFreq | 根据实际选用的晶振型号选择晶振频率。 说明: 若在下载时选择了不同的选项,会覆盖该设置。 |
TOUT PinConf | 根据实际情况进行 TOUT 管脚的配置,建议保持默认设置。
注意:
|
FreqOffset |
|
RFInt mode | 用户可选择射频的初始化行为:
|
RF InitConfig 参数如图 6-2 的下半部分,参数说明如表 6-4 所示。
表 6-4. RF InitConfig 参数设置
配置项 | 配置说明 |
A | 代表 esp_init_data_setting.bin (0~127 字节) 文件中的字节,如 A = 0 代表esp_init_data_setting.bin 文件中的 0 字节。 |
B | 配置项的名称,标示为 Reserved 不能修改。 |
C | 配置项的名称,标示为 Reserved 不能修改。 |
D | 配置项的数据类型。包括无符号数 (unsigned) 和有符号数 (signed)。 |
E | 配置项的十六进制值。 |
注意:
请勿修改标识为 Reserved 的参数。
下面介绍如何修改112 ~114 字节的参数,初始设置如图 6-3 所示。
图 6-3. 112 ~114 字节参数
修改 RF 初始化参数
114 字节用于控制 ESP8266 上电时 RF 的初始化,参数设置如表 6-5 所示。
说明:
ESP8266_NONOS_SDK_V1.5.3 和 ESP8266_RTOS_SDK_V1.3.0 及之后版本支持。
表 6-5. 修改 RF 初始化参数
114 字节默认值为 1。
RF 初始化做 VDD33 和 TX power CAL,耗时约 18 ms,初始电流较小。
配置项 | 配置说明 |
114 字节 = 0 | RF 初始化仅做 VDD33 校准,耗时约 2 ms,初始电流最小。 |
114 字节 = 1 | 114 字节默认值为 1。 RF 初始化做 VDD33 和 TX power CAL,耗时约 18 ms,初始电流较小。 |
114 字节 = 2 | 同“114 字节 = 0”。 |
114 字节 = 3 | RF 初始化进行全部 RF CAL,耗时约 200 ms,初始电流较大。 |
修改频偏
112 字节和 113 字节是与频偏相关的参数,参数设置如表 6-6 所示。
说明:
ESP8266_NONOS_SDK_V1.4.0 和 ESP8266_RTOS_SDK_V1.3.0 及之后版本支持。
表 6-6. 修改频偏参数
配置项 | 配置说明 |
112 字节,默认值为 0。 | |
bit 0 | 拥有 112 字节的最高优先级。
|
bit 1 | 值为 0 表示 bbpll 为 168 M,可修改正或负频偏。 此功能可能影响数字外设的正常工作,不建议使用。 值为 1 表示 bbpll 为 160 M,可修改正频偏。 |
{bit 3,bit 2} | 值为 0 表示内部自测且跟踪修改频偏,初始修改频偏为 0;值为 1 表示强制修改频偏为 113 字节的值,不再跟踪修改频偏;值为 2 表示内部自测且跟踪修改频偏,初始修改频偏为 113 字节的值。 |
113 字节,默认值为 0。 | |
113 字节 | 是强制修改频偏时的频偏数据,或者跟踪修改频偏时的初始频偏数据,数据类型为 sign int8,单位为 8 kHz。 |
112 字节和 113 字节需要根据客户的具体需求设置,举例如下。
1. 只在常温下工作的模组,不需要修改频偏。
2. 只在常温下工作的模组,不需要内部自测且跟踪修改频偏,但是本身频偏较大,可使用强制修改频偏。
3. 工作温度在 -40 度到 125 度之间变化,类似彩灯的应用,需要内部自测且跟踪修改频偏,但是常温时本身频偏较小,不需要设置初始频偏。
4.工作温度在 -40 度到1 25 度之间变化,类似彩灯的应用,需要内部自测且跟踪修改频偏,但是常温时本身频偏较大,需要设置初始频偏。
一般建议客户参考上述例三的设置。
设置完成后,点击 GenInitBin 按键,生成esp_init_data_setting.bin。
用户也可以点击 Default 按键恢复默认值,或点击 LoadInitBin 按键,选择导入一个 BIN 文件进行参数配置。
注意:
下载时,务必选择 DIO 或 DOUT 模式,否则会报错,此时无需修改 BIN 文件。
因 ISSI Flash和 MXIC Flash 状态寄存器的特殊性,如需使用 ISSI Flash 和 MXIC Flash 的 QIO 模式,则需要修改 blank.bin 的前 2 个字节,如表 I-I 所示。当 ESP8266 启动时会检查 blank.bin 的前 2 个字节,自动切换为 QIO 模式读 ISSI_FLASH 或 MXIC_FLASH。blank.bin 文件的结构如下。
1
2
3
4
5
6
7
8
9
|
strcut
boot_hdr{
char
//low_bit
user_bin:2;
char
boot_status:1;
char
to_qio:1;
char
reverse:4;
//low bit
char
test_pass_flag:1;
char
test_start_flag:1;
char
enhance_boot_flag:1;
|
表 I-I. blank.bin 配置项
配置项 | 配置说明 |
不使用二级 boot | 修改 to_qio 为 0。 |
使用二级 boot | 修改 use_bin 为 0,to_qio 为 0。修改 version 为当前 boot 版本。 举例: 如使用二级 boot_v1.5.bin,修改 blank.bin 的前两个字节 FF FF 为 F4 E5。 |