2 简介

SDK Overview

Figure 2.1: SDK Overview

INGCHIPS 软件开发工具包包含以下主要组件(图 2.1):

  1. 核心工具

    提供项目向导,Flash 下载器及其它功能。这些工具可使 BLE 开发更简单、流畅。

  2. 语言和 IDE 集成

    支持 Keil μVision1IAR Embedded Workbench2Rowley Crossworks for ARM3SEGGER Embedded Studio for ARM4 。 支持 GNU Arm Embedded Toolchain5 。 核心工具可以自动配置所有这些 IDE、工具链。

    支持 Nim6 作为 C 的替代。

    对于新工程,可将 Visual Studio Code7 配置为代码编辑器。 对于 Nim and GNU Arm Embedded Toolchain, 编译、下载等任务可以在 Visual Studio Code 里启动。

  3. 平台软件包

    为不同应用场景提供不同的软件包(比如 typicalextension)。 每个软件包包含完整的协议栈和(可选的) FreeRTOS 可执行二进制文件及对应的 C 头文件。 提供访问芯片外设所需的源代码。

  4. 示例

    提供丰富的 BLE 设备示例代码,及对应的 Android、iOS 参考代码。

  5. 文档

    提供用户手册(本文档),API 参考,应用指南等。

2.1 范围

本手册介绍平台软件包架构,核心工具,和平台 API。

2.2 架构

平台软件包分为两种类型,一种内置 FreeRTOS(称为 RTOS 软件包), 一种不内置 RTOS (称为 “NoOS” 软件包)。

2.2.1 RTOS 软件包

ING918xx/ING916xx 软件架构如图 2.2 所示。 Bootloader 存储于 ROM,不可修改,而平台和应用存储于 Flash。 BLE 协议栈、FreeRTOS 及部分 SoC 功能编译为平台可执行程序。当系统启动时,平台可执行程序首先完成初始化,然后加载主应用。

Architecture

Figure 2.2: Architecture

辅应用以编程方式告知平台运行。可以下载多个辅应用,编程切换。 芯片复位后,平台又会正常加载主应用。主应用的入口地址由 SDK 工具自动管理,辅应用的入口地址由开发者指定。

2.2.1.1 使用 C 语言开发 App

App 的主函数名为 app_main,app 在这个函数里进行初始化:

int app_main(void)
{
    ...
    return 0;
}

app_main 应该总是返回 0

平台,BLE 协议栈和 FreeRTOS 的 API 在相应的 C 头文件里声明,包含头文件就可以使用。

2.2.1.2 使用 Nim 语言开发 App

App 的主函数名为 appMain,app 在这个函数里进行初始化:

proc appMain*(): int {.exportc noconv.} =
  ...
  return 0;

appMain 应该总是返回 0

得益于平台和 app 的划分,app 的体积大大减小。这带来很多好处,不限于:

  • 更小、更简洁的 app 代码

  • 更快的下载和 FOTA

  • 专注于功能开发

SDK 为各 IDE 提供了对应的 Flash 烧写算法。App 调试也很方便:使用 Flash 下载工具(4.2)下载平台二进制文件,然后在 IDE 里正常下载、调试 app。

2.2.2 “NoOS” 软件包

当需要使用另外的 RTOS,或者需要使用那些 RTOS 软件包中未提供的功能时,开发者可以选用“NoOS”软件包。

“NoOS”软件包定义了一个通用 RTOS 接口,开发者需要实现这个接口,并通过 app_main 的返回值告知平台。

uintptr_t app_main(void)
{
    ...
    return (uintptr_t)os_impl_get_driver();
}

2.3 缩略语和术语

Table 2.1: 缩略语
缩略语 解释
ATT Attribute Protocol (属性协议)
BLE Bluetooth Low Energy (低功耗蓝牙)
FOTA Firmware Over-The-Air (固件空中升级)
IRQ Interrupt Request (终端请求)
GAP Generic Access Profile (通用存取配置)
GATT Generic Attribute Profile (通用属性配置)
RAM Random Access Memory (随机存取存储器)
ROM Read Only Memory (只读存储器)
SDK Software Development Kit (软件开发工具包)
Table 2.2: 术语
Terminology Notes
Flash Memory 一种电子非易失性计算机存储介质
FreeRTOS 一种实行操作系统内核

2.4 参考资料

  1. Host API Reference

  2. Bluetooth SIG8

  3. FreeRTOS9

  4. Mastering the FreeRTOS™ Real Time Kernel10