注:(RTL8710BN平台)
**

版本:V1.1

本SDK是基于Realtek SDK “sdk-ameba-v4.0c_gcc ” ,封装了对接天猫精灵开放平台相关功能, 如天猫精灵闪连,天猫精灵APP Smart Config,精灵云鉴权和语音控制,以及OTA功能等等,以协助模组和设备厂快速开发相关产品并对接到天猫精灵平台,模组和设备厂只需适配相应硬件。

一. 获取Realtek SDK与安装编译环境

联系Realtek获取SDK “00010536-sdk-ameba-v4.0c_gcc.zip”
将SDK解压缩后,Linux下编译器位于: sdk-ameba-v4.0c_gcc/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
将其解压到 /opt/cross_amebaz/, 解压成功后如下图:
Wi-Fi SDK用户手册 - 图1

二. 合并Wi-Fi SDK包

1.包格式

Wi-Fi SDK用户手册 - 图2
Note:本SDK预编译的库名为 libaiot.a, 其它原厂库预编译库暂无修改

2.合并SDK

2.1. 将vendor_sdk.patch应用到SDK中 (patch -p1 < rtl8710bn_pkg/vendor_sdk.patch)
Wi-Fi SDK用户手册 - 图3
2.2. 将libaiot.a 拷贝到sdk-ameba-v4.0c_gcc/component/soc/realtek/8711b/misc/bsp/lib/common/GCC/libaiot.a

2.3. 将aiot_header.tar.bz2 解压到 sdk-ameba-v4.0c_gcc/component/common/application/ 目录下, 解压后目录是sdk-ameba-v4.0c_gcc/component/common/application/aiot/include
Wi-Fi SDK用户手册 - 图4
2.4. 将示例aiot_demo.tar.bz2 解压到sdk-ameba-v4.0c_gcc/project目录下,解压后目录是 sdk-ameba-v4.0c_gcc/project/aiot_demo**
Wi-Fi SDK用户手册 - 图5

3. 编译

进入sdk-ameba-v4.0c_gcc/project/aiot_demo/GCC_RELEASE,执行 make
生成的image: sdk-ameba-v4.0c_gcc/project/aiot_demo/GCC_RELEASE/application/Debug/bin/image2_all_ota1.bin

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

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

1. 申请三元组

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

2. 替换代码中三元组

2.1. 将烧写三元组的宏打开,改为1
Wi-Fi SDK用户手册 - 图6

2.2. 修改代码中默认的三元组信息
Wi-Fi SDK用户手册 - 图7
其中vid信息(图中3059),请修改为1000。

2.3. 编译代码后烧录启动,板子三元组就烧录成申请到的了
Note: 烧写成功后,将烧写宏关闭

在SDK 0.4.2 版本中新增了AT命令用于三元组烧录测试,方便调试时使用,格式如下:
AT3E=”1366 71fb58c6054b62f97d9fbc990765ce92 78da07faab03”

四. 编译OTA固件与升级

1. OTA image结构

8710平台OTA image的结构如下:
Wi-Fi SDK用户手册 - 图8

2. OTA 升级全部节点流程

Wi-Fi SDK用户手册 - 图9

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

ota_all.bin的生成需先编译8710的user1(OTA1) 然后编译user2(OTA2),在编译user2的时候会自动生成ota_all.bin。
通过修改aiot_demo/GCC_RELEASE下面的application.mk中的ota_index值指定:
ota_index = 1 编译user1(OTA1)
ota_index = 2 编译user2(OTA2)

4. 上传镜像到IoTServer的方法

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

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) {
DiagPrintf(“set dev version failed\n”);
}
DiagPrintf(“awifi dev version:%s\n”, aick_get_dev_version());
注意事项:
版本号的长度限制为32字节。超出后会被截断。

五. 其它

  • 该示例基于Realtek 8710BN开发板,推荐2MB Flash及以上
  • 示例中Restore default GPIO和 LED(反映开关功能) GPIO定义如下,可按照硬件作相应修改:

define GPIO_LED_PIN PA_18
#define GPIO_IRQ_PIN PA_25