快速开始

更新时间:2023-11-21 09:39:23下载pdf

本文介绍开发包里的重要文件,便于您更好地理解代码的组织结构。

目录结构

开发包整体目录结构如下:

├── hardware                  # 硬件手册,存放涂鸦自研硬件资料
├── pc
│    └── tools                # 工具类目录,存放各种开发相关工具
├── software
│    ├── packages             # SDK 压缩包
│    ├── SDKInformation.json  # SDK 信息文件
│    └── TuyaOS               # SDK 开发包目录
│        ├── apps             # 应用示例代码目录,您可以根据需求修改
│        ├── build
│        ├── build_app.sh     # 编译脚本
│        ├── CHANGELOG.md
│        ├── doc              # API 文档
│        ├── include          # SDK 头文件
│        ├── libs             # SDK 库文件,您可以按需链接
│        ├── LICENSE          # Tuya MIT License
│        ├── Makefile
│        ├── output           # 产物输出目录
│        ├── README.md
│        ├── scripts
│        └── vendor           # 工具链,编译时会自动把工具链下载到该目录下
└── tuya.json

TuyaOS > apps > demo 目录结构:

├── application_components       # 网关开源组件
├── application_drivers          # 网关开源驱动
├── app.mk
├── audio                        # 音频源码文件
├── build                        # 网关工程需要包含的资源
├── build.conf
├── build.sh                     # 编译脚本
├── doc                          # 说明文档
├── include                      # 源码头文件
├── key                          # 按键源码文件
├── led                          # LED 源码文件
├── Makefile                     # 编译 Makefile
├── package.json
├── README.md                    # Readme 文件
└── src                          # 源码文件

TuyaOS > apps > demo > build 目录结构:

├── board
│   ├── keyname.txt                     # 固件名称记录,用于模组产测,修改固件 key 名称后需要及时修改此文件记录内容。固件名称不是项目名称
│   ├── startup.sh                      # 启动脚本,系统启动后会先执行此脚本,一般不需要修改
│   ├── ty_gw_env.sh                    # 全局环境变量,一般不需要修改。
│   ├── unpack                          # 解压升级包程序
├── image
│   ├── app_upgrade.sh                  # 当 OTA 时会调用此脚本
│   ├── async_run.sh
│   ├── config.json                     # 网关信息配置
│   ├── cpcd_srv                        # CPCD 启动脚本
│   ├── json_parser.sh
│   ├── mdnsd_srv                       # mdnsd 启动脚本
│   ├── otbr_firewall                   # OTBR 防火墙启动脚本
│   ├── otbr_srv                        # OTBR 启动脚本
│   ├── prod_upgrade.sh                 # 当使用批量升级工具升级时会调用此脚本
│   ├── show_net_stat.sh                # 打印显示一些网络状态
│   ├── start_record.sh
│   ├── syslogd_srv                     # 系统日志启动脚本,默认定向到文件,文件位置为 /tmp/messages
│   ├── tuya_start.sh                   # 开始运行网关工程
│   ├── tuya_user1
│   │   ├── app_detect.sh               # 监控程序是否运行
│   │   ├── app_stop.sh                 # 网关程序停止
│   │   ├── change_pw.sh
│   │   ├── debugtool                   # 对 Zigbee 的调试工具,可以获取如 Zigbee 网络信息
│   │   ├── log_detect.sh               # 日志监控脚本,对日志进行归档打包
│   │   ├── process_monitor.sh          # 网关进程软看门狗喂狗监控程序
│   │   └── tuya_start_children.sh      # 主程序启动
│   ├── udhcpc.script                   # 有线 DHCP 脚本
│   ├── udhcpd.conf                     # 有线 DHCP 配置
│   ├── wlan0_udhcpc.script             # wlan0 的 DHCP 配置,该板子未使用到
│   ├── zigbeed-socat_srv               # Socat 启动脚本。Socat 串流,Zigbeed 到网络,与 CPCD 通信。
│   └── zigbeed_srv                     # Zigbeed 启动脚本
├── image_create.sh                     # QIO 和 OTA 打包脚本,将会调用 BSP 打包工具
├── pack.sh                             # 工程打包脚本
├── rcp_image
│   └── si_rcp_uart_mg21_OTA_1.4.3.bin  # RCP OTA 固件
└── third_image                         # 第三方开源包

下面详细说明重要脚本中一些比较关键的配置。

  • app_upgrade.shprod_upgrade.sh

    字段 说明
    rcp_ver_flag=
    “/tmp/rcp_ver_3_4_0_flag”
    根据 RCP 使用版本进行修改,和 rcp_image 文件夹内 RCP 版本匹配。例如 RCP 版本变更为 5.6.7,则字段需要修改为 "/tmp/rcp_ver_5_6_7_flag"
    Zigbee host 会在 /tmp 目录下根据 RCP 版本自动生成 rcp_ver_3_4_0_flag 文件,当脚本无法匹配到 rcp_ver_3_4_0_flag 字段时,会执行 RCP 升级。
    ug_tool=/bin/unpack 解包程序,默认不验签,-s 验签,搭配 BSP 编译参数 BUILD_ARG 使用。
  • tuya_start.sh

    字段 说明
    TY_ENV_USER_TMP_DIR=“/tmp” 临时目录,按照实际情况修改
    DEFULT_APP_RUN_DIR=“/tmp/tuya/” 运行目录,按照实际情况修改
  • tuya_start_children.sh

    字段 说明
    TY_ENV_USER_LOG_DIR=“/tuya/data/log_dir” log 存储文件夹,按照实际情况修改
    TY_ENV_USER_STORAGE_DIR=“/tuya/data/user_data” 用户信息存储文件夹,按照实际情况修改
    TY_ENV_USER_TMP_DIR=“/tmp” 临时目录,按照实际情况修改,应该和 tuya_start.sh 中的保持一致
    TY_ENV_USER_BIN_DIR=“/tmp/tuya” 运行目录,按照实际情况修改,应该和 tuya_start.sh 中的保持一致
  • process_monitors.sh

    字段 说明
    PRO_MONITOR_MAX_NUM=6 网关进程软看门狗喂狗失败阈值,当达到此值后执行重启应用程序,每次间隔 20 秒
  • image_create.sh

    字段 说明
    BUILD_ARG= BSP 编译参数,默认为空不加签,-a 涂鸦 IoT 云服务加签,-al 本地自定义加签

配置

在编译固件之前,需要修改配置,把 PID 修改成前面创建的网关产品 PID。配置文件位于 TuyaOS > apps > demo > build > image > config.json

快速开始

配置文件 config.json 详细解析如下。基本格式为:

{
     "pid": <xxx>,
     "uuid": <...>,
     "authkey_key": <...>,
     "ap_ssid": <... optional>,
     "ap_password": <... optional>,
     "log_level": <level>,
     "storage_path": <...>,
     "start_mode": <xxxx>,
     "tuya": {
         "zigbee": {
                       "storage_path": <xxx, string>,
                       "cache_path": <xxx, string>,
                       "dev_name": <xxx, string>,
                       "cts": <xxx, number>,
                       "thread_mode": <xxx, number>
         },
         "matter": {}
     },
     "user": {
         [ { "tp": <DEV_ATTACH_MOD_X, number>, "sw_ver": <version, string> }, ... ]
     },
 }

公共配置

字段 必须 说明
PID SDK 运行在非 OEM 模式,PID 字段指定此设备 PID
uuid 唯一识别码,优先从 nvram 读取,不存在时使用此处。关于 nvram 操作,参考 全量烧录
authkey_key 授权识别码,优先从 nvram 读取,不存在时使用此处。于 nvram 操作,参考 全量烧录
ap_ssid AP 配网 SSID,未指定则使用默认 SmartLife-<WLAN MAC 后四位>
ap_password AP 配网密码,默认为空
log_level 日志等级,默认为 debug 等级 4
storage_path 文件存储路径,需要可读写文件系统
start_mode Wi-Fi 配网模式,支持以下类型:
  • 0WF_START_AP_ONLY 仅支持 AP 配网
  • 1WF_START_SMART_ONLY 仅支持 EZ 配网
  • 2WF_START_AP_FIRST 支持 AP + EZ 配网,AP 配网优先
  • 3WF_START_SMART_FIRST 支持 AP + EZ 配网,EZ 配网优先
  • 4WF_START_SMART_AP_CONCURRENT AP 和 EZ 共存模式

Zigbee 协议配置

字段 必须 说明
storage_path 文件存储路径,需要可读写文件系统
cache_path 临时目录,用于文件缓存,如 OTA 文件
dev_name 串口名称
cts 是否开启流控,涂鸦 NCP 均开启了流控
thread_mode
  • 1:线程模式运行 Zigbee host 程序
  • 0:进程模式运行 Zigbee host 程序

Matter 协议配置

字段 必须 说明
thread 通过修改 netif_name,可手动配置 otbr 网络接口。默认为 wpan0

编译

编译 BSP 需要一些系统工具。例如,在 Ubuntu 平台执行以下命令:

sudo apt-get install whois patchelf meson bison flex libssl-dev

本小节将介绍在 Visual Studio Code 上编译 THP10-Z-X 固件。

  1. 展开开发包的 TuyaOS > apps > demo 目录,并单击右键,在菜单中选择 Build Project,再输入版本号按下回车键,开始编译。

    快速开始
  2. 观察 Visual Studio Code 下方的 终端,会看到编译的输出打印。直到看到如下图所示的打印时,代表编译成功,生成的固件位于 output 目录下。

    快速开始

固件说明:

  • tuyaos_matter_gw-ide_ssd20x_matter_gw_fw_QIO_<版本>.bin:全量固件,用于整片 Flash 烧录,需要进入 U-Boot 进行烧录。
  • tuyaos_matter_gw-ide_ssd20x_matter_gw_fw_UG_<版本>.bin:OTA 固件,用于固件升级,可以上传到涂鸦 IoT 开发平台进行远程 OTA 升级。
  • tuyaos_matter_gw-ide_ssd20x_matter_gw_<版本>_debug:保留符号表的主程序,用于 GDB 调试等场景。
  • gateway.tar.gz:程序包的压缩包,用于临时调试,可以加速调试进程。详见 简易调试 章节。

运行

前置工作基本完成了,接下来运行示例程序查看效果。

可以把 OTA 固件烧录到 THP10-Z-X 开发板上,详见 OTA 烧录 章节。烧录完成后,断电重启设备。

THP10-Z-X 支持有线配网,可以用涂鸦智能 App 来激活网关。App 的详细教程,参考 使用指南

上传固件

详细步骤,参考 固件升级