2 简介
Figure 2.1: SDK Overview
INGCHIPS 软件开发工具包包含以下主要组件(图 2.1):
核心工具
提供项目向导,Flash 下载器及其它功能。这些工具可使 BLE 开发更简单、流畅。
语言和 IDE 集成
支持
Keil μVision1 ,IAR Embedded Workbench2 ,Rowley Crossworks for ARM3 ,SEGGER Embedded Studio for ARM4 。 支持GNU Arm Embedded Toolchain5 。 核心工具可以自动配置所有这些 IDE、工具链。平台软件包
为不同应用场景提供不同的软件包(比如
typical,extension)。 每个软件包包含完整的协议栈和(可选的)FreeRTOS可执行二进制文件及对应的C头文件。 提供访问芯片外设所需的源代码。示例
提供丰富的 BLE 设备示例代码,及对应的 Android、iOS 参考代码。
文档
提供用户手册(本文档),API 参考,应用指南等。
2.2 架构
平台软件包分为两种类型,一种内置 FreeRTOS(称为 RTOS 软件包), 一种不内置 RTOS (称为 “NoOS” 软件包)。
2.2.1 RTOS 软件包
ING918xx/ING916xx 软件架构如图 2.2 所示。 Bootloader 存储于 ROM,不可修改,而平台和应用存储于 Flash。 BLE 协议栈、FreeRTOS 及部分 SoC 功能编译为平台可执行程序。当系统启动时,平台可执行程序首先完成初始化,然后加载主应用。
Figure 2.2: Architecture
辅应用以编程方式告知平台运行。可以下载多个辅应用,编程切换。 芯片复位后,平台又会正常加载主应用。主应用的入口地址由 SDK 工具自动管理,辅应用的入口地址由开发者指定。
2.2.1.1 使用 C 语言开发 App
App 的主函数名为 app_main,app 在这个函数里进行初始化:
int app_main(void)
{
...
return 0;
}通常情况下,app_main 返回 0。如果开发者想要使用自定义的 RTOS 来替代内置的 RTOS,
也可以通过 app_main 的返回值向平台传递一个通用 RTOS 接口的实现,
方式与使用 “NoOS” 软件包 相同。6
平台,BLE 协议栈和 FreeRTOS 的 API 在相应的 C 头文件里声明,包含头文件就可以使用。
2.3 缩略语和术语
| 缩略语 | 解释 |
|---|---|
| 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 (软件开发工具包) |
| Terminology | Notes |
|---|---|
| Flash Memory | 一种电子非易失性计算机存储介质 |
| FreeRTOS | 一种实行操作系统内核 |
https://www.segger.com/products/development-tools/embedded-studio/↩︎
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm↩︎
从 SDK v8.5.0 版本开始支持。对于更早的版本,
app_main必须始终返回0。↩︎SDK 示例:Smart Home Hub。↩︎
SDK 示例:Central FOTA。↩︎
https://www.freertos.org/Documentation/161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf↩︎