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
核心源代码的主要存放位置,包含了框架的基础功能实现、核心模块以及跨平台的通用代码
主要内容包括:
-
基础组件与服务
系统内核:包含任务调度、内存管理、线程同步(互斥锁、信号量)等操作系统基础功能
设备管理:实现设备初始化、状态管理、资源分配等核心逻辑,例如设备注册、配置加载等
通信协议栈:封装蓝牙、Wi-Fi、MQTT、HTTP 等通信协议的上层接口,为应用提供统一的网络通信能力
-
跨平台抽象层
硬件无关接口:定义与硬件解耦的
API
,通过调用platform
目录下的驱动实现具体功能。操作系统抽象:提供跨操作系统的接口(如线程创建、定时器管理),确保框架可在不同 OS(如 Linux、RTOS)上运行。
主要组成包括:
src/
├── base/ # 基础工具库(如日志、内存操作、数据结构)
├── device/ # 设备管理核心代码
├── network/ # 网络通信模块(Wi-Fi、蓝牙、MQTT等)
├── security/ # 安全加密模块(设备认证、数据加密)
├── ai/ # AI功能接口(语音识别、图像分析)
├── cloud/ # 云端对接服务(Tuya云API调用)
└── utils/ # 通用工具函数
apps
和 examples
均为工程项目的存放路径,其中
-
apps
中复杂应用项目,分为AI应用tuya.ai
和IOT应用tuya_cloud
; -
examples
中为单一功能的demo例程,如Wifi、蓝牙、按键等;
app_default.config
TuyaOpen
的配置文件,用于配置项目编译参数
需要注意的是,app_default.config
文件只会保存最小配置项
也就是只把与默认值不同的配置内容保留
主要作用:
-
编译参数配置
目标平台定义:记录当前项目编译的目标平台/开发板(如T5AI、ESP32),决定加载的硬件驱动和编译工具链
编译选项控制:包含编译器标志(如优化等级、宏定义)、固件版本号、存储分区配置等
-
硬件资源配置
外设参数:定义硬件接口的参数(如串口波特率、GPIO 引脚分配、SPI 通信速率)
内存布局:配置固件在 Flash 中的存储地址、RAM 分配等内存相关参数
-
功能模块开关
组件启用/禁用:控制项目中是否包含特定功能模块(如蓝牙、Wi-Fi、AI 服务),避免冗余代码
功能选项配置:如是否启用 OTA 升级功能
platform
和 platform_config.yaml
platform
文件保存工具链仓库,各仓库需要实现:
-
硬件抽象层 (HAL):
针对不同芯片架构(如
ESP32
、BK7231N
、T5AI
等)的底层驱动实现,抽象了硬件细节(如GPIO
、UART
、SPI
、蓝牙 / Wi-Fi
协议栈等),使上层应用无需关心具体硬件差异。 -
统一 API:
通过定义标准化接口(如
hal_gpio_read()
、hal_uart_send()
),使上层代码(如app
文件夹中的应用逻辑)能够以相同方式调用不同硬件的 功能。
由于工具链仓库占用空间较大,只有项目配置用到时,才会下载对应工具链
下载工具链需要的git
相关信息,被记录在platform_config.yaml
文件中
boards
boards 文件夹主要用于存放与开发板相关的配置文件和支持代码,其核心作用是适配不同硬件平台,确保 TuyaOpen 框架能在多种开发板上正常运行。以下是该文件夹的具体功能和内容说明:
-
配置文件:
使用
Kconfig
文件,将芯片或开发板的可配置功能和部分编译参数提供给开发者配置,在使用命令tos config menu
时,会自动加载并显示 -
目标选择:
boards
文件夹内包含各开发板的配置文件(如 T2.config、T3.config 等),定义了目标开发板的硬件参数(如串口波特率、引脚分配、内存布局等)。这些配置会在编译时被tos.py config choice
命令选择 -
硬件适配:
针对不同芯片(如 T2、T3、T5AI、ESP32 等),
boards
可能提供部分底层驱动适配代码或编译脚本,确保框架与硬件外设(如 UART、GPIO、SPI 等)正确交互。
tos.py
和 export.sh
tos.py
是一个核心命令行工具,用于简化开发流程、管理项目配置和执行编译部署等操作。详细使用说明可参考:tos.py
使用
export.sh
和export.bat
用于激活tos.py
的命令行功能
tools
存放开发、编译、测试和部署过程中使用的工具脚本、辅助程序及配置文件
-
编译与构建工具
项目构建脚本:包含用于编译固件、生成二进制文件的脚本(如 Makefile、CMakeLists.txt 或自定义 Python 脚本)。
固件打包工具:将编译后的代码与配置文件打包为可分发的固件格式(如.bin、.ota)。
-
开发辅助工具
烧录工具:提供将固件烧录到硬件设备的工具
tyutool
配置生成器:帮助生成设备配置文件
代码格式化工具:确保代码风格一致的格式化脚本
部分临时文件和目录
-
.venv
:python虚拟环境安装路径 -
.build
:编译输出目录,包含编译后的固件文件