20M的bin无法生成,不会存在。
TuyaOpen开发OTA问题求解决方案
Re: TuyaOpen开发OTA问题求解决方案
我还有一个思路,你看看可行吗?
就是我外扩256M Flash,然后我将这个区域划分成A/B区,A区运行我的程序,B区用作存储升级文件,附属固件对应写入B区。然后T5的片内Flash存放的是我自定义的boot代码。每次都从片内的boot跳转到外扩的A区运行。然后以后升级我就只上传附属通道就行,这样是否可行?
Re: TuyaOpen开发OTA问题求解决方案
如果我采用片外FLASH放UI相关资源,那我首次下载应该如何烧录进去呢?
Re: TuyaOpen开发OTA问题求解决方案
TuyaOpen有相关的实现Demo吗?将片外Flash挂载成文件系统的,或者片内Flash划分区域挂载成文件系统?
Re: TuyaOpen开发OTA问题求解决方案
tiga 2026年 Apr 30日 16:30我还有一个思路,你看看可行吗?
就是我外扩256M Flash,然后我将这个区域划分成A/B区,A区运行我的程序,B区用作存储升级文件,附属固件对应写入B区。然后T5的片内Flash存放的是我自定义的boot代码。每次都从片内的boot跳转到外扩的A区运行。然后以后升级我就只上传附属通道就行,这样是否可行?
不行
Re: TuyaOpen开发OTA问题求解决方案
问一个问题,我试过TuyaOS框架,试过TuyaOpen,我发现TuyaOS,开发有个很费时间的问题就是编译,每次都是全编译,哪怕改动一个字母,重新编译都要1分多钟,所以我不愿意在TuyaOS开发....而TuyaOpen只有首次编译比较久点,其他改动时候编译都很快。TuyaOS开发有什么方法能加快编译吗?
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 秒以内。