思澈科技软件开发工具包  2.20
思澈科技软件开发工具包

思澈科技(SiFli)软件开发工具包(SDK)为客户提供思澈科技芯片丰富的驱动程序、中间件和 GUI 组件。它为用户应用程序提供实时操作系统(RTOS) 和 图形库(GUI)的访问,并开发了适用于手表应用程序的 GUI 组件。通过硬件加速,SiFli SDK 芯片提供快速的 GUI 体验。 它包含所有硬件驱动程序和演示的完整源代码,方便用户了解硬件功能。 SDK 中的全套手表演示应用程序展示了手表/手环开发的完整解决方案。

图1:软件结构

SIFLI 芯片组包括高性能内核 (HCPU) 和低功耗内核 (LCPU)。软件高性能区运行在 HCPU 中,而低功耗区运行在 LCPU 中。 用户可以在任一核上开发应用程序/服务,通过选择合适的策咯,可以在高速图形的访问的同时,保持超低的功耗
图中LVGL GUI 库、RT-Thread 和一些中间件组件的模块来自第三方。

SiFli SDK的特点

SiFli SDK 由C 语言编写的组件组成。项目使用Scons 环境构建,也可以生成使用Keil、Eclipse、GNU Makefile的项目用于编译调试,同时也支持生成MS VisualStudio 编译的项目,用于PC 模拟。 包括以下特点:

  • 硬件抽象层 (HAL) 功能用于访问芯片组硬件.
    这部分是独立于实时操作系统(RTOS)的,可以与不同的 RTOS 集成,也可以在没有 RTOS 的情况下使用。 HAL 也称为核心 SDK (Core SDK),用户可以使用Core SDK 适配到现有的 RTOS,也可以直接被应用程序调用。 SDK 有一个示例项目来演示芯片组中每个硬件 IP 的 HAL 使用。
  • RT-thread的适配
    SiFli 在 RT-Thread 驱动程序框架中开发了驱动程序适配器。 通过 RT-Thread 驱动程序框架,向用户提供了统一的、易于使用的驱动程序接口。
  • LVGL GUI 库.
    SiFli SDK 使用 LVGL 8.2(SDK 2.x)/7.11(SDK 1.x) 进行 GUI 应用程序和中间件开发。 SiFli 还优化了 GUI 功能,以便更快地访问图形接口。它还集成了 SiFli 芯片组的硬件加速 (EPIC), 进一步提高了图像混合、填充、缩放和旋转的速度,以实现更复杂流畅的 GUI 设计。
  • BT/BLE协议栈以及其他中间件, 包括:
    • HFP/A2DP host协议栈以及应用接口
    • PAN协议栈以及相应的TCP/IP协议栈集成
    • 快速生成的BLE 服务,可加快 BLE GATT 服务器的开发。
    • 具有硬件加速功能的 CMSIS DSP 和 CMSIS NN
    • 使用 Flash XIP 硬件加速进行加密/解密。
    • NOR 和 NAND 闪存上的文件系统支持。
    • 具有全面 USB 类支持的 USB 设备堆栈
       - 专用于手表应用程序的图像组件( 手表应用组件 )。
  • 安全启动
    它通过安全传输和加密固件更新提供固件更新。SDK带有脚本,负责固件的加密,签名以及传送。
  • 应用程序和服务,包括:
    • 安全启动和 FOTA 应用程序。
    • 传感器集线器、警报、健康、位置、唤醒和 BLE 服务。
    • 命令UART/Segger RTT 控制台、日志记录和文件访问。
  • 手表应用 PC 中的模拟开发环境。

除以上软件,SiFli SDK 还提供

  • 完整的 BT/BLE 5.2 GATT 配置文件、堆栈和 LM/BB 实现,
  • 示例 AI 应用程序模型和源代码以演示关键字识别功能。
  • 手表/手环的完整解决方案,应用程序已准备好推向市场。

硬件抽象层

硬件抽象层 (HAL)提供了一组通用的多实例简单 API(应用程序编程接口)以与上层(应用程序、中间件和协议栈)交互,允许中间件或者应用程序使用芯片的功能,而无需直接访问芯片的寄存器。 这种结构提高了库代码的可重用性,并保证可轻松移植到SiFli不同的芯片上。
HAL 被设计为独立于 RTOS。 它包括一套完整的即用型 API,可简化用户应用程序的实施。 例如,SDK 中包含的 hal_example 包含每个特定硬件 IP 的 HAL API 调用。 请参考example/hal_example中的readme.txt。

RT-Thread适配层

RT-Thread 包含了 posix 样式 I/O(输入/输出)各种设备驱动组件,可以用于仪器上的数据显示、工业设备上的串行通信、用于在数据采集设备上保存数据的闪存或 SD 卡,以及用于网络设备的以太网接口等等多个地方。 SiFli 为 RT-Thread 开发了设备驱动程序适配器。 它位于硬件抽象层 (HAL) 和应用程序之间,并通过驱动程序框架向应用程序提供 Posix 风格的驱动程序 API。 应用程序通过 RT-Thread 设备驱动组件提供的标准接口访问底层设备。 HAL 驱动的升级和更换不会影响上层应用。 这样,设备的硬件相关代码就可以独立于应用程序而存在,双方只需要关注各自的功能实现,从而降低了代码的耦合度和复杂度,提高了系统的可靠性。

RT-Thread 中的 SiFli SDK 支持驱动程序在 RT-Thread 驱动适配 列出.

中间件

中间件(Middleware)包含了 SiFli SDK 引入的许多第三方的包。 这些中间件是包含所有源代码,并且可以定制:

  • 传感器库支持传感器数据处理并为应用程序提供传感器功能,例如指南针、陀螺仪、加速度计、温度、计步器等。
  • 安全库,包括用于加密/解密和身份验证的函数。
  • 文件系统,例如 FAT、UFFS
  • 来自 ARM 的 CMSIS-DSP 和 CMSIS-NN
  • Cloud SDK 与不同的云物联网服务进行通信。

此外,SiFli 还开发了:

  • BLE 5.2
    包括 GAP 和 GATT 配置文件、用于更新固件的 FOTA BLE 配置文件、BLE 底层 LM/BB协议栈。 SDK 包括生成基于 GATT 的配置文件,例如蓝牙 SIG 定义的电池、血液、心率、健康温度计、葡萄糖等,或任何自定义配置文件。
  • 数据服务
    此 API 将在用户应用程序中的数据逻辑与显示逻辑隔离。 用户显示应用程序运行在HCPU中,可以使用此API获取数据,而无需了解 BLE 或传感器提供的数据服务的详细实现。真正的数据服务可以在低功耗核心LCPU中运行。SDK中间件将提供对用户透明的HCPU/LCPU之间的数据传输。通过数据服务,用户可以依靠数据服务框架来处理内核之 间的通信,享受低功耗的好处,而无需处理底层硬件访问。
  • 电源管理
    SiFli 开发了对 RT-Thread 低功耗机制的电源策略。 用户可以注册自己的低功耗策略以进入不同的低功耗模式。
  • 配置管理
    该组件将帮助用户在闪存上保存应用程序配置/状态。
  • 手表应用组件
    SiFli 基于 LVGL 图形库开发手表组件。它包括实现大多数流行手表组件的示例,帮助用户开发与当前市场上的流行手表类似的手表界面。
  • GUI应用程序框架
    该 API 将帮助用户开发可与 SiFli 应用程序管理器轻松集成的应用程序,SDK还包含了一个主界面应用来调用每个注册的应用。
  • Mailbox API
    该 API 提供了可以在 HCPU 和 LCPU 之间进行通信的函数。 这个 API 还实现了一个通用的控制台函数,帮助用户从 HCPU 控制台访问 LCPU。

安全引导加载

安全引导加载程序(Secure Boot loader)作为 SDK 源代码的一部分提供,用户可以使用源代码自定义自己的引导加载程序。
当芯片组启动时,引导加载程序将开始运行。 它将检查 flash 中是否存在用户应用程序固件,如果存在则加载该应用程序。 它还提供设备固件更新功能,可通过 UART 进行设备更新。 引导加载程序提供的主要功能包括:

  • 通过传输下载用户程序
  • 支持UART作为传输
  • 传输使用 AES-256 加密
  • 使用 RSA 1024 数字签名从已知来源验证的程序固件
  • 支持乒乓固件更新
  • 支持设备固件压缩,以节省下载时间。
  • 以加密格式保存在闪存中,硬件解码并即时运行。

应用程序示例

SiFli SDK 提供了几个应用程序来演示使用 SiFli 芯片组的 API,包括:

  • BLE 应用程序
    展示了思澈科技开发的几个典型BLE应用,包括ANCS, AMS,HID, Peripheral, 其中ANCS还展示了双核的通信,以及低功耗的使用
  • HAL 示例
    它提供了所有片上硬件 IP HAL 接口的示例。它可以与 utest 工具一起运行每天回归测试。
  • rt_driver示例
    这是基于rt-thread的rt-device层的工程,包含LCD,触控,BLE,senseor驱动,和其他已经实现的rt-device驱动。
  • 低功耗示例
    它提供了低功耗功能的展示,方便用户验证思澈芯片的低功耗性能。

  • 手表应用程序。
    它展示了大多数手表中的应用:
    • 时钟应用包括不同风格的时钟表盘。
    • 电话应用程序,它与手机连接以获得电话服务。
    • 天气应用,显示不同城市的天气。
    • 健康应用,例如心率。
    • 指南针应用
    • 运动应用,例如计步。
    • 通知应用,连接手机获取短信/微信。