TuyaOS 开发蓝牙产品之授权产测

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
User avatar
逻辑的院子
Posts: 219
Contact:

文档说明

本文档作为大而全的 产测原理 以及 产测一般流程 的说明文档,仅供研发、FAE以及工艺同学参考使用。

实际的生产流程请参考工艺同学提供的 授权产测 指导文档。

基础知识

蓝牙通信方式

蓝牙通信有广播和连接两种方式。

广播通信是单向通信,适用于一对多(理论上无限)的场景。

在广播通信中,发出广播的设备称作广播者,捕获广播的设备称作扫描者。

Image

连接通信是双向通信,适用于一对一的场景,也可用于一对多(有限)的场景。

在连接通信中,主动发起连接的设备称作主机,被动连接的设备称作从机。

Image

名词解释

根据沿袭的使用习惯:广播者又称作 信标 ,扫描者/主机又称作 dongle

为了叙述的简洁,下文会根据使用习惯随机切换 信标广播者 等相同含义的名词。

需要注意的是:当前版本的 dongle硬件 同时支持 信标 和原 dongle 的能力,通过按键设置不同的模式进行区分,详见:涂鸦蓝牙 dongle 使用指南(目前内部资料,详询产品经理)。

Image

缩写

DUT,Device Under Test,待测设备

SN,Serial Number,序列号

产测方案原理

涂鸦的产测方案根据蓝牙通信方式的不同分为几个大的类型,分别是:

(1)基于待测设备扫描的 信标测试模式

(2)基于待测设备广播的 dongle测试模式1

(3)基于待测设备连接的 dongle测试模式2

其中,信标测试模式 要求待测设备具有扫描的能力,其他模式则没有这个要求。

方案对比

(1)仅测试RSSI

方案名称信标测试模式dongle测试模式1
协议(内部链接,详询工艺同学)蓝牙通用授权产测协议蓝牙通用整机产测协议
DUT支持扫描能力需要不需要
可以测试接收灵敏度
可以测试发射功率
DUT多占用Flash和RAM资源
DUT固件要求需要进行协议开发无需进行协议开发,仅支持广播就行
SDK稳定性相对不稳定相对稳定

(2)测试外设

信标测试模式 仅支持测试单个外设,因为该模式仅通过是否扫描到特定广播作为输入条件,仅适用于单一测试场景;

如果需要测试超过一个外设,则只能选择 dongle测试模式2 ,该模式中上位机通过dongle与待测设备之间进行命令交互,适用于任何测试场景。

信标测试模式

信标是一种可以发出特定广播的测试工具。

目前 dongle硬件 已经兼容信标功能(M2、M3、M4、M5)。

简单的广播通信是单向通信:信标持续发出指定广播,DUT扫描到该广播后做出相应动作。

广播内容需要双方事先约定,适用于较为简单的测试场景,示意如下:

Image

目前已约定的广播内容(仅为信标名字)有:

(1)ty_mdev:整机信标模式

(2)ty_prov:授权信标模式

(3)TY:传感设备测试

(4)Mesh广播:私有Mesh模式

dongle测试模式

dongle是一种可以扫描DUT、连接DUT,并与DUT进行通信的测试工具。

目前 dongle硬件 已经兼容dongle功能(M1)。

扫描/连接通信中,最重要的问题是:dongle应该去扫描/连接哪个DUT ?

针对该问题,涂鸦根据不同需求提供了以下几种扫描/连接方式:

(1)通过Mac地址扫描/连接指定DUT,对应dongle模式:UART_CONTROL,即上位机通过UART下发Mac地址给dongle;

(2)通过信号强度扫描/连接附近DUT,对应dongle模式:RSSI_CONN,即dongle主动扫描/连接符合设定RSSI范围的设备。

dongle扫描到待测设备,即可获得待测设备的RSSI,所以如果仅测试RSSI,则不需要连接;

dongle与DUT一旦建立连接,就可以通过 蓝牙整机产测协 议进行不同命令的测试,非常适合于蓝牙整机的无线测试。

此时,产测的一般流程为:

(1)手动编辑json文件选择 蓝牙整机产测协议 中的不同命令(可选,如果使用 云模组 上位机,则json文件已经由工艺同学完成并上传,开发者无需关心也不可更改);

(2)上位机通过解析json文件选择对应的命令下发给dongle;

(3)dongle处理命令或者将命令转发给DUT,示意图如下:

Image

UART_CONTROL

其中 UART_CONTROL 模式下仅测试RSSI的基本通信流程图如下:

Image

授权一般流程

授权的主要目的是将涂鸦的授权信息写入芯片的Flash中。

基于 云模组安防传感 的授权效果是一样的,任选其一即可。

临时授权

若暂无生产需要,也可通过以下方式进行临时授权(仅用于调试,生产时请改回原状):

  1. 找到如下代码片段:

    Image

  2. 临时修改为如下设置:

    Code: Select all

       STATIC tuya_ble_device_param_t tuya_ble_protocol_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,
           .p_type              = TUYA_BLE_PRODUCT_ID_TYPE_PID,
           .product_id_len      = 8,
           .adv_local_name_len = 4,
       };

基于云模组

云模组 一般用于模组的授权产测,也可用于成品的授权。

1)下载并安装 涂鸦生产解决方案 中的 云模组

详见附录

2)打开 云模组,进行如下配置

Image

a. 输入生产凭证(生产凭证获取方式请咨询工艺同学)后回车,会自动加载出其他信息

b. 测试工序选择 烧录授权

c. 点击 确定

3)打开 左上角的参数设置 进行如下配置

Image

a. 勾选 单独授权,点击 确定 按钮

b. 选择端口(DUT对应的串口)

4)点击 右上角的运行,等待所有测试项运行完成即可

Image

基于安防传感

该模式下仅进行授权

1)下载并安装 涂鸦生产解决方案 中的 安防传感

详见附录

2)打开 安防传感,配置如下参数

Image

a. 选择本地测试模式

b. 输入生产凭证(生产凭证获取方式请咨询工艺同学)

c. 导入测试序列( json文件

Image

d. 点击 编辑,配置如上图所示

e. 点击 启动测试

3)点击 右上角的测试项配置,配置如下参数

Image

a. DUT和dongle分别插到电脑上

b. 点击 左侧的配置图标,弹出 串口连接配置 ,其中主串口号为DUT串口,波特率9600,控制串口号可以选择一个虚拟串口或者任意其他串口(没有实际作用)

c. 配置完成后点击 确定 即可

4)点击 右上角的运行,等待所有测试项运行完成即可

Image

分析:

如上图所示,所有测试项均为上位机发送给DUT。

信标测试模式一般流程

待补充

dongle测试模式1一般流程

基于安防传感

该模式下仅进行授权和测试RSSI,无需固件任何开发,测试过程中DUT保持广播即可

1)下载并安装 涂鸦生产解决方案 中的 安防传感

详见附录

2)打开 安防传感,配置如下参数

Image

a. 选择本地测试模式

b. 输入生产凭证(生产凭证获取方式请咨询工艺同学)

c. 导入测试序列( json文件

d. 点击 启动测试

3)点击 右上角的测试项配置,配置如下参数

Image

a. DUT和dongle分别插到电脑上

b. 点击 左侧的配置图标,弹出 串口连接配置 ,其中主串口号为DUT串口,波特率9600,控制串口号为dongle串口,波特率9600

c. 配置完成后点击 确定 即可

4)点击 右上角的运行,等待所有测试项运行完成即可

Image

分析:

如上图所示,仅测试项 RSSI信号值获取测试 是由上位机发送给dongle用于测试RSSI的,其他测试项均为上位机发送给DUT。

dongle测试模式2一般流程

基于安防传感

dongle测试模式2 主要用于测试多外设的场景(也称作 整机产测模式)。该模式中上位机通过dongle与待测设备之间进行命令交互,适用于任何测试场景。

该测试模式下,由于测试的外设不可预知,SDK默认仅支持 进入测试模式退出测试模式 两条指令,其余外设测试指令可由用户根据测试需要在这两条指令间自主添加,同时可通过修改 json配置文件间接修改上位机支持的测试项目(修改方式详询工艺同学)。

固件增加自定义测试项可在 tuya_ble_custom_app_production_test_process 接口中增加相应case即可,接口默认如下:

Code: Select all

TUYA_WEAK_ATTRIBUTE VOID_T tuya_ble_custom_app_production_test_process(UINT8_T channel, UINT8_T* p_in_data, UINT16_T in_len)
{
    ty_product_test_cmd_t* cmd = (VOID_T*)p_in_data;
    tal_util_reverse_byte((VOID_T*)&cmd->len, SIZEOF(UINT16_T));
    tal_util_reverse_byte((VOID_T*)&cmd->sub_id, SIZEOF(UINT16_T));

    if ((cmd->type != 3) || (cmd->len < 3)) {
        return;
    }

    UINT16_T data_len = cmd->len - 3;

    switch (cmd->sub_id) {
        case PRODUCT_TEST_CMD_ENTER: {
            UINT8_T tmp_buf[] = "{\"ret\":true}";
            tuya_ble_product_test_rsp(channel, cmd->sub_id, tmp_buf, strlen((VOID_T*)tmp_buf));
        } break;

        case PRODUCT_TEST_CMD_EXIT: {
            UINT8_T tmp_buf[] = "{\"ret\":true}";
            tuya_ble_product_test_rsp(channel, cmd->sub_id, tmp_buf, strlen((VOID_T*)tmp_buf));
        } break;

        default: {
        } break;
    }
}

1)下载并安装 涂鸦生产解决方案 中的 安防传感

详见附录

2)打开 安防传感,配置如下参数

Image

a. 选择本地测试模式

b. 输入生产凭证(生产凭证获取方式请咨询工艺同学)

c. 导入测试序列( json文件 ,带SN)

d. 点击 启动测试

3)点击 测试项配置 ,配置如下参数

Image

a. DUT插到电脑上

b. 输入 SN 号:Test12345(此处仅为研发测试用,工厂使用SN生成工具,详询工艺同学)

c. 点击 左侧的配置图标,弹出 串口连接配置 ,串口号为DUT串口,波特率9600

d. 配置完成后点击 确定 即可

4)点击 运行,等待所有测试项运行完成即可

Image

分析:

如上图所示,所有测试项均为上位机发送给DUT,以上步骤仅为授权。

5)点击 停止测试 按钮,导入测试序列( json文件 ,整机产测序列),点击 编辑 ,按照下图勾选测试项后点击 确定 -> 启动测试

Image

6)点击 测试项配置 ,配置如下参数

Image

a. dongle插到电脑上,DUT供电即可

b. 输入 SN 号:Test12345(此处仅为研发测试用,工厂使用扫码枪扫描二维码,详询工艺同学)

c. 点击 左侧的配置图标,弹出 串口连接配置 ,串口号为dongle串口,波特率9600

d. 配置完成后点击 确定 即可

7)点击 运行,等待所有测试项运行完成即可

Image

分析:

如上图所示,所有测试项均为上位机发送给dongle,用于测试RSSI或其他用户自定义测试项。

附录

获取涂鸦生产解决方案

申请PMS账号

前往 涂鸦PMS系统,如果没有PMS系统的账号,需要先注册。
注册流程如下图,选择个人开发者/公司都是可以的,按照注册指引填写相关信息。若邮箱收到涂鸦发送过来的邮件就说明审核已经通过。

Image

下载涂鸦生产解决方案

登录涂鸦 PMS系统,依次点击 知识库管理软件下载 → 搜索 生产解决方案,开始下载 生产解决方案 工具。

Image

下载完成后按照默认配置安装,打开 生产解决方案 工具(登录账号密码同PMS系统)

点击 云模组 ,等待安装完成(云模组 一般用于模组授权产测,也可用于成品的纯授权)

Image

点击 安防传感 ,等待安装完成(安防传感 一般用于成品授权产测,支持整机产测功能)

Image

获取dongle

涂鸦 IoT 开发平台,获取开发板,开发板对应的 物料编码2.03.99.00045

Post Reply