更新时间:2024-08-21 02:21:45下载pdf
本文介绍如何快速基于类型开发包实现一个简单的 IPC demo 应用,包含编译构建、固件打包以及运行程序等步骤。
在 Visual Studio Code 的 Wind IDE 上,以 TuyaOS SDK 开发模式 获取对应平台的开发框架与类型开发包。更多信息,参考 获取开发资料。
基于 TuyaOS 框架开发产品具有多种好处,包括可以使用涂鸦 Wind IDE 开发工具提升效率,直接复用涂鸦编译打包调试等脚本和 makefile
,直接使用涂鸦提供的芯片平台适配层接口等。
如果您已经有自己完整的 IPC 代码框架,期望仅使用 lib
库文件和 .h
头文件,实现接入涂鸦平台的可执行程序,则可以考虑采用该开发方式。
TuyaOS 在 Tuya Wind IDE 上支持三种编译方式:
方式一:可视化界面(推荐)
在 Tuya Wind IDE 界面上选择 software/TuyaOS/apps/
下的 demo
目录,鼠标右键单击,选择菜单 Build Project 一键编译。
方式二:shell 脚本形式
在 software/TuyaOS/apps/
目录下输入:
sh build_app.sh $1 $2 $3 $4
其中,
$1
:应用工程路径,如 apps/tuyaos_demo_ipc
$2
:生成的应用工程名,如 tuyaos_demo_ipc
$3
:版本号,三段式格式 XX.XX.XX
,如 1.0.0
$4
:用户指令 (可选),如 clean
方式三:makefile 形式
在 software/TuyaOS/apps/
目录下命令行输入 make
,选择要编译的应用程序,并且版本默认为 1.0.0
。
编译完成后,会自动调用 apps/tuyaos_demo_ipc/ty_pack.sh
脚本,生成 OTA 固件和生产固件。
打包过程主要分两步:
将所需要的文件(主要包括可执行程序 tycam
、脚本文件、资源文件等)统一放到某个目录,再使用 mksquashfs
生成 app
分区镜像文件。
把 app
分区镜像拷贝到 output/bsp/
目录下,执行该目录下的 build
脚本,依照分区配置文件 partitions.json
生成固件。
您可以通过 partitions.json
中的 need_ota
字段,来决定是否将该分区镜像打包到 OTA 固件上。
产物存放在 output/platform_tuyaos/$version/firmware/out
路径下,分别是生产固件 xx_all.bin
和卡刷固件 xx_ota.bin
。
启动命令推荐
./output/platform_tuyaos-ipc/firmware/tuyaos_demo_ipc -c ./apps/tuyaos_demo_ipc/ -m 2 -t AYPVEWzz0omLW8
参数解释
c
:指定 tuya_device_cfg.json
配置文件路径,配置文件字段需要填写完整。
m
:对应模式。
typedef enum {
PARING_MODE_WIFI_AP = 1, //AP 配网
PARING_MODE_DEBUG, //用户传入 token,debug 模式,demo 体验使用
PARING_MODE_WIRED, //有线配网使用
PARING_MODE_CONCURRENT //FFS 配网使用
} TUYA_IPC_PARING_MODE_E;
t
:传入指定 Token。
运行前,确保 tkl_wifi.c
已适配。
DEBUG 能力
程序运行中,支持串口命令获取,参照 TUYA_IPC_simulation
接口。命令解释:
cmd | 说明 |
---|---|
md_start | 移动侦测事件启动 |
md_stop | 移动侦测事件停止 |
status | 当前设备激活状态 |
bell_press | 模拟图片门铃按键呼叫 |
bell_ac | 模拟视频门铃呼叫和留言服务 |
start_low_power | 启动低功耗模式 |
├── APPconfig ## 应用配置 tuyaos_adapter 入口
├── docs ## BSP 一些通用文档
├── IoTOSconfig ## 应用配置 tuyaos_adapter 入口,兼容老版本
├── README.md ## vendor 独立编译说明文档
├── release ## bsp 编译完成的固件资源
├── scripts ## err_code 头文件路径和工具
├── toolchain ## 平台工具链
└── tuyaos ## vendor 编译组目录
├── build ## vendor 编译入口
├── build_all.sh ## 编译脚本,调用 build.sh,给上层调用
├── build.conf ## BSP 依赖的第三方库下载地址
├── build_path ## 编译工具链路径指定
├── build.sh ## vendor 编译入口
├── components ## BSP 功能组件代码
│ ├── base_bsp ## 第三方库编译入口
│ ├── board_xxx ## rootfs 制作
│ ├── bsp_adapter ## BSP 专有 tuyaos_adapter
│ ├── bsp_comm_loader ## uboot bsp 能力组件
│ ├── bsp_cryptfs ## 文件系统加密
│ ├── bsp_sign ## OTA 加签组件
│ ├── bsp_verify ## OTA 验签组件
│ ├── IoTOSconfig ## libtuyaos_adapter_custom.so 配置文件
│ ├── linux_xxx ## Linux 内核组件
│ ├── local.mk ## libtuyaos_adapter_custom.so 编译脚本
│ ├── nvram_kernel_driver ## NVRam && NVRam lib && NVRam ko 组件
│ ├── partition_config ## 分区统一配置组件
│ ├── swupgrade_pack ## OTA 打包组件
│ ├── swupgrade_unpack ## OTA 解包组件
│ ├── sys_log ## 日志输出组件
│ ├── tkl_gpio ## GPIO 组件
│ ├── tkl_media_xxx ## media 组件
│ ├── tkl_system ## Linux system 接口组件
│ ├── tkl_test ## TKL 接口测试组件
│ ├── tkl_utils ## TKL 基本功能组件
│ ├── tkl_wifi ## Wi-Fi 组件
│ ├── tkl_wired ## wired 组件
│ └── uboot_xxx ## uboot 组件
├── download ## 第三方库下载路径
├── hwconfig ## IO 统一配置文件
├── include ## tuyao_iot_config.h 目录
├── IoTOSconfig ## vendor 配置主入口
├── Makefile ## vendor 编译 Makefile 主入口
├── platform.mk ## vendor 传给应用的编译参数位置
├── scripts ## 产生 libtuyaos_adapter_custom.so 的脚本
├── tuyaos_adapter ## TKL 适配层
└── tuyaos_kernel.config ## TKL 的能力支持配置
参考 编译构建,首先进行编译构建。然后在 software/TuyaOS/scripts
目录下命令行执行 extract_standalone_sdk.sh
脚本,一键提取独立 SDK 包。脚本会自动创建 software/sdk_a.b.c/
目录,同时自动下载对应的 demo code。完成后,整体目录如下:
├── sdk_6.1.0 ## 独立 SDK 入口
├── sdk ## 库文件和头文件
├── build ## 编译所需的环境变量
├── demo_tuyaos_app ## 应用 demo 演示代码
├── demo_tuyaos_adapter ## 系统适配层标准适配代码,可按实际系统情况修改
└── Makefile ## 编译入口
进入 software/sdk_6.1.0/
目录,执行命令 make
。
编译成功后的可执行程序位于 sdk_6.1.0/output/demo
目录下,运行方式参考上文 运行程序。
如果需要提取库文件到工程代码中,下面是需要提取的目录列表:
文件 | 补充说明 |
---|---|
sdk/libs/libtuyaos.a | 库文件 |
sdk/include/* | 头文件,极简方式只提取 svc_api_ipc/include/ 头文件即可 |
demo_tuyaos_adapter | 系统适配层标准代码,需要根据平台,检查对应实现是否符合 |
tuyaos-ipc/vendor/x86_64/tuyaos/tuyaos_adapter/include/media/tkl_media_demo_source.h
。平台适配时,可关注素材是否已删除,按照平台音视频 TKL 接口进行封装即可。libtuyaos
库是否是 strip 过的版本 libtuyaos.a.stripped
。该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈