概述¶
FAQ1 Solution适合哪些产品? 有哪些demo的方案?¶
Solution 2.0 是思澈科技(SiFli)推出的第二代全场景智能交互解决方案。目前,客户使用 Solution 2.0 已经应用在智能手表、码表、门锁、遥控器、血压健康手表、带屏耳机、地图导航、吧唧等项目上。客户可以根据已提供的以下产品类型的工程来实现各种产品:
watch
手表方案 demo,支持各种菜单(蜂窝、列表、宫格等),支持表盘和平铺框架,支持表盘和应用推送
gridview
宫格菜单方案 demo,不含表盘和平铺框架,支持应用推送
container
单应用架构 demo,烧写后无默认应用(开机黑屏但日志正常),支持应用推送
同时,Solution 还提供了墨水屏、蓝牙地图投屏、悬浮歌词音箱等各种特色的产品级 Demo 应用。
一般来讲,客户如果开发带屏、蓝牙的产品,且对推屏性能、低功耗和蓝牙性能有要求,比较适合于选择思澈的芯片以及 Solution 方案。Solution 2.0 为客户提供从底层驱动到上层应用的全面开发支持,提供各种控件及组件,助力客户快速实现产品落地与功能迭代。
FAQ2 Solution支持哪些板子?¶
Solution 2.0 可全面支持思澈所有系列芯片对应的开发板与量产板卡。其软件框架深度统一适配思澈全系列芯片平台,一套代码无缝兼容全系产品,无需为不同芯片型号(含后续新发布芯片)重复开发适配,大幅降低多型号项目的开发与维护成本。
FAQ3 基于Solution开发存在哪些限制? 与SDK有何不同?¶
Solution 2.0 的基础架构为 RTT + LVGL 组合架构,核心适配带屏且对交互性能、视觉体验有要求的应用场景,聚焦带屏且使用蓝牙的产品。
限制:不适用于无屏纯数据采集、极简主控类无 UI 交互的项目场景;此类产品项目建议采用思澈的开源SDK进行开发。
Solution 2.0 和 SDK 都深度适配思澈全系列芯片平台,Solution 2.0 本身也是基于思澈原生 SDK 开发封装而来,底层完全兼容 SDK 的所有硬件能力,而且底层会随着 SDK 的演进而升级。
SiFli SDK 与 Solution 2.0 核心差异对比表
对比维度 |
SiFli SDK |
Solution2.0 |
|---|---|---|
适配场景 |
全场景覆盖,含无屏/有屏、极简/复杂功能等场景 |
聚焦带屏+高交互/视觉要求场景 |
优点 |
1. 底层可控性强,核心驱动与硬件接口完整; |
1. 整合全套上层组件,提供完整方案; |
缺点 |
1. 需自主整合例程、搭建上层 |
1. 对无屏/极简无UI场景显得笨重; |
FAQ4 不同芯片以及外存配置,Solution有哪些建议?¶
参见方案选型。
FAQ5 Solution 提供哪些编译方式?¶
Solution 2.4 以及之前的版本只支持 Keil 编译(注意版本号:建议是 5.32);Solution 2.4.1 及后续版本既支持 Keil 编译也支持 GCC 编译。 详细信息参见Solution版本发布说明。
FAQ6 Solution 怎么实现表盘市场和应用市场?¶
Solution 提供外置表盘和外置应用的能力,所有产品工程都自带该功能,且提供手机端推送的 SDK 以及 APP Demo。通过该功能可以帮助客户实现客户自己的表盘市场和应用市场。
实现外置表盘和外置应用,可以通过:
采用C 外置表盘来实现,此种方式根据 Solution 提供的框架进行 C 编程,然后编译生成打包文件,通过手机端推送的 SDK来推送。
采用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 的基础上进行了深度的适配和优化,帧率性能达到了很好的水平;
Solution 2.x 版本不会再升级 RT-Thread 以及 LVGL,计划在 Solution 3.x 版本中才会进行升级。
FAQ8 Solution提供哪些UI开发方式? 是否可以进行PC仿真?¶
Solution 的应用提供了内置和外置两种方式。应用可以使用 C、QJS、GUI Builder 工具进行开发:
-
内置C应用,示例参考
solution\examples\xxx\application外置C应用,示例参考
solution\examples\_dynamic_app\c\app内置C表盘,示例参考
solution\examples\watch\application\watchface外置C表盘,示例参考
solution\examples\_dynamic_app\c\wfPC 仿真使用 Butterfli 进行编译,运行 Visual Studio 进行调试
板级使用 Butterfli 进行编译,烧写验证功能
通过 SiFli_Demo_APP 推送 Butterfli 生成包(如黄山派在
project\sf32lb52-ulp\bin_bak\sf32lb52-ulp\zip_output下面)的 .zip 文件(wf,app,aod)到板级进行验证
QJS表盘/应用开发
示例参考
solution\examples\_dynamic_app\qjsPC 仿真使用 Butterfli 进行编译,运行 Visual Studio 在对应的 Simulator 工程上进行调试
板级使用 Butterfli 进行编译,烧写验证功能
通过 SiFli_Demo_APP 推送 Butterfli 生成包(如黄山派在
project\sf32lb52-ulp\bin_bak\sf32lb52-ulp\zip_output下面)的 .zip 文件(qjs_wf,qjs_app)到板级进行验证
使用思澈GUI Builder工具进行表盘/应用开发(注:工具位于
solution\tools\GUI_Builder)准备表盘/应用素材(图片、字体)
确定访问的数据接口
创建对应板级、分辨率、色深的工程
开始使用素材进行布局,设置素材的效果,以及绑定数据接口
在 GUI Builder 中启动 PC 仿真,验证 UI 效果
通过 GUI Builder 提供的串口推送功能,把应用生成 BIN 推送到板子,进行板级验证(注意此时板子必须烧写对应主框架固件)
通过 SiFli_Demo_APP 推送 GUI Builder 生成的发布包
利用第三方工具 SquareLine Studio 以及 NXP GUI Guider 进行表盘/应用开发,并集成相应的生成代码到 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.c、lvgl_rtm_export)以及主代码中定义的RTM_EXPORT接口必须保持后向兼容,否则会造成生成的外置应用/表盘因接口不存在或不匹配而发生异常。
使用思澈 GUI Builder 工具:该工具本来就是独立发布,因此直接使用该工具生成外置表盘和应用即可。
FAQ12 Solution 是否提供了OTA机制?客户如何适配?¶
Solution 提供完善的 OTA 机制,包括固件端和手机侧,具体参见OTA 升级。
FAQ13 怎么减少代码空间? 有哪些方法?¶
设置finsh命令为slim模式,只保留必要的finsh
设置后,仅使用
MSH_CMD_EXPORT_REL的finsh命令才会被支持。
设置assert打印信息为最小空间模式,只保留断言地址

定义
ASSERT_OPTIMIZE_1后,死机的log仅打印了死机是PC的地址(假定是0x60010800),没有打印死机的具体信息需要通过trace32中装入axf或elf的文件,使用命令
d.l 60010800看看PC停在哪个位置来确定死机时的位置
减少打印,删除不必要的打印
通过map文件(如hcpu.map或lcpu.map)确认没有装入不必要的功能,如有则查找原因,disable。