跳到主要内容
返回学习中心TuyaOpen SDK

编译第一个固件

为你的开发板配置 switch_demo 项目,并用 tos.py 编译出可烧录的 bin —— 这正是下一页要烧进设备的固件。

入门8 分钟编译

完成后的状态

你的项目 .build/bin/ 目录下生成了固件 switch_demo_QIO_1.0.0.bin,可直接烧录。编译结束时会在终端打印完整路径。

  • tos.py build 首次运行时会把对应工具链下载到 platform/,因此首次编译较慢。
  • 输出 bin 命名规则为 <app>_<QIO>_<version>.bin,其中 QIO 是 flash 读取模式。
  • 必须在应用项目目录中执行 tos.py build

选择项目

TuyaOpen 从 apps/examples/ 目录编译应用。本页以 switch_demo(一个云连接的小开关)作为示例。

cd apps/tuya_cloud/switch_demo

配置项目

运行 tos.py config choice 列出本项目已验证的开发板配置,选择与你的硬件匹配的一项。所选配置会写入项目路径下的 app_default.config

❯ tos.py config choice
[INFO]: Fullclean success.
--------------------
1. LN882H.config
2. EWT103-W15.config
3. Ubuntu.config
4. ESP32-C3.config
5. ESP32-S3.config
6. ESP32.config
7. T3.config
8. T5AI.config
9. T2.config
10. BK7231X.config
--------------------
Input "q" to exit.
Choice config file:

常见开发板 → 配置

选择与你的开发板匹配的配置:

Tuya T5AIT5AI.config
Tuya T3T3.config
Tuya T2T2.config
Beken BK7231XBK7231X.config
ESP32ESP32.config
ESP32-C3ESP32-C3.config
ESP32-S3ESP32-S3.config
LN882HLN882H.config
Ubuntu(Linux 主机)Ubuntu.config

config 操作可能切换工具链,因此会先执行一次深度清理。若项目自带 config/ 目录,其中的配置优先于 boards/ —— 运行 tos.py config -d choice 可强制只显示 boards/ 中的配置。

编译

在项目目录中运行 tos.py build。如需诊断失败,加 -v 查看详细输出。

❯ tos.py build
...
[INFO]: ******************************
[INFO]: /xxx/TuyaOpen/apps/tuya_cloud/switch_demo/.build/bin/switch_demo_QIO_1.0.0.bin
[INFO]: ******************************
[INFO]: ******* Build Success ********
[INFO]: ******************************
  • 编译过程:下载工具链 → 执行其 prepare → 创建 .build → 运行 ninja → 产物放入 .build/bin
  • 编译以 Build Success 结束并打印 bin 路径 —— 这就是要烧录的文件。
  • Windows 下若每个文件编译耗时约 3 秒,参见下方故障排查。

清理编译

运行 tos.py clean 清理编译缓存;加 -f 进行深度清理,会在 ninja clean 后删除 .build 目录。

❯ tos.py clean -f
[INFO]: Running tos.py ...
[INFO]: Fullclean success.

故障排查

Windows 下编译很慢

用 Ctrl+Shift+Esc 打开任务管理器,找到并关闭 MSPCManagerService 进程。若无效,将整个 TuyaOpen 目录移到非系统盘(如 D 盘),并在 Windows 安全中心 → 病毒和威胁防护中将其加入排除列表。

config choice 没有列出我的开发板

列表优先取自项目 config/ 目录,再取 TuyaOpen/boards/。运行 tos.py config -d choice 可强制只显示 boards/ 中的配置。若仍未列出,该板可能尚无此应用的已验证配置。

用 tos.py config menu 改配置后编译失败

改配置可能导致编译失败。重新运行 tos.py config choice 选择已验证配置,或 tos.py clean -f 后重新编译,也可联系技术支持。

出现 could not lock config file 警告

这是残留的 ~/.gitconfig.lock 导致。手动删除:rm ~/.gitconfig.lock,然后重试。

下一步:烧录与监听 →完整编译文档 →