更新时间:2024-06-25 03:16:05下载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.sh
和 prod_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 配网模式,支持以下类型:
|
字段 | 必须 | 说明 |
---|---|---|
storage_path | 是 | 文件存储路径,需要可读写文件系统 |
cache_path | 是 | 临时目录,用于文件缓存,如 OTA 文件 |
dev_name | 是 | 串口名称 |
cts | 是 | 是否开启流控,涂鸦 NCP 均开启了流控 |
thread_mode | 是 |
|
字段 | 必须 | 说明 |
---|---|---|
thread | 否 | 通过修改 netif_name ,可手动配置 otbr 网络接口。默认为 wpan0 。 |
编译 BSP 需要一些系统工具。例如,在 Ubuntu 平台执行以下命令:
sudo apt-get install whois patchelf meson bison flex libssl-dev
本小节将介绍在 Visual Studio Code 上编译 THP10-Z-X 固件。
展开开发包的 TuyaOS > apps > demo 目录,并单击右键,在菜单中选择 Build Project,再输入版本号按下回车键,开始编译。
观察 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 固件,用于固件升级,可以上传到涂鸦开发者平台进行远程 OTA 升级。tuyaos_matter_gw-ide_ssd20x_matter_gw_<版本>_debug
:保留符号表的主程序,用于 GDB 调试等场景。gateway.tar.gz
:程序包的压缩包,用于临时调试,可以加速调试进程。详见 简易调试 章节。前置工作基本完成了,接下来运行示例程序查看效果。
可以把 OTA 固件烧录到 THP10-Z-X 开发板上,详见 OTA 烧录 章节。烧录完成后,断电重启设备。
THP10-Z-X 支持有线配网,可以用涂鸦智能 App 来激活网关。App 的详细教程,参考 使用指南。
详细步骤,参考 固件升级。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈