【操作指南】联网设备的烧录授权
前言
在开发过程中,烧录授权一直使人头疼,本文就专门针对联网设备中的不同烧录授权方式和烧录授权中可能会遇到的问题进行一个介绍。
在烧录授权中我们可以将其分为两个部分:烧录和授权,烧录的作用是将固件烧录到设备中使其能够运行;只有经过涂鸦授权的设备才能够连上涂鸦云,使用涂鸦云提供的相关能力。
关于烧录的介绍
烧录的两种方式:
使用涂鸦提供的工具(生产解决方案 > 云模组)进行烧录(需提前将固件上传到IoT 平台);
使用原厂工具烧录;
关于授权的介绍
授权的两种方式:
使用涂鸦提供的上位机工具(生产解决方案 > 云模组)进行授权;
通过代码将授权信息(UUID,Authkey)写入;
一个授权码(UUID,Authkey)只能供一个设备使用,如果多个设备使用同一个授权码,在这些设备激活时,仅一个设备可激活成功。所以我们在使用通过代码将授权信息写入的方式进行授权时,就要为不同的设备准备不同的固件了。使用涂鸦上位机进行授权时,上位机会为每个设备分配唯一的授权码。
在授权过程中会遇到 生产凭证,激活码清单,生产凭证-仅授权 这些名词,如果你对其概念不是很清楚的话,你可以点击
查看这篇文章。
提示:一个设备经过授权后,只要授权信息没有被擦除或破坏,授权是一直存在的,不需要每次烧录后就再去授权一下的。
工具的获取方式
在烧录授权过程中,我们需要使用到的工具获取的方式如下:
如何获取原厂烧录工具
在您使用 Tuya Wind IDE 下载好产品开发包后,对应的原厂烧录工具放在下载的产品开发下的 pc/tools/芯片平台名称 目录中。
如何获取生产解决方案工具
打开涂鸦智慧生产管理系统,注册账号并登录(后面生产解决方案登录的也是这个账号);
在左侧导航栏,选择 知识库管理 > 软件下载;
在搜索框内输入 生产解决方案,单击 搜索;
单击 操作 栏的 下载,下载 生产解决方案;
常用烧录授权方式
通过对上面烧录授权方式的总结,可以看到一般我们常用烧录授权方式有以下三种:
上位机烧录授权一体式(需要提前将固件上传到云端才能使用上位机进行烧录,生产阶段常用);
原厂工具烧录+上位机仅授权;
原厂工具烧录+通过代码写入授权信息(无需上位机相关操作,开发调试阶段常用);
下文我们将针对如何使用涂鸦上位机进行烧录授权一体化操作、原厂烧录工具的使用和通过代码的方式进行授权这三部分进行一个介绍。
云模组工具烧录授权
在使用云模组工具进行烧录授权时,你需要下列顺序进行操作:
- 上传编译好的固件到涂鸦IoT平台,点击查看如何上传固件;
- 获取生产凭证,点击查看如何获取生产凭证;
- 打开 生产解决方案 > 云模组,输入生产凭证,进行烧录授权。
如何使用云模组工具进行烧录授权可以参考下图步骤进行操作:
再点击运行后,重启模组即可进行烧录授权。在使用云模组工具进行烧录授权时的一般连线的方式和使用原厂烧录工具的连线方式是一致的,如果您在使用云模组工具无法进行烧录的话,您可以查看产品开发包中的 pc/tools/芯片平台名称 目录下的 README 文档确认模组和串口工具的连线是否正确。
如果在这一步您需要仅授权,无需烧录,你可以依次点击云模组工具的左上角 文件 > 设置 > 只授权 > 确认 ,即可打开仅授权模式。
原厂工具烧录
在对应的 TuyaOS 的产品开发包下载完成后,您可以直接去 pc/tools/芯片平台名称 目录下获取对应的原厂烧录工具,查看README.md 文档了解如何使用原厂烧录工具进行烧录。
通过代码进行授权
在使用代码进行授权,需要我们注意的是,通过代码的方式将授权信息写入到 flash 中,仅适用于开发阶段,正式生产中不可使用。
通过调用接口将 UUID 和 Authkey 写入到加密 Flash 的相关代码如下:
Code: Select all
#include "tuya_iot_wifi_api.h"
#define UUID "tuyaxxxxxxxxxxxxa4c6"
#define AUTHKEY "GPwIxxxxxxxxxxxxxxxxxxxxxxxx1maj" // 这里的 UUID, Authkey 是无效的!!!
WF_GW_PROD_INFO_S prod_info = {UUID, AUTHKEY};
ws_db_init_mf();
op_ret = tuya_iot_set_wf_gw_prod_info(&prod_info);
if (OPRT_OK != op_ret) {
PR_ERR("tuya_iot_set_gw_prod_info err:%d", op_ret);
}
tuya_iot_set_wf_gw_prod_info() 函数将 UUID 和 AuthKey 写入到加密 flash 中的。ws_db_init_mf() 函数是用来初始化加密 flash 的,该函数的调用应该在 tuya_iot_wf_soc_dev_init() 函数之前。
关于通过代码的方式进行授权的更多细节,您可以查看产品开发包中的 software/TuyaOS/apps/tuyaos_demo_quickstart 示例。
UUID 和 Authkey 的获取方式可以点击查看相关文档,这里需要注意的是我们应选择 授权码清单 (如下图)。
FAQ
- 获取 token 失败,没有操作权限
输入生产凭证后点击确认,出现 获取 token 失败:没有操作权限 的提示。
解决办法:
登录 涂鸦 PMS 系统,选择 生产管理 > 工单管理 > 生产凭证确认,输入生产凭证,并单击 确认。之后,回到 云模组 工具中输入该生产凭证,单击 确认,即可解决。
- 抢总线失败错误
可能其它软件占用了烧录使用的串口。
解决办法:
关闭占用该串口的软件,或重新插拔对应的串口工具。 - 获取固件指纹错误
模组内烧录的固件名称或版本号与上位机中输入的生产凭证拿到的固件名称或版本号不一致。
解决办法:
确保模组内烧录的固件名称和版本号与上位机中使用生产凭证拿到的固件名称和版本号一致。 - 进入产测失败
设备累计联网时长超过 15 分钟后,会关闭产测功能。在烧录授权过程中,如果出现 进入产测失败 的错误,并且日志中有 have actived over 15 min, not enter mf_init 字样的日志打印,说明设备关闭了产测功能,导致无法进入产测。
解决办法:
通过在代码中调用忽略产测关闭标志的函数进行解决该问题。但需要注意的是在正式生产的固件中不应包含该代码,仅供开发调试阶段使用。
调用 mf_test_ignore_close_flag() ; 函数,忽略产测关闭标志,从而避免因为产测关闭而无法通过授权。 - 更多烧录授权相关问题,可点击查看烧录授权问题-TuyaOS-涂鸦开发者