HiSpark编程指南

- 调测资料
  - SDK Sample使用指南
    - 前言
    - 概述
    - Sample框架
    - 外设 Sample
    - SLE UART Sample
    - SLE UART DMA Sample
    - SLE Mouse Sample
    - SLE amic vdt with dongle
    - SLE microphone
    - SLE measure dis
    - BLE Lowpower Sample
    - BLE UART Sample
    - BLE Keyboard Sample
    - BLE SLE TAG Sample
    - BLE Mouse Sample
    - USB Keyboard Sample
    - USB Mouse Sample
    - USB AMIC VDT Sample
    - RCU
    - 多连接
    - air mouse
    - SLE MOUSE with Dongle
    - SLE OTA dongle
    - game mouse
    - BLE UUID
    - 缩略语
  - SDK二次开发网络安全注意事项
    - 前言
    - 产品安全解决方案
    - 结论
  - SDK开发环境搭建用户指南
    - 前言
    - 开发环境搭建
    - 编译SDK
    - 新建APP
  - 内存维测指导书
    - 前言
    - 简介
    - 内存维测功能
  - 射频AT测试指南
    - 前言
    - 射频测试AT指令
    - AT指令组包示例
    - 注意事项
  - 维测指导书
    - 前言
    - 概述
    - 日志说明
    - 日志分析
    - 问题定位
    - 典型案例
    - 常见问题FAQ
- 软件资料
  - AT命令使用指南
    - 前言
    - 指令说明
    - 通用AT指令
    - BT业务AT指令
    - 新增AT指令方法
  - DFU升级APK开发指南
    - 前言
    - 功能特性
    - 系统框架
    - 工程文件部署
    - 界面实现
    - 升级界面Fragment实现
    - 关于界面Fragment实现
    - 应用清单AndroidManifest
  - DFX软件开发指南
    - 前言
    - DIAG维测功能
    - 死机诊断
    - Dump解析
  - EFUSE使用指南
    - 前言
    - 概述
    - 使用软件接口读写EFUSE
    - 使用BurnTool烧写EFUSE
  - NFC TAG软件开发指导书
    - 前言
    - 概述
    - 开发指导
  - NV存储用户指南
    - 前言
    - NV简介
    - NV编译预置
    - NV API指南
    - 定制化NV结构使用介绍
    - 通过NV自定义传输数据最大长度
  - Release notes
    - 1.0.18版本描述文件
    - 1.0.17版本描述文件
    - 1.0.16版本描述文件
  - SDK开发指南
    - 前言
    - 概述
    - 系统接口
  - SDK接口变更说明书
    - 前言
    - BLE SDK接口变更说明
  - SP31 SLP使用指南
    - 开源版本
  - USB HID复合设备开发指南
    - 前言
    - 概述
    - 实现方式
  - 代码框架说明
    - 前言
    - SDK模块框架
    - SDK目录结构
    - SDK目录说明
  - 低功耗FAQ
    - 前言
    - 系统无法睡眠
    - IO无法唤醒系统
    - 唤醒后外设异常
    - 低功耗导致OTA升级异常
    - 功耗比预期高
    - 锁中断导致BT业务阻塞
    - 概率性狗超时
    - 供电模式&软件配置
    - 提前唤醒时间问题
  - 低功耗sample使用指南
    - 前言
    - 编译&测试
    - 系统状态管理
    - 用户指南
  - 低功耗开发指南
    - 前言
    - 低功耗概述
    - 低功耗方案
    - 开发指引
    - 功耗优化
    - 常见问题
  - 功率配置说明书
    - 前言
    - 射频功率配置说明
  - 升级方案使用指南
    - 前言
    - 概述
    - 升级包制作
    - 升级包传输
    - 升级包保存
    - 升级包本地升级
    - FAQ
  - 快速入门指南
    - 前言
    - 文档目录
    - 环境搭建
    - 基础功能开发
    - 调优
    - 特性开发
    - 测试报告
  - 星闪应用层SLE-Link协议
    - 前言
    - 概述
    - SLE Frame格式定义
    - 服务接口定义
    - 交互流程示例
  - 星闪软件开发指导书
    - 前言
    - 概述
    - Device Discovery接口
    - Connection Manager接口
    - SSAP Server接口
    - SSAP client接口
    - Low Latency接口
    - Transmission Manager接口
    - SLE Passkey接口
    - SLE Channel Map 接口
  - 红外学习使用指南
    - 前言
    - 红外学习方式
    - 通过比较器进行红外学习
    - 使用指南
  - 蓝牙软件开发指导书
    - 前言
    - 概述
    - GAP接口
    - GATT server接口
    - GATT client接口
  - 设备驱动开发指南
    - 前言
    - Pinctrl
    - GPIO
    - UART
    - SPI
    - I2C
    - ADC
    - DMA
    - PWM
    - WDT
    - Timer
    - Systick
    - TCXO
    - Flash
    - SFC
    - QDEC
    - KEYSCAN
    - PDM
    - USB_HID
    - USB_DFU
    - I2S
    - TRNG
    - 附：MIDDLEWARE
  - 音频编解码开发指导书
    - 前言
    - 概述
    - Audio Encoder
    - Audio Decoder
    - 调试与功能
- 工具资料
  - BurnTool工具使用指导书
    - 前言
    - BurnTool工具简介
    - 操作指南
    - FAQ
  - HiSpark Studio使用指南
    - 前言
    - 工具简介
    - 开发环境搭建
    - 工程管理
    - 工程配置
    - 编译运行
    - 软件包烧录
    - 栈分析和镜像分析
    - 工程调试
    - 串口控制台工具
    - Kconfig配置
    - GUI工程创建与使用
    - 高阶分析功能使用
    - 常见错误

### 该页内容

- 前言
- SDK模块框架
- SDK目录结构
- SDK目录说明

# 前言

概述

介绍了BS2X SDK的模块框架及说明，帮助开发者快速上手BS2X的SDK开发。

读者对象

本文档主要适用于以下工程师：

- 技术支持工程师

- 软件开发工程师

符号约定

在本文中可能出现下列标志，它们所代表的含义如下。

符号 | 说明
--- | ---
| 表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。
| 表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。
| 表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。
| 用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “须知”不涉及人身伤害。
| 对正文中重点信息的补充说明。 “说明”不是安全警示信息，不涉及人身、设备及环境伤害信息。

修改记录

文档版本 | 发布日期 | 修改说明
--- | --- | ---
02 | 2024-07-04 | 更新“SDK目录结构”章节内容。
01 | 2024-05-15 | 第一次正式版本发布。
00B01 | 2024-02-01 | 第一次临时版本发布。

# SDK模块框架

图 1 BS2X解决方案整体架构

表 1 SDK根目录

序号 | 模块名 | 功能介绍
--- | --- | ---
1 | application | 应用目录，支持用户在此目录下增量开发上层系统内容以及应用内容。全系统启动的代码也在此目录下。系统启动入口为main.c中的main函数
2 | build | 编译构建工程代码，包括特性宏添加、打开/关闭等操作均在此目录中完成
3 | drivers | 外设驱动源代码
4 | include | 公共头文件，SDK所有的对外接口都会放到文件夹下供客户调用
5 | interim_binary | 软件库，二进制文件存放目录，bt核的bin文件存放于此目录下
6 | kernel | 操作系统以及操作系统功能封装代码，包括liteOS、non_os(支持无操作系统场景)、osal适配其它操作系统的接口
7 | middleware | 中间件代码，提供系统框架代码、dfx调试相关代码、nv项、ota等功能代码
8 | open_source | 开源第三方组件代码
9 | output | 编译生成的文件，编译过程中生成，初始SDK包没有此文件夹
10 | protocol | BLE/SLE协议栈库文件
11 | test | 测试代码，提供客户应用开发参考，通过命令调用启动test代码用例的执行
12 | tools | 工具目录，IDE工具编译完成后，会将镜像文件打包，打包文件存放于此目录下
13 | build.py | 编译脚本

# SDK目录结构

    .                                # [仓] root_dir仓
    ├── application               # 应用层，以下为举例
    │   ├── bs20                 # [仓] bs20应用
    │   ├── bs21                 # [仓] bs21应用
    │   ├── bs21a                # [仓] bs21a应用
    │   ├── bs22                 # [仓] bs22应用
    │   ├── bs26                 # [仓] bs26应用
    │   └── sample               # [仓] 样例工程
    ├── bootloader                # 启动代码
    │   ├── flashboot            # [仓] ssb/reeboot，如有teeboot新增目录
    │   └── provision            # [仓] 与hiburn&bootrom配合生产、烧写用，类似codeloader；从客户端加载、运行在ram中
    ├── build
    ├── docs
    ├── drivers
    │   ├── boards               # 板级配置
    │   ├── chips                # 芯片级配置，用户可以根据实际情况，做差异性修改
    │   └── drivers              # 驱动代码
    │       ├── driver           # 驱动对外接口层
    │       ├── hal              # HAL层，寄存器操作
    ├── include                   # [仓] 公共头文件
    ├── kernel                    # 内核代码，包括nonos、osal；cmsis包含在内核代码中
    │   ├── liteos               # [仓] liteos
    │   │  └── liteos_208.6.0   # [仓] liteos 208
    │   └── osal                 # [仓] osal目录
    │       ├── include          # [仓] osal头文件
    │       └── src              # osal源文件
    ├── middleware                # 框架、服务等中间件
    │   ├── chips                # 中间层芯片定制代码
    │   ├── services             # HLD组件
    │   └── utils                # LLD组件
    ├── open_source               # 物联协议都是开源软件，放在open_source目录，映射中心仓
    ├── protocol                  # 联接协议目录，CFBB无实体仓
    │   ├── bt
    ├── tools                     # 工具代码仓，由工具团队维护
    └── vendor                    # 第三方供应商提供的软件
    └── segger                    # [仓] segger代码仓

# SDK目录说明

表 1 afe实例

序号 | 模块名 | 文件名 | 功能介绍
--- | --- | --- | ---
1 | Kconfig | Kconfig | afe_sample相关配置
2 | afe_demo.c | afe_demo.c | afe相关实例代码，提供afe采集功能
3 | afe.code-workspace | afe.code-workspace | vscode工程配置，用户不需要修改
4 | 编译脚本 | CMakeLists.txt | afe相关编译脚本