概述

FAQ1 Solution适合哪些产品? 有哪些demo的方案?

Solution2.0 是思澈科技(SiFli)推出的第二代全场景智能交互解决方案。目前,客户使用Solution2.0已经应用在在智能手表、码表、门锁、遥控器、血压健康手表、带屏耳机、地图导航、吧唧等项目上。客户可以根据已提供的以下产品类型的工程来实现各种产品:

  • watch

    • 手表方案 demo,支持各种菜单(蜂窝、列表、宫格等),支持表盘和平铺框架,支持表盘和应用推送

  • gridview

    • 宫格菜单方案 demo,不含表盘和平铺框架,支持应用推送

  • container

    • 单应用架构 demo,烧写后无默认应用(开机黑屏但日志正常),支持应用推送

同时,Solution还提供了墨水屏、蓝牙地图投屏、悬浮歌词音箱等各种特色的产品级Demo应用。

一般来讲,客户如果开发带屏、蓝牙的产品,且对推屏性能、低功耗和蓝牙性能有要求,比较适合于选择思澈的芯片以及Solution的方案。Solution2.0为客户提供提供从底层驱动到上层应用的全栈的开发支持,提供各种控件及组件,助力客户快速实现产品落地与功能迭代。


FAQ2 Solution支持哪些板子?

Solution2.0 可全面支持思澈全系列芯片对应的所有开发板与量产板卡。其软件框架深度统一适配思澈全系列芯片平台,一套代码无缝兼容全系产品,无需为不同芯片型号(含后续新发布芯片)重复开发适配,大幅降低多型号项目的开发与维护成本。


FAQ3 基于Solution开发存在哪些限制? 与SDK有何不同?

Solution2.0 的基础架构为 RTT + LVGL 组合架构,核心适配带屏且对交互性能、视觉体验有要求的应用场景,因此比较产品带屏且使用蓝牙的产品。

限制:不适用于无屏纯数据采集、极简主控类无 UI 交互的项目场景;此种产品项目建议采用思澈的开源SDK进行开发。

Solution和SDK都深度适配思澈全系列芯片平台,Solution2.0 本身也是基于思澈原生 SDK 开发封装而来,底层完全兼容 SDK 的所有硬件能力,而且底层会随着SDK的演进而升级。

SiFli SDK 与 Solution2.0 核心差异对比表

对比维度

SiFli SDK

Solution2.0

适配场景

全场景覆盖,含无屏/有屏、极简/复杂功能等场景

聚焦带屏+高交互/视觉要求场景
(如智能穿戴、带屏产品)

优点

1. 底层可控性强,核心驱动与硬件接口完整;
2. 例程独立,定制灵活度极高;
3. 无冗余,适配资源受限场景

1. 整合全套上层组件,提供完整方案;
2. 低代码开发,降低技术门槛;
3. 软硬件协同,交互流畅、视觉体验优

缺点

1. 需自主整合例程、搭建上层

1. 对无屏/极简无UI场景显得笨重;
2. 主框架基本固定,灵活性低于SDK


FAQ4 不同芯片以及外存配置,Solution有哪些建议?

参见方案选型


FAQ5 Solution 提供哪些编译方式?

Solution2.4以及之前的版本只支持keil的编译(注意版本号:建议是5.3.2); Solution2.4.1及后续的版本既支持keil也支持gcc编译。 详细信息参见Solution版本发布说明


FAQ6 Solution 怎么实现表盘市场和应用市场?

Solution提供外置表盘和外置应用的能力,所有的产品工程都自带该功能,且提供手机端推送的SDK以及APP Demo。通过该功能可以帮助客户实现客户自己的表盘市场和应用市场。 实现外置表盘和外置应用,可以通过:

  1. 采用C外置表盘来实现,此种方式根据Solution提供的框架进行C编程,然后编译生成打包文件,通过手机端推送的SDK来推送。

  2. 采用GUI Builder工具来实现,此种方式通过GUI Builder工具进行UI布局以及逻辑实现,生成打包文件,通过手机端推送的SDK来推送。

两种方式都提供了PC Simulator的仿真机制。


FAQ7 Solution 采用的是什么 RTOS 以及 GUI? 是否可以升级?

  • Solution采用RT-Thread 3.13 + LVGL 8.3, 其中RT-Thread有部分组件进行了升级;

  • Solution在 LVGL 8.3 的基础上进行了深度的适配和优化,帧率性能达到了较佳的水平;

  • Solution2.x的版本不会再进行升级;计划在Solution3.x的版本才会进行升级。


FAQ8 Solution提供哪些UI开发方式? 是否可以进行PC仿真?

Solution的应用提供了内置和外置两种方式。应用可以使用C、QJS、GUI Builder工具进行开发:

  1. C 应用开发

    • 内置C应用,示例参考solution\examples\xxx\application

    • 外置C应用,示例参考solution\examples\_dynamic_app\c\app

    • 内置C表盘,示例参考solution\examples\watch\application\watchface

    • 外置C表盘,示例参考solution\examples\_dynamic_app\c\wf

      • PC仿真使用butterfli进行编译,运行Visual Studio行调试

      • 板级使用butterfli进行编译,烧写验证功能

      • 通过SiFli_Demo_APP进行推送butterfli生成包(如黄山派在project\sf32lb52-ulp\bin_bak\sf32lb52-ulp\zip_output下面)的.zip文件(wf,app, aod)到板级进行验证

    AOD、弹窗平铺类似。

  2. QJS表盘/应用开发

    • 示例参考参考solution\examples\_dynamic_app\qjs

    • PC仿真使用butterfli进行编译,运行Visual Studio行调试 在对应的Simulator的工程进行调试

    • 板级使用butterfli进行编译,烧写验证功能

    • 通过SiFli_Demo_APP进行推送butterfli生成包(如黄山派在project\sf32lb52-ulp\bin_bak\sf32lb52-ulp\zip_output下面)的.zip文件(qjs_wf,qjs_app)到板级进行验证

  3. 使用思澈GUI Builder工具进行表盘/应用开发(注:工具位于solution\tools\GUI_Builder

    • 准备表盘/应用素材(图片、字体)

    • 确定访问的数据接口

    • 创建对应板级、分辨率、色深的工程

    • 开始使用素材进行布局,设置素材的效果,以及绑定数据接口

    • 在GUI Builder中启动PC仿真,验证UI效果

    • 通过GUI Builder提供的串口推送功能,把应用生成BIN推送到板子,进行板级验证(注意此时板子必须烧写对应主框架固件)

    • 通过SiFli_Demo_APP推送GUI Builder生成的发布包

  4. 利用第三方工具Squareline以及NXP GUI builder进行表盘/应用开发,并集成相应的生成代码到Solution中


FAQ9 Solution 是否支持表盘编辑?

  • 思澈[GUI Builder]提供了表盘预置多种风格模板的功能,推送到板子后,可以选择表盘使用的风格;

  • 手机侧直接编辑表盘的功能,计划在后续版本提供。具体支持的版本,可参见Solution版本发布说明


FAQ10 Solution 提供的GUI Builder工具可以实现哪些功能?有哪些限制?

  • 思澈[GUI Builder]可以实现0代码开发表盘以及应用,支持多页面、长页、事件相应、数据对接以及组件调用等功能。

  • 限制: 目前GUI Builder不适合于逻辑处理比较复杂的应用。

  • 计划在后续的版本会推出GUI Builder处理UI布局以及简单逻辑,复杂的逻辑工具会生成C代码框架供客户二次用C进行开发的方式。


FAQ11 Solution 提供的外置应用和表盘是否可以独立发布开发环境?

  • 使用(C、QJS)代码:考虑到客户进行外置应用和表盘的开发人员和主代码不是同一群人,在git上(代码仓库)的权限可能不一致,或者客户可能会把外置应用和表盘给他的客户进行开发,基于此Solution提供了生成[独立发布外置应用开发环境]

    • Butterfli -> 左侧工程路径 -> 动态表盘工程 -> 右键 -> 点击备份编译环境 -> Solution的根目录下会生成一个工程名_WFENV的目录。

    • 注意solution\framework\gui_fwk\dyn_fwk\export下的rtm接口(app_rtm_export.clvgl_rtm_export)以及主代码中定义的RTM_EXPORT接口必须后向兼容,否则会造成生成的外置应用/表盘由于接口不存在、不匹配造成异常

  • 使用思澈[GUI Builder]工具:该工具本来就是独立发布,因此直接使用该工具生成外置表盘和应用就可以了。


FAQ12 Solution 是否提供了OTA机制?客户如何适配?

Solution提供完善的OTA机制,包括固件端和手机侧,具体参见OTA升级


FAQ13 怎么减少代码空间? 有哪些方法?

  1. 设置finsh命令为slim模式,只保留必要的finsh

    • 设置后,仅使用MSH_CMD_EXPORT_REL的finsh命令才会被支持。

  2. 设置assert打印信息为最小空间模式,只保留断言地址

    • 定义ASSERT_OPTIMIZE_1后,死机的log仅打印了死机是PC的地址(假定是0x60010800),没有打印死机的具体信息

    • 需要通过trace32中装入axf或elf的文件,使用命令d.l 60010800看看PC停在哪个位置来确定死机时的位置

  3. 减少打印,删除不必要的打印

  4. 通过map文件(如hcpu.map或lcpu.map)确认没有装入不必要的功能,如有则查找原因,disable。