跳到主要内容

TuyaOpen目录结构说明

概述

介绍TuyaOpen的目录结构及作用

主要目录展示

.
├── apps
│   ├── tuya.ai
│   └── tuya_cloud
├── boards
├── CMakeLists.txt
├── Dockerfile
├── examples
├── export.bat
├── export.sh
├── LICENSE
├── platform
│   └── platform_config.yaml
├── README.md
├── requirements.txt
├── src
├── tools
│   ├── cli_command
│   ├── cmake
│   ├── kconfiglib
│   └── tyutool
└── tos.py

src

核心源代码的主要存放位置,包含了框架的基础功能实现、核心模块以及跨平台的通用代码

主要内容包括:

  1. 基础组件与服务

    系统内核:包含任务调度、内存管理、线程同步(互斥锁、信号量)等操作系统基础功能

    设备管理:实现设备初始化、状态管理、资源分配等核心逻辑,例如设备注册、配置加载等

    通信协议栈:封装蓝牙、Wi-Fi、MQTT、HTTP 等通信协议的上层接口,为应用提供统一的网络通信能力

  2. 跨平台抽象层

    硬件无关接口:定义与硬件解耦的API,通过调用platform目录下的驱动实现具体功能。

    操作系统抽象:提供跨操作系统的接口(如线程创建、定时器管理),确保框架可在不同 OS(如 Linux、RTOS)上运行。

主要组成包括:

src/
├── base/ # 基础工具库(如日志、内存操作、数据结构)
├── device/ # 设备管理核心代码
├── network/ # 网络通信模块(Wi-Fi、蓝牙、MQTT等)
├── security/ # 安全加密模块(设备认证、数据加密)
├── ai/ # AI功能接口(语音识别、图像分析)
├── cloud/ # 云端对接服务(Tuya云API调用)
└── utils/ # 通用工具函数

appsexamples

均为工程项目的存放路径,其中

  1. apps中复杂应用项目,分为AI应用tuya.ai和IOT应用tuya_cloud

  2. examples中为单一功能的demo例程,如Wifi、蓝牙、按键等;

app_default.config

TuyaOpen的配置文件,用于配置项目编译参数

需要注意的是,app_default.config文件只会保存最小配置项

也就是只把与默认值不同的配置内容保留

主要作用:

  1. 编译参数配置

    目标平台定义:记录当前项目编译的目标平台/开发板(如T5AI、ESP32),决定加载的硬件驱动和编译工具链

    编译选项控制:包含编译器标志(如优化等级、宏定义)、固件版本号、存储分区配置等

  2. 硬件资源配置

    外设参数:定义硬件接口的参数(如串口波特率、GPIO 引脚分配、SPI 通信速率)

    内存布局:配置固件在 Flash 中的存储地址、RAM 分配等内存相关参数

  3. 功能模块开关

    组件启用/禁用:控制项目中是否包含特定功能模块(如蓝牙、Wi-Fi、AI 服务),避免冗余代码

    功能选项配置:如是否启用 OTA 升级功能

platformplatform_config.yaml

platform文件保存工具链仓库,各仓库需要实现:

  1. 硬件抽象层 (HAL):

    针对不同芯片架构(如 ESP32BK7231NT5AI等)的底层驱动实现,抽象了硬件细节(如 GPIOUARTSPI蓝牙 / Wi-Fi 协议栈等),使上层应用无需关心具体硬件差异。

  2. 统一 API:

    通过定义标准化接口(如 hal_gpio_read()hal_uart_send()),使上层代码(如 app 文件夹中的应用逻辑)能够以相同方式调用不同硬件的功能。

由于工具链仓库占用空间较大,只有项目配置用到时,才会下载对应工具链

下载工具链需要的git相关信息,被记录在platform_config.yaml文件中

boards

boards 文件夹主要用于存放与开发板相关的配置文件和支持代码,其核心作用是适配不同硬件平台,确保 TuyaOpen 框架能在多种开发板上正常运行。以下是该文件夹的具体功能和内容说明:

  1. 配置文件:

    使用Kconfig文件,将芯片或开发板的可配置功能和部分编译参数提供给开发者配置,在使用命令tos config menu时,会自动加载并显示

  2. 目标选择:

    boards文件夹内包含各开发板的配置文件(如 T2.config、T3.config 等),定义了目标开发板的硬件参数(如串口波特率、引脚分配、内存布局等)。这些配置会在编译时被 tos.py config choice 命令选择

  3. 硬件适配:

    针对不同芯片(如 T2、T3、T5AI、ESP32 等),boards可能提供部分底层驱动适配代码或编译脚本,确保框架与硬件外设(如 UART、GPIO、SPI 等)正确交互。

tos.pyexport.sh

tos.py是一个核心命令行工具,用于简化开发流程、管理项目配置和执行编译部署等操作。详细使用说明可参考:tos.py使用

export.shexport.bat用于激活tos.py的命令行功能

tools

存放开发、编译、测试和部署过程中使用的工具脚本、辅助程序及配置文件

  1. 编译与构建工具

    项目构建脚本:包含用于编译固件、生成二进制文件的脚本(如 Makefile、CMakeLists.txt 或自定义 Python 脚本)。

    固件打包工具:将编译后的代码与配置文件打包为可分发的固件格式(如.bin、.ota)。

  2. 开发辅助工具

    烧录工具:提供将固件烧录到硬件设备的工具tyutool

    配置生成器:帮助生成设备配置文件

    代码格式化工具:确保代码风格一致的格式化脚本

部分临时文件和目录

  • .venv:python虚拟环境安装路径

  • .build:编译输出目录,包含编译后的固件文件