版本: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.包格式
Note:本SDK预编译的库名为 libaiot.a, 其它原厂库预编译库暂无修改
2.合并SDK
2.1. 将vendor_sdk.patch应用到SDK中 (patch -p1 < rtl8710bn_pkg/vendor_sdk.patch)
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
2.4. 将示例aiot_demo.tar.bz2 解压到sdk-ameba-v4.0c_gcc/project目录下,解压后目录是 sdk-ameba-v4.0c_gcc/project/aiot_demo**
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
2.2. 修改代码中默认的三元组信息
其中vid信息(图中3059),请修改为1000。
2.3. 编译代码后烧录启动,板子三元组就烧录成申请到的了
Note: 烧写成功后,将烧写宏关闭
在SDK 0.4.2 版本中新增了AT命令用于三元组烧录测试,方便调试时使用,格式如下:
AT3E=”1366 71fb58c6054b62f97d9fbc990765ce92 78da07faab03”
四. 编译OTA固件与升级
1. OTA image结构
8710平台OTA image的结构如下:
2. OTA 升级全部节点流程
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升级的特殊版本号
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定义如下,可按照硬件作相应修改: