TuyaOpen开发OTA问题求解决方案

Wi-Fi 设备、蜂窝设备、WuKongAI、开发板、TuyaOS 移植等


愚者千虑必有一得
Posts: 911

20M的bin无法生成,不会存在。


Tags:
tiga
Posts: 14

Re: TuyaOpen开发OTA问题求解决方案

yingtao_33 2026年 Apr 30日 13:48

你如果目前使用的是TuyaOpen,也可以直接适配移植 TuyaOpen,也可以实现你要的效果

我还有一个思路,你看看可行吗?
就是我外扩256M Flash,然后我将这个区域划分成A/B区,A区运行我的程序,B区用作存储升级文件,附属固件对应写入B区。然后T5的片内Flash存放的是我自定义的boot代码。每次都从片内的boot跳转到外扩的A区运行。然后以后升级我就只上传附属通道就行,这样是否可行?

tiga
Posts: 14

Re: TuyaOpen开发OTA问题求解决方案

愚者千虑必有一得 2026年 Apr 30日 16:29

20M的bin无法生成,不会存在。

如果我采用片外FLASH放UI相关资源,那我首次下载应该如何烧录进去呢?

tiga
Posts: 14

Re: TuyaOpen开发OTA问题求解决方案

愚者千虑必有一得 2026年 Apr 30日 16:29

20M的bin无法生成,不会存在。

TuyaOpen有相关的实现Demo吗?将片外Flash挂载成文件系统的,或者片内Flash划分区域挂载成文件系统?

愚者千虑必有一得
Posts: 911

Re: TuyaOpen开发OTA问题求解决方案

tiga 2026年 Apr 30日 16:43
愚者千虑必有一得 2026年 Apr 30日 16:29

20M的bin无法生成,不会存在。

如果我采用片外FLASH放UI相关资源,那我首次下载应该如何烧录进去呢?

3种方式:
1,烧好了贴
2,硬件上留烧录触点/引脚,随时烧
3,无线烧,我们支持tftp协议,一般开发的时候用

yangjie
Posts: 232

Re: TuyaOpen开发OTA问题求解决方案

tiga 2026年 Apr 30日 16:30
yingtao_33 2026年 Apr 30日 13:48

你如果目前使用的是TuyaOpen,也可以直接适配移植 TuyaOpen,也可以实现你要的效果

我还有一个思路,你看看可行吗?
就是我外扩256M Flash,然后我将这个区域划分成A/B区,A区运行我的程序,B区用作存储升级文件,附属固件对应写入B区。然后T5的片内Flash存放的是我自定义的boot代码。每次都从片内的boot跳转到外扩的A区运行。然后以后升级我就只上传附属通道就行,这样是否可行?

不行

yangjie
Posts: 232

Re: TuyaOpen开发OTA问题求解决方案

tiga 2026年 Apr 30日 16:45
愚者千虑必有一得 2026年 Apr 30日 16:29

20M的bin无法生成,不会存在。

TuyaOpen有相关的实现Demo吗?将片外Flash挂载成文件系统的,或者片内Flash划分区域挂载成文件系统?

https://github.com/tuya/TuyaOpen/blob/m ... _kv.c#L172 你可以跟下这个看看

tiga
Posts: 14

Re: TuyaOpen开发OTA问题求解决方案

yangjie 2026年 Apr 30日 16:59
tiga 2026年 Apr 30日 16:45
愚者千虑必有一得 2026年 Apr 30日 16:29

20M的bin无法生成,不会存在。

TuyaOpen有相关的实现Demo吗?将片外Flash挂载成文件系统的,或者片内Flash划分区域挂载成文件系统?

https://github.com/tuya/TuyaOpen/blob/m ... _kv.c#L172 你可以跟下这个看看

问一个问题,我试过TuyaOS框架,试过TuyaOpen,我发现TuyaOS,开发有个很费时间的问题就是编译,每次都是全编译,哪怕改动一个字母,重新编译都要1分多钟,所以我不愿意在TuyaOS开发....而TuyaOpen只有首次编译比较久点,其他改动时候编译都很快。TuyaOS开发有什么方法能加快编译吗?

愚者千虑必有一得
Posts: 911

Re: TuyaOpen开发OTA问题求解决方案

关于 TuyaOS 编译速度慢的问题,有几个实际可用的优化方法:

原因分析

TuyaOS 使用 xmake 构建系统(基于 GNU Make)。components/ 下有大量组件,依赖树复杂,make 本身的规划阶段需要重新检查所有文件时间戳,即使没有改动也需要时间。如果每次都加 clean 参数,则会删掉所有 .obj 中间文件,强制全量重编,所以才会每次都要 1 分钟以上。

加速方案

1. 去掉 clean 参数,直接增量编译(最重要)

日常开发时直接执行:

Code: Select all

make APP_NAME=tuyaos_demo_wukong_ai

不加 clean,Make 会自动检测哪些 .c 文件被修改,只重编改动的部分。改一个 .c 文件通常只需要几秒。

2. 多核并行编译

Code: Select all

make -j8 APP_NAME=tuyaos_demo_wukong_ai

-j 后面跟 CPU 核心数,一般设为物理核心数的 12 倍。

3. 使用 ccache 缓存编译结果

ccache 可以缓存 .c -> .o 的编译结果,即使 clean 后重编也能命中缓存大幅提速:

Code: Select all

sudo apt install ccache
make -j8 APP_NAME=tuyaos_demo_wukong_ai CC="ccache gcc" CXX="ccache g++"

命中缓存时速度可以提升 510 倍。

关于 TuyaOpen 编译快的原因

TuyaOpen 使用 CMake + Kconfig 体系,增量编译支持更好,依赖追踪更精确,首次后编译快是正常的。TuyaOS 的 xmake 体系历史较早,增量编译不如 CMake 高效,这是已知问题。

建议:日常开发优先使用方案1(去掉 clean)+ 方案2(-j8),基本可以将改动编译时间从 1 分钟压缩到 10 秒以内。

Post Reply