(ESP8266 V3.1平台)
**

版本: V1.0

本SDK是基于乐鑫ESP8266 SDK v3.1,封装了对接天猫精灵开放平台相关功能, 如天猫精灵闪连,精灵云鉴权和语音控制,以及OTA功能等等,以协助模组和设备厂快速开发相关产品并对接到天猫精灵平台,模组和设备厂只需适配相应硬件。

一. 获取乐鑫原厂SDK

github连接:https://github.com/espressif/ESP8266_RTOS_SDK
使用的tag: v3.1
Wi-Fi SDK用户手册 - 图1
具体命令:
git clone https://github.com/espressif/ESP8266_RTOS_SDK
cd ESP8266_RTOS_SDK
git checkout v3.1
git branch
注意:请确认是在v3.1的tag。

二. 合并Wi-Fi SDK

1. 包格式

Wi-Fi SDK用户手册 - 图2
Note:本SDK预编译的库名为 libaiot_out.a, 其它修改到的原厂库部分也可自行编译

2. 合并SDK

2.1. 将vendor_sdk.patch应用到SDK中
命令:

  1. cd ESP8266_RTOS_SDK
  2. patch -p1 < esp8266_v31_pkg/vendor_sdk.patch

Wi-Fi SDK用户手册 - 图3
2.2. 将aiot_header.tar.bz2 解压到 SDK inlcude目录下
命令:

  1. cd ESP8266_RTOS_SDK
  2. tar -xvf esp8266_v31_pkg/aiot_header.tar.bz2 -C ./components

Wi-Fi SDK用户手册 - 图4

2.3. 将示例aiot_demo.tar.bz2 解压到 SDK examples目录下
命令:

  1. cd ESP8266_RTOS_SDK
  2. tar -xvf esp8266_v31_pkg/aiot_demo.tar.bz2 -C ./examples


Wi-Fi SDK用户手册 - 图5

3. 编译

根据解压编译器的位置将编译环境导入到PATH环境变量
export PATH=/opt/xtensa-lx106-elf/bin:$PATH

  • 进入到 examples/aiot_demo 下执行 sh gen_misc.sh
  • 生成的image位于 SDK examples/aiot_demo/build目录:

镜像:aiot_demo.bin
分区表:partitions_2MB.bin
bootloader: bootloader/bootloader.bin

三. 根据品类申请三元组并写入

三元组是在生产时烧入设备中安全区域(如efuse),不应该以明文存于Flash中。
本示例是演示测试时如何将测试三元组写入代码中调试功能。

1. 申请三元组

在天猫精灵开放平台上根据产品品类申请
https://open-iot.tmall.com

2. 替换代码中三元组

2.1. 打开编译宏定义
在awifi_sdk_interfaces.h中设置如下宏定义为1
#define DEBUG_WRITE_NEW_THREE_ELEMENT_INFO 1

2.2. 修改代码中固化的三元组信息
其中vid信息(图中2159 / 3059),修改为 1000。
Wi-Fi SDK用户手册 - 图6

2.3. 在esp_user_task确认调用 global_set_mac_addr()
2.4. 编译代码后烧录启动,板子三元组就烧录成申请到的三元组

四. 镜像烧写

1. 镜像分区

0x0000 bootloader.bin
0x8000 partitions_2MB.bin
0x10000 aiot_demo.bin

2. 镜像烧写方式

镜像烧写方式分两种:

  • windows用上位机烧写
  • linux用python脚本命令行烧写

2.1. 上位机UI烧写方式
推荐使用原厂提供的命令行烧写方式。

2.2. linux命令行烧写方式
编译完成后,乐鑫原厂的编译日志会提示烧写命令
执行 make flash或者下面的命令(该命令会在编译log里面,如有疑问可以咨询乐鑫原厂)
Wi-Fi SDK用户手册 - 图7

五. 编译OTA固件与升级

1. OTA image结构

ESP8266平台OTA image的结构如下:

2. OTA 升级全部节点流程

Wi-Fi SDK用户手册 - 图8

3. 如何编译生成用于OTA的ota_all.bin

当前使用阿里提供的relase包里面aiot_demo程序中的gen_misc.sh编译,默认会自动生成ota_all.bin。
背后的原理是:gen_misc.sh中变量 ota_gen_bin_mode:

  • ota_gen_bin_mode=1 生成user1
  • ota_gen_bin_mode=2 生成user2
  • ota_gen_bin_mode=3 生成user1、user2和ota_all.bin

4. 上传镜像到IoTServer的方法

目前上传到IoTServer接口测试中,权限未开放,暂时由阿里的接口人代为上传。需要提供如下5个信息:
(1)三元组的ProductID
(2)测试使用的天猫精灵绑定的淘宝用户名
(3)升级设备的mac地址
(4)OTA升级的特殊版本号


Wi-Fi SDK用户手册 - 图9

5. 设置编译版本号

在系统初始化流程中调用aick_set_dev_version函数进行设置,可通过aick_get_dev_version获取设置后的值。
bool aick_set_dev_version(char ver);
const char
aick_get_dev_version(void);

例子:
//ota upgrade version set
ret = aick_set_dev_version(DEV_VERSION);
if (false == ret) {
printf(“set dev version failed\n”);
}
printf(“awifi dev version:%s\n”, aick_get_dev_version());
注意事项:
版本号的长度限制为32字节。超出后会被截断。

六. 配网重置

当前配网重置功能的实现方式是:
需要擦除flash,原厂提供的方式是:
python /home/aliiot/workspace/wifi/build/SDK_ESP8266_V31/components/esptool_py/esptool/esptool.py —port /dev/ttyUSB0 —baud 115200
如有疑问可以咨询乐鑫原厂。

七. 其它

请预先安装好乐鑫编译环境,如有问题请参考乐鑫github安装https://github.com/espressif/ESP8266_RTOS_SDK/tree/v3.1