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 例程,如 Wi-Fi、蓝牙、按键等。
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
:编译输出目录,包含编译后的固件文件。