固件开发完成后,需要将固件和授权码烧录到设备内,才可以连接云服务。涂鸦提供多种烧录授权方式供您使用,您可在不同的开发阶段选择合适的烧录授权方式。

一. 方案介绍

1.1 烧录授权一体方案

烧录授权一体方案指的是 烧录 和 授权 都通过 涂鸦云模组烧录授权平台 实现,涂鸦云模组烧录授权平台已经集成了涂鸦标准芯片的烧录软件,您需要将固件按规范传到 涂鸦 IoT 平台,然后获取 授权码 (生产凭证) 进行烧录授权。

1.2 烧录授权分立方案

烧录授权分立方案适用于 开发调试阶段 或 涂鸦云模组烧录授权平台 未集成芯片的烧录软件 时,您可使用芯片烧录软件进行固件烧录,根据授权方式的不同可分为以下两种情况:

  • 自行写入授权码:涂鸦以 MS Excel 文件形式提供 授权码 (授权码清单),您需要将其写入固件实现授权,然后通过芯片烧录软件完成烧录授权。
  • 使用涂鸦上位机写入授权码:您需要将固件按规范传到 涂鸦 IoT 平台,获取 授权码 (生产凭证-仅授权) 后即可通过 涂鸦云模组烧录授权平台 完成授权,通过芯片烧录软件进行固件烧录。

二. 固件上传

如果选择通过 涂鸦云模组烧录授权平台 进行授权,需要先在 涂鸦 IoT 平台 的【硬件开发】页面上传固件。

  1. 新增固件。进入产品【硬件开发】页面,单击下图中的【新增自定义固件】。
  2. 填写固件信息。(点击各条目的 “?” 图标查看填写说明)
  • 固件标识名:必须与 步骤 3 中配置的固件标识名保持一致;
  • Flash 大小:可以在 模组规格书 的产品概述中找到;

填写完成后点击【生成固件 KEY】,如果提示【标识名已存在】,则需重新填写新的标识名。固件标识名具有 唯一性,不可与已创建的固件重复,可根据产品规格或个人喜好进行命名,例如【芯片平台+产品类型+产品特性+厂商标识名/个人姓名缩写】。

蓝牙通讯开发python_蓝牙通讯开发python

  1. 配置固件。打开 SDK 中 tuya_ble_sdk_demo\app 路径下的 tuya_ble_sdk_demo.h 文件,修改 产品 ID 、固件标识名 和 固件版本号,固件标识名必须与 步骤 2 中填写的 保持一致。固件版本的定义可以参考 固件版本说明,蓝牙单点固件的版本号一般采用 bv.sv (0.0~99.99) 格式,对应于代码中 TY_DEVICE_FVER_NUM 的低 16 位,比如版本号为 1.10 时,TY_DEVICE_FVER_NUM 为 0x0000010A (00 00 01 0A)。
/* 将“xxxxxxxx”替换为在涂鸦IoT平台上创建的产品的PID */
#define TY_DEVICE_PID         "xxxxxxxx"

/* 修改固件名称和版本号,上传固件时填写的信息需与这里一致 */
#define TY_DEVICE_FIR_NAME    "ble_module_sdk_development_demo"
#define TY_DEVICE_FVER_NUM    0x00000001
#define TY_DEVICE_FVER_STR    "0.1"

打开 SDK 中 tuya_ble_sdk_demo\app 路径下的 tuya_ble_sdk_test.h 文件,将 TUYA_BLE_SDK_TEST 的值修改为 0,以关闭测试模式;

/* 将 1 修改为 0,关闭测试模式 */
#define TUYA_BLE_SDK_TEST     0
  1. 生成固件。对修改后的代码进行编译,生成用于烧录的固件。对于 TLSR825x 平台而言,代码编译前建议对工作区文件进行刷新后再编译,编译生成的固件为 ble_sdk_multimode\8258_module\8258_module.bin。
  2. 新增固件版本。在 步骤 2 生成 固件 KEY 后,可以看到【当前版本】中提示【!无生产版本】,点击下方的【新增固件版本】进入【上传固件】页面。
  3. 上传固件。(点击各条目的 “?” 图标查看填写说明)
  • 固件版本:必须与 步骤 3 中配置的固件版本 保持一致。
  • 生产固件:用于传递给工厂烧录的固件文件。
  • 用户区固件:用于传递给工厂烧录的固件文件。
  • 升级固件:用于固件升级 (OTA) 的固件文件,首次上传固件时可忽略。对于 TLSR825x 平台而言,生产固件、用户区固件、升级固件均为 8258_module\8258_module.bin。

蓝牙通讯开发python_驱动开发_02

如果是在 步骤 2 直接点击【上传固件】进入 步骤 6 的,那么可能会在点击【保存】后才提示【标识名已存在】,可以点击【返回上一步】回到 步骤 2 所示页面,修改固件标识名,同时要修改 本地固件 中的标识名。然后再点击【上传固件】进入 步骤 6 所示页面,并将鼠标移至已上传的 8258_module.bin 上,点击右侧出现的 删除 图标,再上传新的固件。

  1. 进行固件上架。
  2. 设置上架内容和上架范围后上架固件。
  3. 固件管理。可在左侧导航栏【固件管理】中找到固件,点击【详情】可查看更多固件信息。

三. 授权码获取

3.1 模组

在【硬件开发】页面选择好云模组后即可获取授权码,操作步骤如下:

  1. 点击【立即购买】进入 购买详情 页。(新用户可免费申请 2 个授权码,参考步骤 5)
  2. 设置 数量 后,点击【立即购买】进入 订单信息确认 页面,确认信息无误后 提交订单 完成购买。
  3. 如果仅购买授权码,可点击右上角“×”号退出模组的 购买详情 页,并在 通用备货采购 页面选择 授权码-通用版 进行购买。该页面也可通过左侧导航栏的 采购 - 采购商品 - 生产研发采购 中进入。
  4. 在 购买详情 页设置 产品 和 交付形式 后完成授权码购买。

蓝牙通讯开发python_物联网_03

蓝牙通讯开发python_固件_04

  1. 如果选择 “免费领取 2 个激活码”,在 免费领取授权码 页面设置好 交付形式 后下单即可。
  2. 订单提交后,可在 采购 - 订单管理 - 采购订单 中进入 调试样品&样品订单 页面,下载产品对应的授权码。

3.2 三明治开发板

如果使用 涂鸦三明治开发板 进行开发,获取授权码的步骤如下:

  1. 进入 三明治开发板 管理界面,绑定开发板。
  2. 单击【申请新的授权码】,选择对应的 产品 后,单击【确定】即可获得授权码。

如果申请失败并提示“您需要先申请到烧录软件专门的账号”,请先在 涂鸦PMS 系统 注册页面完成账号申请,申请的手机号 (账号) 要与 IoT 平台的手机号 (账号) 保持一致。

四. 固件烧录授权

在烧录授权之前,请确认是否已按照 第 3 课:环境搭建 中的方法准备好了以下烧录环境:

  • 已注册了 PMS 账号;
  • 已安装了 生产解决方案 和 原厂烧录软件 ( BTU模组:Telink BDT );
  • 已准备了安装有 涂鸦蓝牙模组的 的 开发板 、芯片专用烧录器 和 USB 转串口工具。

下面根据授权码的三种交付形式进行固件烧录授权的操作步骤说明。

4.1 生产凭证

  1. 将 开发板 与 USB 转串口工具 及 烧录器 (Telink) 连接。

有些芯片平台只需要连接 USB 转串口工具,TLSR825x 芯片平台必须两个都连接!

  1. 打开 生产解决方案 软件,登录 PMS 账号。
  2. 点击 云模组 进入 涂鸦云模组烧录授权平台。
  3. 选择 端口号,输入 生产凭证,工位选择 烧录授权。
  4. 点击 运行 完成烧录授权。

4.2 授权码清单

  1. 将 开发板 与 烧录器 (Telink) 连接。
  2. 从授权码清单中选取一组 uuid、authkey 和 mac 地址 填入 tuya_ble_sdk_demo.h 中的对应位置。
#define TY_DEVICE_PID         "xxxxxxxx" /* PID */
#define TY_DEVICE_MAC         "xxxxxxxx" /* mac */
#define TY_DEVICE_DID         "xxxxxxxx" /* uuid */
#define TY_DEVICE_AUTH_KEY    "xxxxxxxx" /* authkey */
  1. 在 tuya_ble_sdk_demo.c 中的将初始化参数 use_ext_license_key 和 device_id_len 分别修改为 1 和 DEVICE_ID_LEN (即 16),以使上述授权码生效。
static tuya_ble_device_param_t tuya_ble_device_param = {
    .use_ext_license_key = 1,             /* 1-info in tuya_ble_sdk_demo.h, 0-auth info */
    .device_id_len       = DEVICE_ID_LEN, /* DEVICE_ID_LEN-info in tuya_ble_type.h, 0-auth info */
    .p_type              = TUYA_BLE_PRODUCT_ID_TYPE_PID,
    .product_id_len      = 8,
    .adv_local_name_len  = 4,
    .firmware_version    = TY_DEVICE_FVER_NUM,
    .hardware_version    = TY_DEVICE_HVER_NUM,
};
  1. 对代码进行编译后,使用芯片原厂烧录工具 Telink BDT 烧录固件 8258_module.bin。

4.3 生产凭证-仅授权

  1. 将 开发板 与 USB 转串口工具 及 烧录器 (Telink) 连接。
  2. 打开 生产解决方案 软件,登录 PMS 账号。
  3. 点击 云模组 进入 涂鸦云模组烧录授权平台。
  4. 单击【文件】-【设置】,启用【只授权】选项。
  5. 选择 端口号,输入 生产凭证,工位选择 烧录授权。
  6. 点击 运行 完成授权。
  7. 打开芯片原厂烧录工具 Telink BDT,按下图步骤完成固件 (8258_module.bin) 烧录。

五. 固件二次烧录

如果是在 开发调试阶段,在完成首版固件烧录授权之后,如果要二次烧录修改后的固件,一般使用 原厂烧录软件和芯片专用 烧录器 进行固件烧录。(即一次授权,多次烧录)

  1. 将 开发板 与 烧录器 (Telink) 连接。
  2. 对代码进行编译后,使用芯片原厂烧录工具 Telink BDT 烧录固件 8258_module.bin。

六. 设备联网测试

完成固件烧录授权后,即可通过 智能生活 APP 测试设备是否能正常配网。

  1. 打开 智能生活 APP,添加设备。方法 ①:在 首页 点击右上角 “+” 号进入 添加设备 页面,看到产品图标时进行添加;

方法 ②:在 添加设备 页面找到 传感 品类,选择 温湿度传感器(蓝牙),扫描到设备后点击 “+” 号进行添加。

蓝牙通讯开发python_物联网_05

  1. 进入设备面板,查看固件版本。成功连接设备后,可从 首页 进入设备面板,然后点击右上角图标进入 设置 页面,点击 设备升级 即可查看设备的固件版本。
  2. 获取设备虚拟 ID,查看云端日志。在 设置 页面点击 设备信息 即可获得设备的 虚拟 ID;

进入 涂鸦 IoT 平台,从左侧导航栏的【产品】-【设备】进入 设备管理 页面或 设备日志 页面,根据 设备 ID 找到对应的设备,即可查看该设备的状态和日志等信息。

蓝牙通讯开发python_开发语言_06

七. 常见问题解答

7.1 不同芯片平台的烧录授权方法

本节课主要介绍了 TLSR825x 平台下 BTU 模组 的烧录授权方法,如果您使用的是其他芯片平台的涂鸦标准蓝牙模组,可以同时参考 烧录授权 - BLE 模组 中的文档来完成烧录授权工作。

7.2 云模组烧录授权平台常见问题

7.2.1 获取token失败:没有操作权限

蓝牙通讯开发python_驱动开发_07

输入【生产凭证】点击【确定】后出现【获取token失败:没有操作权限】提示,可在 PMS 系统的【生产管理 - 工单管理 - 生产凭证确认】中进行生产凭证确认后,再重新尝试。

蓝牙通讯开发python_物联网_08

7.2.2 端口异常

蓝牙通讯开发python_驱动开发_09

点击【运行】按钮后出现【端口异常2】提示,可能的原因有:

  • 串口驱动未安装;
  • 串口工具没插好、接线有误或接触不良等硬件连接问题;
  • 端口被占用,如串口调试助手上打开了该端口。

7.2.3 获取固件指纹错误

蓝牙通讯开发python_开发语言_10

点击【运行】按钮后出现【获取固件指纹错误】提示,说明模组内已烧录的固件的 固件标识名 或 固件版本 与授权码绑定固件的固件标识名或固件版本不一致。该错误一般出现在 仅授权 情况下,解决方法有:

  • 使用和模组内固件标识名及版本号一致的生产凭证进行授权;
  • 使用非仅授权方案,重新对模组进行 烧录授权。

7.2.4 进入产测失败

蓝牙通讯开发python_开发语言_11

点击【运行】按钮后出现【进入产测失败】提示,可能原因有:

  • 设备已联网超过 15 分钟,产测关闭,需要擦除 Flash 中的对应区域的数据信息;
  • 串口选错或者 TX 和 RX 接错,请检查接线是否正确;
  • 波特率选择错误,需在【文件 - 设置】中选择正确的【烧录波特率】;
  • 对于一些供电要求比较高的芯片,需要供电稳定的 USB 口进行烧录授权。